haskell-src-exts 1.1.4 → 1.2.0
raw patch · 29 files changed
+13271/−24744 lines, 29 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Language.Haskell.Exts.Annotated.Comments: Comment :: Bool -> SrcSpan -> String -> Comment
- Language.Haskell.Exts.Annotated.Comments: data Comment
- Language.Haskell.Exts.Annotated.Comments: instance Data Comment
- Language.Haskell.Exts.Annotated.Comments: instance Eq Comment
- Language.Haskell.Exts.Annotated.Comments: instance Show Comment
- Language.Haskell.Exts.Annotated.Comments: instance Typeable Comment
- Language.Haskell.Exts.Annotated.Parser: ParseFailed :: SrcLoc -> String -> ParseResult a
- Language.Haskell.Exts.Annotated.Parser: ParseMode :: String -> [Extension] -> Bool -> [Fixity] -> ParseMode
- Language.Haskell.Exts.Annotated.Parser: ParseOk :: a -> ParseResult a
- Language.Haskell.Exts.Annotated.Parser: class Parseable ast
- Language.Haskell.Exts.Annotated.Parser: data ParseMode
- Language.Haskell.Exts.Annotated.Parser: data ParseResult a
- Language.Haskell.Exts.Annotated.Parser: defaultParseMode :: ParseMode
- Language.Haskell.Exts.Annotated.Parser: extensions :: ParseMode -> [Extension]
- Language.Haskell.Exts.Annotated.Parser: fixities :: ParseMode -> [Fixity]
- Language.Haskell.Exts.Annotated.Parser: fromParseResult :: ParseResult a -> a
- Language.Haskell.Exts.Annotated.Parser: getTopPragmas :: String -> ParseResult [OptionPragma L]
- Language.Haskell.Exts.Annotated.Parser: ignoreLanguagePragmas :: ParseMode -> Bool
- Language.Haskell.Exts.Annotated.Parser: instance (SrcInfo loc) => Parseable (Decl loc)
- Language.Haskell.Exts.Annotated.Parser: instance (SrcInfo loc) => Parseable (Exp loc)
- Language.Haskell.Exts.Annotated.Parser: instance (SrcInfo loc) => Parseable (Module loc)
- Language.Haskell.Exts.Annotated.Parser: instance (SrcInfo loc) => Parseable (Pat loc)
- Language.Haskell.Exts.Annotated.Parser: instance (SrcInfo loc) => Parseable (Type loc)
- Language.Haskell.Exts.Annotated.Parser: parse :: (Parseable ast) => String -> ParseResult ast
- Language.Haskell.Exts.Annotated.Parser: parseDecl :: String -> ParseResult (Decl L)
- Language.Haskell.Exts.Annotated.Parser: parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl L, [Comment])
- Language.Haskell.Exts.Annotated.Parser: parseDeclWithMode :: ParseMode -> String -> ParseResult (Decl L)
- Language.Haskell.Exts.Annotated.Parser: parseExp :: String -> ParseResult (Exp L)
- Language.Haskell.Exts.Annotated.Parser: parseExpWithComments :: ParseMode -> String -> ParseResult (Exp L, [Comment])
- Language.Haskell.Exts.Annotated.Parser: parseExpWithMode :: ParseMode -> String -> ParseResult (Exp L)
- Language.Haskell.Exts.Annotated.Parser: parseFilename :: ParseMode -> String
- Language.Haskell.Exts.Annotated.Parser: parseModule :: String -> ParseResult (Module L)
- Language.Haskell.Exts.Annotated.Parser: parseModuleWithComments :: ParseMode -> String -> ParseResult (Module L, [Comment])
- Language.Haskell.Exts.Annotated.Parser: parseModuleWithMode :: ParseMode -> String -> ParseResult (Module L)
- Language.Haskell.Exts.Annotated.Parser: parsePat :: String -> ParseResult (Pat L)
- Language.Haskell.Exts.Annotated.Parser: parsePatWithComments :: ParseMode -> String -> ParseResult (Pat L, [Comment])
- Language.Haskell.Exts.Annotated.Parser: parsePatWithMode :: ParseMode -> String -> ParseResult (Pat L)
- Language.Haskell.Exts.Annotated.Parser: parseType :: String -> ParseResult (Type L)
- Language.Haskell.Exts.Annotated.Parser: parseTypeWithComments :: ParseMode -> String -> ParseResult (Type L, [Comment])
- Language.Haskell.Exts.Annotated.Parser: parseTypeWithMode :: ParseMode -> String -> ParseResult (Type L)
- Language.Haskell.Exts.Annotated.Parser: parseWithComments :: (Parseable ast) => ParseMode -> String -> ParseResult (ast, [Comment])
- Language.Haskell.Exts.Annotated.Parser: parseWithMode :: (Parseable ast) => ParseMode -> String -> ParseResult ast
- Language.Haskell.Exts.Annotated.Pretty: LeftMode :: Mode
- Language.Haskell.Exts.Annotated.Pretty: OneLineMode :: Mode
- Language.Haskell.Exts.Annotated.Pretty: PPHsMode :: Indent -> Indent -> Indent -> Indent -> Indent -> Indent -> Bool -> PPLayout -> Bool -> PPHsMode
- Language.Haskell.Exts.Annotated.Pretty: PPInLine :: PPLayout
- Language.Haskell.Exts.Annotated.Pretty: PPNoLayout :: PPLayout
- Language.Haskell.Exts.Annotated.Pretty: PPOffsideRule :: PPLayout
- Language.Haskell.Exts.Annotated.Pretty: PPSemiColon :: PPLayout
- Language.Haskell.Exts.Annotated.Pretty: PageMode :: Mode
- Language.Haskell.Exts.Annotated.Pretty: Style :: Mode -> Int -> Float -> Style
- Language.Haskell.Exts.Annotated.Pretty: ZigZagMode :: Mode
- Language.Haskell.Exts.Annotated.Pretty: caseIndent :: PPHsMode -> Indent
- Language.Haskell.Exts.Annotated.Pretty: class Pretty a
- Language.Haskell.Exts.Annotated.Pretty: classIndent :: PPHsMode -> Indent
- Language.Haskell.Exts.Annotated.Pretty: data Mode :: *
- Language.Haskell.Exts.Annotated.Pretty: data PPHsMode
- Language.Haskell.Exts.Annotated.Pretty: data PPLayout
- Language.Haskell.Exts.Annotated.Pretty: data Style :: *
- Language.Haskell.Exts.Annotated.Pretty: defaultMode :: PPHsMode
- Language.Haskell.Exts.Annotated.Pretty: doIndent :: PPHsMode -> Indent
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (Alt loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (Bracket loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (ClassDecl loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (Exp loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (FieldUpdate loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (GuardedAlt loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (GuardedAlts loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (GuardedRhs loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (IPBind loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (InstDecl loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (PXAttr loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (Pat loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (PatField loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (QualStmt loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (RPat loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (Rhs loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (Rule loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (Splice loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (Stmt loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo loc) => Pretty (XAttr loc)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo pos) => Pretty (Decl pos)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo pos) => Pretty (ImportDecl pos)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo pos) => Pretty (Match pos)
- Language.Haskell.Exts.Annotated.Pretty: instance (SrcInfo pos) => Pretty (Module pos)
- Language.Haskell.Exts.Annotated.Pretty: instance Eq PPLayout
- Language.Haskell.Exts.Annotated.Pretty: instance Functor (DocM s)
- Language.Haskell.Exts.Annotated.Pretty: instance Monad (DocM s)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (Activation l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (Assoc l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (Asst l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (BangType l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (CName l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (CallConv l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (ConDecl l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (Context l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (DataOrNew l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (DeclHead l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (Deriving l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (ExportSpec l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (ExportSpecList l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (FieldDecl l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (FunDep l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (GadtDecl l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (IPName l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (ImportSpec l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (InstHead l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (Kind l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (Literal l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (ModuleHead l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (ModuleName l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (Name l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (Op l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (OptionPragma l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (QName l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (QOp l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (QualConDecl l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (RPatOp l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (RuleVar l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (Safety l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (TyVarBind l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (Type l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (WarningText l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty (XName l)
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty SrcLoc
- Language.Haskell.Exts.Annotated.Pretty: instance Pretty Tool
- Language.Haskell.Exts.Annotated.Pretty: layout :: PPHsMode -> PPLayout
- Language.Haskell.Exts.Annotated.Pretty: letIndent :: PPHsMode -> Indent
- Language.Haskell.Exts.Annotated.Pretty: lineLength :: Style -> Int
- Language.Haskell.Exts.Annotated.Pretty: linePragmas :: PPHsMode -> Bool
- Language.Haskell.Exts.Annotated.Pretty: mode :: Style -> Mode
- Language.Haskell.Exts.Annotated.Pretty: onsideIndent :: PPHsMode -> Indent
- Language.Haskell.Exts.Annotated.Pretty: prettyPrint :: (Pretty a) => a -> String
- Language.Haskell.Exts.Annotated.Pretty: prettyPrintStyleMode :: (Pretty a) => Style -> PPHsMode -> a -> String
- Language.Haskell.Exts.Annotated.Pretty: prettyPrintWithMode :: (Pretty a) => PPHsMode -> a -> String
- Language.Haskell.Exts.Annotated.Pretty: ribbonsPerLine :: Style -> Float
- Language.Haskell.Exts.Annotated.Pretty: spacing :: PPHsMode -> Bool
- Language.Haskell.Exts.Annotated.Pretty: style :: Style
- Language.Haskell.Exts.Annotated.Pretty: type Indent = Int
- Language.Haskell.Exts.Annotated.Pretty: whereIndent :: PPHsMode -> Indent
- Language.Haskell.Exts.Annotated.SrcLoc: (<**) :: SrcSpanInfo -> [SrcSpan] -> SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: (<++>) :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: (<+?>) :: SrcSpanInfo -> Maybe SrcSpanInfo -> SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: (<?+>) :: Maybe SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: (<^^>) :: SrcSpan -> SrcSpan -> SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: Loc :: SrcSpan -> a -> Loc a
- Language.Haskell.Exts.Annotated.SrcLoc: SrcLoc :: String -> Int -> Int -> SrcLoc
- Language.Haskell.Exts.Annotated.SrcLoc: SrcSpan :: String -> Int -> Int -> Int -> Int -> SrcSpan
- Language.Haskell.Exts.Annotated.SrcLoc: SrcSpanInfo :: SrcSpan -> [SrcSpan] -> SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: class SrcInfo si
- Language.Haskell.Exts.Annotated.SrcLoc: combSpanInfo :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: data Loc a
- Language.Haskell.Exts.Annotated.SrcLoc: data SrcLoc
- Language.Haskell.Exts.Annotated.SrcLoc: data SrcSpan
- Language.Haskell.Exts.Annotated.SrcLoc: data SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: fileName :: (SrcInfo si) => si -> String
- Language.Haskell.Exts.Annotated.SrcLoc: fromSrcInfo :: (SrcInfo si) => SrcSpanInfo -> si
- Language.Haskell.Exts.Annotated.SrcLoc: getPointLoc :: (SrcInfo si) => si -> SrcLoc
- Language.Haskell.Exts.Annotated.SrcLoc: iS :: SrcSpan -> [SrcSpan] -> SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: infoSpan :: SrcSpan -> [SrcSpan] -> SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: instance (Eq a) => Eq (Loc a)
- Language.Haskell.Exts.Annotated.SrcLoc: instance (Ord a) => Ord (Loc a)
- Language.Haskell.Exts.Annotated.SrcLoc: instance (Show a) => Show (Loc a)
- Language.Haskell.Exts.Annotated.SrcLoc: instance Data SrcLoc
- Language.Haskell.Exts.Annotated.SrcLoc: instance Data SrcSpan
- Language.Haskell.Exts.Annotated.SrcLoc: instance Data SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: instance Eq SrcLoc
- Language.Haskell.Exts.Annotated.SrcLoc: instance Eq SrcSpan
- Language.Haskell.Exts.Annotated.SrcLoc: instance Eq SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: instance Ord SrcLoc
- Language.Haskell.Exts.Annotated.SrcLoc: instance Ord SrcSpan
- Language.Haskell.Exts.Annotated.SrcLoc: instance Ord SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: instance Show SrcLoc
- Language.Haskell.Exts.Annotated.SrcLoc: instance Show SrcSpan
- Language.Haskell.Exts.Annotated.SrcLoc: instance Show SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: instance SrcInfo SrcLoc
- Language.Haskell.Exts.Annotated.SrcLoc: instance SrcInfo SrcSpan
- Language.Haskell.Exts.Annotated.SrcLoc: instance SrcInfo SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: instance Typeable SrcLoc
- Language.Haskell.Exts.Annotated.SrcLoc: instance Typeable SrcSpan
- Language.Haskell.Exts.Annotated.SrcLoc: instance Typeable SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: loc :: Loc a -> SrcSpan
- Language.Haskell.Exts.Annotated.SrcLoc: mergeSrcSpan :: SrcSpan -> SrcSpan -> SrcSpan
- Language.Haskell.Exts.Annotated.SrcLoc: mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan
- Language.Haskell.Exts.Annotated.SrcLoc: nIS :: SrcSpan -> SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: noInfoSpan :: SrcSpan -> SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: pIS :: SrcSpan -> SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: pointInfoSpan :: SrcSpan -> SrcSpanInfo
- Language.Haskell.Exts.Annotated.SrcLoc: srcColumn :: SrcLoc -> Int
- Language.Haskell.Exts.Annotated.SrcLoc: srcFilename :: SrcLoc -> String
- Language.Haskell.Exts.Annotated.SrcLoc: srcInfoPoints :: SrcSpanInfo -> [SrcSpan]
- Language.Haskell.Exts.Annotated.SrcLoc: srcInfoSpan :: SrcSpanInfo -> SrcSpan
- Language.Haskell.Exts.Annotated.SrcLoc: srcLine :: SrcLoc -> Int
- Language.Haskell.Exts.Annotated.SrcLoc: srcSpanEndColumn :: SrcSpan -> Int
- Language.Haskell.Exts.Annotated.SrcLoc: srcSpanEndLine :: SrcSpan -> Int
- Language.Haskell.Exts.Annotated.SrcLoc: srcSpanFilename :: SrcSpan -> String
- Language.Haskell.Exts.Annotated.SrcLoc: srcSpanStartColumn :: SrcSpan -> Int
- Language.Haskell.Exts.Annotated.SrcLoc: srcSpanStartLine :: SrcSpan -> Int
- Language.Haskell.Exts.Annotated.SrcLoc: startColumn :: (SrcInfo si) => si -> Int
- Language.Haskell.Exts.Annotated.SrcLoc: startLine :: (SrcInfo si) => si -> Int
- Language.Haskell.Exts.Annotated.SrcLoc: toSrcInfo :: (SrcInfo si) => SrcLoc -> [SrcSpan] -> SrcLoc -> si
- Language.Haskell.Exts.Annotated.SrcLoc: unLoc :: Loc a -> a
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Activation l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Alt l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Assoc l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Asst l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (BangType l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Binds l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Bracket l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (CName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (CallConv l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (ClassDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (ConDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Context l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (DataOrNew l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Decl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (DeclHead l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Deriving l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Exp l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (ExportSpec l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (ExportSpecList l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (FieldDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (FieldUpdate l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (FunDep l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (GadtDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (GuardedAlt l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (GuardedAlts l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (GuardedRhs l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (IPBind l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (IPName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (ImportDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (ImportSpec l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (ImportSpecList l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (InstDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (InstHead l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Kind l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Literal l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Match l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Module l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (ModuleHead l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (ModuleName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Name l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Op l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (OptionPragma l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (PXAttr l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Pat l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (PatField l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (QName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (QOp l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (QualConDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (QualStmt l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (RPat l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (RPatOp l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Rhs l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Rule l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (RuleVar l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Safety l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (SpecialCon l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Splice l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Stmt l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (TyVarBind l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (Type l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (WarningText l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (XAttr l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Data l) => Data (XName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Activation l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Alt l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Assoc l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Asst l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (BangType l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Binds l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Bracket l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (CName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (CallConv l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (ClassDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (ConDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Context l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (DataOrNew l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Decl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (DeclHead l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Deriving l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Exp l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (ExportSpec l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (FieldDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (FieldUpdate l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (FunDep l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (GadtDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (GuardedAlt l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (GuardedAlts l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (GuardedRhs l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (IPBind l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (IPName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (ImportDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (ImportSpec l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (ImportSpecList l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (InstDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (InstHead l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Kind l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Literal l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Match l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (ModuleName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Name l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Op l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (OptionPragma l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (PXAttr l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Pat l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (PatField l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (QName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (QOp l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (QualConDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (QualStmt l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (RPat l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (RPatOp l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Rhs l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Rule l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (RuleVar l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Safety l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (SpecialCon l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Splice l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Stmt l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (TyVarBind l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (Type l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (WarningText l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (XAttr l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Eq l) => Eq (XName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Ord l) => Ord (CName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Ord l) => Ord (IPName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Ord l) => Ord (ModuleName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Ord l) => Ord (Name l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Ord l) => Ord (Op l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Ord l) => Ord (QName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Ord l) => Ord (QOp l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Ord l) => Ord (SpecialCon l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Activation l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Alt l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Assoc l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Asst l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (BangType l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Binds l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Bracket l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (CName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (CallConv l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (ClassDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (ConDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Context l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (DataOrNew l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Decl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (DeclHead l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Deriving l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Exp l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (ExportSpec l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (ExportSpecList l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (FieldDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (FieldUpdate l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (FunDep l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (GadtDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (GuardedAlt l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (GuardedAlts l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (GuardedRhs l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (IPBind l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (IPName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (ImportDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (ImportSpec l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (ImportSpecList l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (InstDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (InstHead l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Kind l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Literal l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Match l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Module l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (ModuleHead l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (ModuleName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Name l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Op l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (OptionPragma l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (PXAttr l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Pat l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (PatField l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (QName l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (QOp l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (QualConDecl l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (QualStmt l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (RPat l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (RPatOp l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Rhs l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Rule l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (RuleVar l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Safety l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (SpecialCon l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Splice l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Stmt l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (TyVarBind l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (Type l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (WarningText l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (XAttr l)
- Language.Haskell.Exts.Annotated.Syntax: instance (Show l) => Show (XName l)
- Language.Haskell.Exts.Comments: MultiLine :: SrcLoc -> String -> Comment
- Language.Haskell.Exts.Comments: SingleLine :: SrcLoc -> String -> Comment
- Language.Haskell.Exts.Syntax: instance Data Boxed
- Language.Haskell.Exts.Syntax: instance Data SrcLoc
- Language.Haskell.Exts.Syntax: instance Data Tool
- Language.Haskell.Exts.Syntax: instance Eq Boxed
- Language.Haskell.Exts.Syntax: instance Eq SrcLoc
- Language.Haskell.Exts.Syntax: instance Eq Tool
- Language.Haskell.Exts.Syntax: instance Ord Boxed
- Language.Haskell.Exts.Syntax: instance Ord SrcLoc
- Language.Haskell.Exts.Syntax: instance Show Boxed
- Language.Haskell.Exts.Syntax: instance Show SrcLoc
- Language.Haskell.Exts.Syntax: instance Show Tool
- Language.Haskell.Exts.Syntax: instance Typeable Boxed
- Language.Haskell.Exts.Syntax: instance Typeable SrcLoc
- Language.Haskell.Exts.Syntax: instance Typeable Tool
+ Language.Haskell.Exts.Annotated.Simplify: pageFun :: SrcLoc -> Exp -> Decl
+ Language.Haskell.Exts.Annotated.Simplify: sActivation :: Activation l -> Activation
+ Language.Haskell.Exts.Annotated.Simplify: sAlt :: SrcInfo loc => Alt loc -> Alt
+ Language.Haskell.Exts.Annotated.Simplify: sAssoc :: Assoc l -> Assoc
+ Language.Haskell.Exts.Annotated.Simplify: sAsst :: Asst l -> Asst
+ Language.Haskell.Exts.Annotated.Simplify: sBangType :: BangType l -> BangType
+ Language.Haskell.Exts.Annotated.Simplify: sBinds :: SrcInfo loc => Binds loc -> Binds
+ Language.Haskell.Exts.Annotated.Simplify: sBracket :: SrcInfo loc => Bracket loc -> Bracket
+ Language.Haskell.Exts.Annotated.Simplify: sCName :: CName l -> CName
+ Language.Haskell.Exts.Annotated.Simplify: sCallConv :: CallConv l -> CallConv
+ Language.Haskell.Exts.Annotated.Simplify: sClassDecl :: SrcInfo loc => ClassDecl loc -> ClassDecl
+ Language.Haskell.Exts.Annotated.Simplify: sConDecl :: ConDecl l -> ConDecl
+ Language.Haskell.Exts.Annotated.Simplify: sContext :: Context l -> Context
+ Language.Haskell.Exts.Annotated.Simplify: sDataOrNew :: DataOrNew l -> DataOrNew
+ Language.Haskell.Exts.Annotated.Simplify: sDecl :: SrcInfo loc => Decl loc -> Decl
+ Language.Haskell.Exts.Annotated.Simplify: sDeclHead :: DeclHead l -> (Name, [TyVarBind])
+ Language.Haskell.Exts.Annotated.Simplify: sDeriving :: (Deriving l) -> [(QName, [Type])]
+ Language.Haskell.Exts.Annotated.Simplify: sExp :: SrcInfo loc => Exp loc -> Exp
+ Language.Haskell.Exts.Annotated.Simplify: sExportSpec :: ExportSpec l -> ExportSpec
+ Language.Haskell.Exts.Annotated.Simplify: sExportSpecList :: ExportSpecList l -> [ExportSpec]
+ Language.Haskell.Exts.Annotated.Simplify: sFieldDecl :: FieldDecl l -> ([Name], BangType)
+ Language.Haskell.Exts.Annotated.Simplify: sFieldUpdate :: SrcInfo loc => FieldUpdate loc -> FieldUpdate
+ Language.Haskell.Exts.Annotated.Simplify: sFunDep :: FunDep l -> FunDep
+ Language.Haskell.Exts.Annotated.Simplify: sGadtDecl :: SrcInfo loc => GadtDecl loc -> GadtDecl
+ Language.Haskell.Exts.Annotated.Simplify: sGuardedAlt :: SrcInfo loc => GuardedAlt loc -> GuardedAlt
+ Language.Haskell.Exts.Annotated.Simplify: sGuardedAlts :: SrcInfo loc => GuardedAlts loc -> GuardedAlts
+ Language.Haskell.Exts.Annotated.Simplify: sGuardedRhs :: SrcInfo loc => GuardedRhs loc -> GuardedRhs
+ Language.Haskell.Exts.Annotated.Simplify: sIPBind :: SrcInfo loc => IPBind loc -> IPBind
+ Language.Haskell.Exts.Annotated.Simplify: sIPName :: IPName l -> IPName
+ Language.Haskell.Exts.Annotated.Simplify: sImportDecl :: SrcInfo loc => ImportDecl loc -> ImportDecl
+ Language.Haskell.Exts.Annotated.Simplify: sImportSpec :: ImportSpec l -> ImportSpec
+ Language.Haskell.Exts.Annotated.Simplify: sImportSpecList :: ImportSpecList l -> (Bool, [ImportSpec])
+ Language.Haskell.Exts.Annotated.Simplify: sInstDecl :: SrcInfo loc => InstDecl loc -> InstDecl
+ Language.Haskell.Exts.Annotated.Simplify: sInstHead :: InstHead l -> (QName, [Type])
+ Language.Haskell.Exts.Annotated.Simplify: sKind :: Kind l -> Kind
+ Language.Haskell.Exts.Annotated.Simplify: sLiteral :: Literal l -> Literal
+ Language.Haskell.Exts.Annotated.Simplify: sMatch :: SrcInfo loc => Match loc -> Match
+ Language.Haskell.Exts.Annotated.Simplify: sModule :: SrcInfo loc => Module loc -> Module
+ Language.Haskell.Exts.Annotated.Simplify: sModuleHead :: Maybe (ModuleHead l) -> (ModuleName, Maybe (WarningText), Maybe [ExportSpec])
+ Language.Haskell.Exts.Annotated.Simplify: sModuleName :: ModuleName l -> ModuleName
+ Language.Haskell.Exts.Annotated.Simplify: sName :: Name l -> Name
+ Language.Haskell.Exts.Annotated.Simplify: sOp :: Op l -> Op
+ Language.Haskell.Exts.Annotated.Simplify: sOptionPragma :: SrcInfo loc => OptionPragma loc -> OptionPragma
+ Language.Haskell.Exts.Annotated.Simplify: sPXAttr :: SrcInfo loc => PXAttr loc -> PXAttr
+ Language.Haskell.Exts.Annotated.Simplify: sPat :: SrcInfo loc => Pat loc -> Pat
+ Language.Haskell.Exts.Annotated.Simplify: sPatField :: SrcInfo loc => PatField loc -> PatField
+ Language.Haskell.Exts.Annotated.Simplify: sQName :: QName l -> QName
+ Language.Haskell.Exts.Annotated.Simplify: sQOp :: QOp l -> QOp
+ Language.Haskell.Exts.Annotated.Simplify: sQualConDecl :: SrcInfo loc => QualConDecl loc -> QualConDecl
+ Language.Haskell.Exts.Annotated.Simplify: sQualStmt :: SrcInfo loc => QualStmt loc -> QualStmt
+ Language.Haskell.Exts.Annotated.Simplify: sRPat :: SrcInfo loc => RPat loc -> RPat
+ Language.Haskell.Exts.Annotated.Simplify: sRPatOp :: RPatOp l -> RPatOp
+ Language.Haskell.Exts.Annotated.Simplify: sRhs :: SrcInfo loc => Rhs loc -> Rhs
+ Language.Haskell.Exts.Annotated.Simplify: sRule :: SrcInfo loc => Rule loc -> Rule
+ Language.Haskell.Exts.Annotated.Simplify: sRuleVar :: RuleVar l -> RuleVar
+ Language.Haskell.Exts.Annotated.Simplify: sSafety :: Safety l -> Safety
+ Language.Haskell.Exts.Annotated.Simplify: sSpecialCon :: SpecialCon l -> SpecialCon
+ Language.Haskell.Exts.Annotated.Simplify: sSplice :: SrcInfo loc => Splice loc -> Splice
+ Language.Haskell.Exts.Annotated.Simplify: sStmt :: SrcInfo loc => Stmt loc -> Stmt
+ Language.Haskell.Exts.Annotated.Simplify: sTyVarBind :: TyVarBind l -> TyVarBind
+ Language.Haskell.Exts.Annotated.Simplify: sType :: Type l -> Type
+ Language.Haskell.Exts.Annotated.Simplify: sWarningText :: WarningText l -> WarningText
+ Language.Haskell.Exts.Annotated.Simplify: sXAttr :: SrcInfo loc => XAttr loc -> XAttr
+ Language.Haskell.Exts.Annotated.Simplify: sXName :: XName l -> XName
+ Language.Haskell.Exts.Annotated.Syntax: KindVar :: l -> (Name l) -> Kind l
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Activation l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Alt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Assoc l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Asst l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (BangType l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Binds l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Bracket l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (CName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (CallConv l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (ClassDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (ConDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Context l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (DataOrNew l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Decl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (DeclHead l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Deriving l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Exp l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (ExportSpec l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (ExportSpecList l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (FieldDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (FieldUpdate l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (FunDep l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (GadtDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (GuardedAlt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (GuardedAlts l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (GuardedRhs l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (IPBind l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (IPName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (ImportDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (ImportSpec l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (ImportSpecList l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (InstDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (InstHead l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Kind l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Literal l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Match l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Module l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (ModuleHead l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (ModuleName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Name l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Op l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (OptionPragma l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (PXAttr l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Pat l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (PatField l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (QName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (QOp l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (QualConDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (QualStmt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (RPat l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (RPatOp l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Rhs l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Rule l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (RuleVar l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Safety l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (SpecialCon l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Splice l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Stmt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (TyVarBind l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (Type l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (WarningText l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (XAttr l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Data l => Data (XName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Activation l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Alt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Assoc l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Asst l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (BangType l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Binds l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Bracket l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (CName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (CallConv l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (ClassDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (ConDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Context l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (DataOrNew l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Decl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (DeclHead l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Deriving l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Exp l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (ExportSpec l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (ExportSpecList l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (FieldDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (FieldUpdate l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (FunDep l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (GadtDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (GuardedAlt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (GuardedAlts l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (GuardedRhs l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (IPBind l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (IPName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (ImportDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (ImportSpec l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (ImportSpecList l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (InstDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (InstHead l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Kind l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Literal l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Match l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Module l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (ModuleHead l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (ModuleName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Name l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Op l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (OptionPragma l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (PXAttr l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Pat l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (PatField l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (QName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (QOp l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (QualConDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (QualStmt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (RPat l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (RPatOp l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Rhs l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Rule l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (RuleVar l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Safety l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (SpecialCon l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Splice l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Stmt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (TyVarBind l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (Type l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (WarningText l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (XAttr l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Eq l => Eq (XName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord Tool
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Activation l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Alt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Assoc l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Asst l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (BangType l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Binds l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Bracket l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (CName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (CallConv l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (ClassDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (ConDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Context l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (DataOrNew l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Decl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (DeclHead l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Deriving l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Exp l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (ExportSpec l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (ExportSpecList l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (FieldDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (FieldUpdate l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (FunDep l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (GadtDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (GuardedAlt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (GuardedAlts l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (GuardedRhs l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (IPBind l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (IPName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (ImportDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (ImportSpec l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (ImportSpecList l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (InstDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (InstHead l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Kind l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Literal l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Match l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Module l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (ModuleHead l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (ModuleName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Name l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Op l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (OptionPragma l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (PXAttr l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Pat l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (PatField l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (QName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (QOp l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (QualConDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (QualStmt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (RPat l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (RPatOp l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Rhs l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Rule l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (RuleVar l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Safety l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (SpecialCon l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Splice l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Stmt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (TyVarBind l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (Type l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (WarningText l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (XAttr l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Ord l => Ord (XName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Activation l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Alt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Assoc l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Asst l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (BangType l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Binds l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Bracket l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (CName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (CallConv l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (ClassDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (ConDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Context l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (DataOrNew l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Decl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (DeclHead l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Deriving l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Exp l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (ExportSpec l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (ExportSpecList l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (FieldDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (FieldUpdate l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (FunDep l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (GadtDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (GuardedAlt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (GuardedAlts l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (GuardedRhs l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (IPBind l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (IPName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (ImportDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (ImportSpec l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (ImportSpecList l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (InstDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (InstHead l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Kind l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Literal l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Match l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Module l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (ModuleHead l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (ModuleName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Name l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Op l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (OptionPragma l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (PXAttr l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Pat l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (PatField l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (QName l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (QOp l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (QualConDecl l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (QualStmt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (RPat l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (RPatOp l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Rhs l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Rule l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (RuleVar l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Safety l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (SpecialCon l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Splice l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Stmt l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (TyVarBind l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (Type l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (WarningText l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (XAttr l)
+ Language.Haskell.Exts.Annotated.Syntax: instance Show l => Show (XName l)
+ Language.Haskell.Exts.Comments: Comment :: Bool -> SrcSpan -> String -> Comment
+ Language.Haskell.Exts.Parser: instance SrcInfo loc => Parseable (Decl loc)
+ Language.Haskell.Exts.Parser: instance SrcInfo loc => Parseable (Exp loc)
+ Language.Haskell.Exts.Parser: instance SrcInfo loc => Parseable (Module loc)
+ Language.Haskell.Exts.Parser: instance SrcInfo loc => Parseable (Pat loc)
+ Language.Haskell.Exts.Parser: instance SrcInfo loc => Parseable (Type loc)
+ Language.Haskell.Exts.Pretty: instance Pretty (Activation l)
+ Language.Haskell.Exts.Pretty: instance Pretty (Assoc l)
+ Language.Haskell.Exts.Pretty: instance Pretty (Asst l)
+ Language.Haskell.Exts.Pretty: instance Pretty (BangType l)
+ Language.Haskell.Exts.Pretty: instance Pretty (CName l)
+ Language.Haskell.Exts.Pretty: instance Pretty (CallConv l)
+ Language.Haskell.Exts.Pretty: instance Pretty (ConDecl l)
+ Language.Haskell.Exts.Pretty: instance Pretty (Context l)
+ Language.Haskell.Exts.Pretty: instance Pretty (DataOrNew l)
+ Language.Haskell.Exts.Pretty: instance Pretty (DeclHead l)
+ Language.Haskell.Exts.Pretty: instance Pretty (Deriving l)
+ Language.Haskell.Exts.Pretty: instance Pretty (ExportSpec l)
+ Language.Haskell.Exts.Pretty: instance Pretty (ExportSpecList l)
+ Language.Haskell.Exts.Pretty: instance Pretty (FieldDecl l)
+ Language.Haskell.Exts.Pretty: instance Pretty (FunDep l)
+ Language.Haskell.Exts.Pretty: instance Pretty (GadtDecl l)
+ Language.Haskell.Exts.Pretty: instance Pretty (IPName l)
+ Language.Haskell.Exts.Pretty: instance Pretty (ImportSpec l)
+ Language.Haskell.Exts.Pretty: instance Pretty (ImportSpecList l)
+ Language.Haskell.Exts.Pretty: instance Pretty (InstHead l)
+ Language.Haskell.Exts.Pretty: instance Pretty (Kind l)
+ Language.Haskell.Exts.Pretty: instance Pretty (Literal l)
+ Language.Haskell.Exts.Pretty: instance Pretty (ModuleHead l)
+ Language.Haskell.Exts.Pretty: instance Pretty (ModuleName l)
+ Language.Haskell.Exts.Pretty: instance Pretty (Name l)
+ Language.Haskell.Exts.Pretty: instance Pretty (Op l)
+ Language.Haskell.Exts.Pretty: instance Pretty (OptionPragma l)
+ Language.Haskell.Exts.Pretty: instance Pretty (QName l)
+ Language.Haskell.Exts.Pretty: instance Pretty (QOp l)
+ Language.Haskell.Exts.Pretty: instance Pretty (QualConDecl l)
+ Language.Haskell.Exts.Pretty: instance Pretty (RPatOp l)
+ Language.Haskell.Exts.Pretty: instance Pretty (RuleVar l)
+ Language.Haskell.Exts.Pretty: instance Pretty (Safety l)
+ Language.Haskell.Exts.Pretty: instance Pretty (TyVarBind l)
+ Language.Haskell.Exts.Pretty: instance Pretty (Type l)
+ Language.Haskell.Exts.Pretty: instance Pretty (WarningText l)
+ Language.Haskell.Exts.Pretty: instance Pretty (XName l)
+ Language.Haskell.Exts.Pretty: instance Pretty SrcSpan
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (Alt loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (Bracket loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (ClassDecl loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (Exp loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (FieldUpdate loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (GuardedAlt loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (GuardedAlts loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (GuardedRhs loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (IPBind loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (InstDecl loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (PAsst loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (PContext loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (PExp loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (PFieldUpdate loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (PType loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (PXAttr loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (ParseXAttr loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (Pat loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (PatField loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (QualStmt loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (RPat loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (Rhs loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (Rule loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (Splice loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (Stmt loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo loc => Pretty (XAttr loc)
+ Language.Haskell.Exts.Pretty: instance SrcInfo pos => Pretty (Decl pos)
+ Language.Haskell.Exts.Pretty: instance SrcInfo pos => Pretty (ImportDecl pos)
+ Language.Haskell.Exts.Pretty: instance SrcInfo pos => Pretty (Match pos)
+ Language.Haskell.Exts.Pretty: instance SrcInfo pos => Pretty (Module pos)
+ Language.Haskell.Exts.SrcLoc: (<**) :: SrcSpanInfo -> [SrcSpan] -> SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: (<++>) :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: (<+?>) :: SrcSpanInfo -> Maybe SrcSpanInfo -> SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: (<?+>) :: Maybe SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: (<^^>) :: SrcSpan -> SrcSpan -> SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: Loc :: SrcSpan -> a -> Loc a
+ Language.Haskell.Exts.SrcLoc: SrcLoc :: String -> Int -> Int -> SrcLoc
+ Language.Haskell.Exts.SrcLoc: SrcSpan :: String -> Int -> Int -> Int -> Int -> SrcSpan
+ Language.Haskell.Exts.SrcLoc: SrcSpanInfo :: SrcSpan -> [SrcSpan] -> SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: class SrcInfo si
+ Language.Haskell.Exts.SrcLoc: combSpanInfo :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: data Loc a
+ Language.Haskell.Exts.SrcLoc: data SrcLoc
+ Language.Haskell.Exts.SrcLoc: data SrcSpan
+ Language.Haskell.Exts.SrcLoc: data SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: fileName :: SrcInfo si => si -> String
+ Language.Haskell.Exts.SrcLoc: fromSrcInfo :: SrcInfo si => SrcSpanInfo -> si
+ Language.Haskell.Exts.SrcLoc: getPointLoc :: SrcInfo si => si -> SrcLoc
+ Language.Haskell.Exts.SrcLoc: infoSpan :: SrcSpan -> [SrcSpan] -> SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: instance Data SrcLoc
+ Language.Haskell.Exts.SrcLoc: instance Data SrcSpan
+ Language.Haskell.Exts.SrcLoc: instance Data SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: instance Eq SrcLoc
+ Language.Haskell.Exts.SrcLoc: instance Eq SrcSpan
+ Language.Haskell.Exts.SrcLoc: instance Eq SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: instance Eq a => Eq (Loc a)
+ Language.Haskell.Exts.SrcLoc: instance Ord SrcLoc
+ Language.Haskell.Exts.SrcLoc: instance Ord SrcSpan
+ Language.Haskell.Exts.SrcLoc: instance Ord SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: instance Ord a => Ord (Loc a)
+ Language.Haskell.Exts.SrcLoc: instance Show SrcLoc
+ Language.Haskell.Exts.SrcLoc: instance Show SrcSpan
+ Language.Haskell.Exts.SrcLoc: instance Show SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: instance Show a => Show (Loc a)
+ Language.Haskell.Exts.SrcLoc: instance SrcInfo SrcLoc
+ Language.Haskell.Exts.SrcLoc: instance SrcInfo SrcSpan
+ Language.Haskell.Exts.SrcLoc: instance SrcInfo SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: instance Typeable SrcLoc
+ Language.Haskell.Exts.SrcLoc: instance Typeable SrcSpan
+ Language.Haskell.Exts.SrcLoc: instance Typeable SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: loc :: Loc a -> SrcSpan
+ Language.Haskell.Exts.SrcLoc: mergeSrcSpan :: SrcSpan -> SrcSpan -> SrcSpan
+ Language.Haskell.Exts.SrcLoc: mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan
+ Language.Haskell.Exts.SrcLoc: noInfoSpan :: SrcSpan -> SrcSpanInfo
+ Language.Haskell.Exts.SrcLoc: srcColumn :: SrcLoc -> Int
+ Language.Haskell.Exts.SrcLoc: srcFilename :: SrcLoc -> String
+ Language.Haskell.Exts.SrcLoc: srcInfoPoints :: SrcSpanInfo -> [SrcSpan]
+ Language.Haskell.Exts.SrcLoc: srcInfoSpan :: SrcSpanInfo -> SrcSpan
+ Language.Haskell.Exts.SrcLoc: srcLine :: SrcLoc -> Int
+ Language.Haskell.Exts.SrcLoc: srcSpanEndColumn :: SrcSpan -> Int
+ Language.Haskell.Exts.SrcLoc: srcSpanEndLine :: SrcSpan -> Int
+ Language.Haskell.Exts.SrcLoc: srcSpanFilename :: SrcSpan -> String
+ Language.Haskell.Exts.SrcLoc: srcSpanStartColumn :: SrcSpan -> Int
+ Language.Haskell.Exts.SrcLoc: srcSpanStartLine :: SrcSpan -> Int
+ Language.Haskell.Exts.SrcLoc: startColumn :: SrcInfo si => si -> Int
+ Language.Haskell.Exts.SrcLoc: startLine :: SrcInfo si => si -> Int
+ Language.Haskell.Exts.SrcLoc: toSrcInfo :: SrcInfo si => SrcLoc -> [SrcSpan] -> SrcLoc -> si
+ Language.Haskell.Exts.SrcLoc: unLoc :: Loc a -> a
+ Language.Haskell.Exts.Syntax: KindParen :: Kind -> Kind
+ Language.Haskell.Exts.Syntax: KindVar :: Name -> Kind
+ Language.Haskell.Exts.Syntax: instance Eq Module
+ Language.Haskell.Exts.Syntax: instance Ord Activation
+ Language.Haskell.Exts.Syntax: instance Ord Alt
+ Language.Haskell.Exts.Syntax: instance Ord Assoc
+ Language.Haskell.Exts.Syntax: instance Ord Asst
+ Language.Haskell.Exts.Syntax: instance Ord BangType
+ Language.Haskell.Exts.Syntax: instance Ord Binds
+ Language.Haskell.Exts.Syntax: instance Ord Bracket
+ Language.Haskell.Exts.Syntax: instance Ord CallConv
+ Language.Haskell.Exts.Syntax: instance Ord ClassDecl
+ Language.Haskell.Exts.Syntax: instance Ord ConDecl
+ Language.Haskell.Exts.Syntax: instance Ord DataOrNew
+ Language.Haskell.Exts.Syntax: instance Ord Decl
+ Language.Haskell.Exts.Syntax: instance Ord Exp
+ Language.Haskell.Exts.Syntax: instance Ord ExportSpec
+ Language.Haskell.Exts.Syntax: instance Ord FieldUpdate
+ Language.Haskell.Exts.Syntax: instance Ord FunDep
+ Language.Haskell.Exts.Syntax: instance Ord GadtDecl
+ Language.Haskell.Exts.Syntax: instance Ord GuardedAlt
+ Language.Haskell.Exts.Syntax: instance Ord GuardedAlts
+ Language.Haskell.Exts.Syntax: instance Ord GuardedRhs
+ Language.Haskell.Exts.Syntax: instance Ord IPBind
+ Language.Haskell.Exts.Syntax: instance Ord ImportDecl
+ Language.Haskell.Exts.Syntax: instance Ord ImportSpec
+ Language.Haskell.Exts.Syntax: instance Ord InstDecl
+ Language.Haskell.Exts.Syntax: instance Ord Kind
+ Language.Haskell.Exts.Syntax: instance Ord Literal
+ Language.Haskell.Exts.Syntax: instance Ord Match
+ Language.Haskell.Exts.Syntax: instance Ord Module
+ Language.Haskell.Exts.Syntax: instance Ord OptionPragma
+ Language.Haskell.Exts.Syntax: instance Ord PXAttr
+ Language.Haskell.Exts.Syntax: instance Ord Pat
+ Language.Haskell.Exts.Syntax: instance Ord PatField
+ Language.Haskell.Exts.Syntax: instance Ord QualConDecl
+ Language.Haskell.Exts.Syntax: instance Ord QualStmt
+ Language.Haskell.Exts.Syntax: instance Ord RPat
+ Language.Haskell.Exts.Syntax: instance Ord RPatOp
+ Language.Haskell.Exts.Syntax: instance Ord Rhs
+ Language.Haskell.Exts.Syntax: instance Ord Rule
+ Language.Haskell.Exts.Syntax: instance Ord RuleVar
+ Language.Haskell.Exts.Syntax: instance Ord Safety
+ Language.Haskell.Exts.Syntax: instance Ord Splice
+ Language.Haskell.Exts.Syntax: instance Ord Stmt
+ Language.Haskell.Exts.Syntax: instance Ord TyVarBind
+ Language.Haskell.Exts.Syntax: instance Ord Type
+ Language.Haskell.Exts.Syntax: instance Ord WarningText
+ Language.Haskell.Exts.Syntax: instance Ord XAttr
+ Language.Haskell.Exts.Syntax: instance Ord XName
- Language.Haskell.Exts.Annotated.ExactPrint: exactPrint :: (ExactP ast) => ast L -> [Comment] -> String
+ Language.Haskell.Exts.Annotated.ExactPrint: exactPrint :: ExactP ast => ast SrcSpanInfo -> [Comment] -> String
- Language.Haskell.Exts.Annotated.Fixity: applyFixities :: (AppFixity ast) => [Fixity] -> ast L -> ast L
+ Language.Haskell.Exts.Annotated.Fixity: applyFixities :: AppFixity ast => [Fixity] -> ast SrcSpanInfo -> ast SrcSpanInfo
- Language.Haskell.Exts.Annotated.Syntax: SpliceDecl :: l -> (Splice l) -> Decl l
+ Language.Haskell.Exts.Annotated.Syntax: SpliceDecl :: l -> (Exp l) -> Decl l
- Language.Haskell.Exts.Annotated.Syntax: XmlPage :: l -> [OptionPragma l] -> (XName l) -> [XAttr l] -> (Maybe (Exp l)) -> [Exp l] -> Module l
+ Language.Haskell.Exts.Annotated.Syntax: XmlPage :: l -> (ModuleName l) -> [OptionPragma l] -> (XName l) -> [XAttr l] -> (Maybe (Exp l)) -> [Exp l] -> Module l
- Language.Haskell.Exts.Annotated.Syntax: amap :: (Annotated ast) => (l -> l) -> ast l -> ast l
+ Language.Haskell.Exts.Annotated.Syntax: amap :: Annotated ast => (l -> l) -> ast l -> ast l
- Language.Haskell.Exts.Annotated.Syntax: ann :: (Annotated ast) => ast l -> l
+ Language.Haskell.Exts.Annotated.Syntax: ann :: Annotated ast => ast l -> l
- Language.Haskell.Exts.Annotated.Syntax: class Annotated ast
+ Language.Haskell.Exts.Annotated.Syntax: class Functor ast => Annotated ast
- Language.Haskell.Exts.Fixity: applyFixities :: (AppFixity ast) => [Fixity] -> ast -> ast
+ Language.Haskell.Exts.Fixity: applyFixities :: AppFixity ast => [Fixity] -> ast -> ast
- Language.Haskell.Exts.Parser: parse :: (Parseable ast) => String -> ParseResult ast
+ Language.Haskell.Exts.Parser: parse :: Parseable ast => String -> ParseResult ast
- Language.Haskell.Exts.Parser: parseWithComments :: (Parseable ast) => ParseMode -> String -> ParseResult (ast, [Comment])
+ Language.Haskell.Exts.Parser: parseWithComments :: Parseable ast => ParseMode -> String -> ParseResult (ast, [Comment])
- Language.Haskell.Exts.Parser: parseWithMode :: (Parseable ast) => ParseMode -> String -> ParseResult ast
+ Language.Haskell.Exts.Parser: parseWithMode :: Parseable ast => ParseMode -> String -> ParseResult ast
- Language.Haskell.Exts.Pretty: prettyPrint :: (Pretty a) => a -> String
+ Language.Haskell.Exts.Pretty: prettyPrint :: Pretty a => a -> String
- Language.Haskell.Exts.Pretty: prettyPrintStyleMode :: (Pretty a) => Style -> PPHsMode -> a -> String
+ Language.Haskell.Exts.Pretty: prettyPrintStyleMode :: Pretty a => Style -> PPHsMode -> a -> String
- Language.Haskell.Exts.Pretty: prettyPrintWithMode :: (Pretty a) => PPHsMode -> a -> String
+ Language.Haskell.Exts.Pretty: prettyPrintWithMode :: Pretty a => PPHsMode -> a -> String
- Language.Haskell.Exts.Syntax: SpliceDecl :: SrcLoc -> Splice -> Decl
+ Language.Haskell.Exts.Syntax: SpliceDecl :: SrcLoc -> Exp -> Decl
Files
- dist/build/Language/Haskell/Exts/Annotated/Parser.hs +0/−7987
- dist/build/Language/Haskell/Exts/InternalParser.hs +7941/−0
- dist/build/Language/Haskell/Exts/Parser.hs +0/−7547
- haskell-src-exts.cabal +9/−12
- src/Language/Haskell/Exts.hs +1/−1
- src/Language/Haskell/Exts/Annotated.hs +10/−8
- src/Language/Haskell/Exts/Annotated/Build.hs +1/−1
- src/Language/Haskell/Exts/Annotated/Comments.hs +0/−19
- src/Language/Haskell/Exts/Annotated/ExactPrint.hs +82/−34
- src/Language/Haskell/Exts/Annotated/Fixity.hs +7/−9
- src/Language/Haskell/Exts/Annotated/Lexer.hs +0/−1064
- src/Language/Haskell/Exts/Annotated/ParseMonad.hs +0/−405
- src/Language/Haskell/Exts/Annotated/ParseUtils.hs +0/−1301
- src/Language/Haskell/Exts/Annotated/Parser.ly +0/−1797
- src/Language/Haskell/Exts/Annotated/Pretty.hs +0/−1239
- src/Language/Haskell/Exts/Annotated/Simplify.hs +514/−0
- src/Language/Haskell/Exts/Annotated/SrcLoc.hs +0/−142
- src/Language/Haskell/Exts/Annotated/Syntax.hs +139/−127
- src/Language/Haskell/Exts/Comments.hs +2/−3
- src/Language/Haskell/Exts/InternalParser.ly +1768/−0
- src/Language/Haskell/Exts/Lexer.hs +131/−116
- src/Language/Haskell/Exts/ParseMonad.hs +5/−5
- src/Language/Haskell/Exts/ParseSyntax.hs +432/−0
- src/Language/Haskell/Exts/ParseUtils.hs +1370/−1067
- src/Language/Haskell/Exts/Parser.hs +154/−0
- src/Language/Haskell/Exts/Parser.ly +0/−1743
- src/Language/Haskell/Exts/Pretty.hs +450/−17
- src/Language/Haskell/Exts/SrcLoc.hs +146/−0
- src/Language/Haskell/Exts/Syntax.hs +109/−100
− dist/build/Language/Haskell/Exts/Annotated/Parser.hs
@@ -1,7987 +0,0 @@-{-# OPTIONS_GHC -fno-warn-overlapping-patterns #-} -{-# OPTIONS -fglasgow-exts -cpp #-} ------------------------------------------------------------------------------ --- | --- Module : Language.Haskell.Exts.Parser --- Copyright : (c) Niklas Broberg 2004-2009, --- Original (c) Simon Marlow, Sven Panne 1997-2000 --- License : BSD-style (see the file LICENSE.txt) --- --- Maintainer : Niklas Broberg, d00nibro@chalmers.se --- Stability : stable --- Portability : portable --- --- ------------------------------------------------------------------------------ -module Language.Haskell.Exts.Annotated.Parser ( - -- * General parsing - Parseable(..), - ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult, - -- * Parsing of specific AST elements - -- ** Modules - parseModule, parseModuleWithMode, parseModuleWithComments, - -- ** Expressions - parseExp, parseExpWithMode, parseExpWithComments, - -- ** Patterns - parsePat, parsePatWithMode, parsePatWithComments, - -- ** Declarations - parseDecl, parseDeclWithMode, parseDeclWithComments, - -- ** Types - parseType, parseTypeWithMode, parseTypeWithComments, - -- ** Option pragmas - getTopPragmas - ) where -import Language.Haskell.Exts.Annotated.SrcLoc -import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Exp(..), Asst(..), XAttr(..), FieldUpdate(..) ) -import Language.Haskell.Exts.Annotated.Syntax ( Type, Exp, Asst ) -import Language.Haskell.Exts.Annotated.ParseMonad -import Language.Haskell.Exts.Annotated.Lexer -import Language.Haskell.Exts.Annotated.ParseUtils -import Language.Haskell.Exts.Annotated.Comments ( Comment ) -import Language.Haskell.Exts.Annotated.Fixity -import Language.Haskell.Exts.Extension - -import Control.Monad ( liftM ) -#if __GLASGOW_HASKELL__ >= 503 -import qualified Data.Array as Happy_Data_Array -#else -import qualified Array as Happy_Data_Array -#endif -#if __GLASGOW_HASKELL__ >= 503 -import qualified GHC.Exts as Happy_GHC_Exts -#else -import qualified GlaExts as Happy_GHC_Exts -#endif - --- parser produced by Happy Version 1.18.4 - -newtype HappyAbsSyn = HappyAbsSyn HappyAny -#if __GLASGOW_HASKELL__ >= 607 -type HappyAny = Happy_GHC_Exts.Any -#else -type HappyAny = forall a . a -#endif -happyIn9 :: (Module L) -> (HappyAbsSyn ) -happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn9 #-} -happyOut9 :: (HappyAbsSyn ) -> (Module L) -happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut9 #-} -happyIn10 :: (PExp L) -> (HappyAbsSyn ) -happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn10 #-} -happyOut10 :: (HappyAbsSyn ) -> (PExp L) -happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut10 #-} -happyIn11 :: (([OptionPragma L],[S],L)) -> (HappyAbsSyn ) -happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn11 #-} -happyOut11 :: (HappyAbsSyn ) -> (([OptionPragma L],[S],L)) -happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut11 #-} -happyIn12 :: (([OptionPragma L],[S],Maybe L)) -> (HappyAbsSyn ) -happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn12 #-} -happyOut12 :: (HappyAbsSyn ) -> (([OptionPragma L],[S],Maybe L)) -happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut12 #-} -happyIn13 :: (OptionPragma L) -> (HappyAbsSyn ) -happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn13 #-} -happyOut13 :: (HappyAbsSyn ) -> (OptionPragma L) -happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut13 #-} -happyIn14 :: (([Name L],[S])) -> (HappyAbsSyn ) -happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn14 #-} -happyOut14 :: (HappyAbsSyn ) -> (([Name L],[S])) -happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut14 #-} -happyIn15 :: ([OptionPragma L] -> [S] -> L -> Module L) -> (HappyAbsSyn ) -happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn15 #-} -happyOut15 :: (HappyAbsSyn ) -> ([OptionPragma L] -> [S] -> L -> Module L) -happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut15 #-} -happyIn16 :: (Maybe (ModuleHead L)) -> (HappyAbsSyn ) -happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn16 #-} -happyOut16 :: (HappyAbsSyn ) -> (Maybe (ModuleHead L)) -happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut16 #-} -happyIn17 :: (Maybe (WarningText L)) -> (HappyAbsSyn ) -happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn17 #-} -happyOut17 :: (HappyAbsSyn ) -> (Maybe (WarningText L)) -happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut17 #-} -happyIn18 :: (([ImportDecl L],[Decl L],[S],L)) -> (HappyAbsSyn ) -happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn18 #-} -happyOut18 :: (HappyAbsSyn ) -> (([ImportDecl L],[Decl L],[S],L)) -happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut18 #-} -happyIn19 :: (([ImportDecl L],[Decl L],[S])) -> (HappyAbsSyn ) -happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn19 #-} -happyOut19 :: (HappyAbsSyn ) -> (([ImportDecl L],[Decl L],[S])) -happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut19 #-} -happyIn20 :: ([S]) -> (HappyAbsSyn ) -happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn20 #-} -happyOut20 :: (HappyAbsSyn ) -> ([S]) -happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut20 #-} -happyIn21 :: ([S]) -> (HappyAbsSyn ) -happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn21 #-} -happyOut21 :: (HappyAbsSyn ) -> ([S]) -happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut21 #-} -happyIn22 :: (Maybe (ExportSpecList L)) -> (HappyAbsSyn ) -happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn22 #-} -happyOut22 :: (HappyAbsSyn ) -> (Maybe (ExportSpecList L)) -happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut22 #-} -happyIn23 :: (ExportSpecList L) -> (HappyAbsSyn ) -happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn23 #-} -happyOut23 :: (HappyAbsSyn ) -> (ExportSpecList L) -happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut23 #-} -happyIn24 :: ([S]) -> (HappyAbsSyn ) -happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn24 #-} -happyOut24 :: (HappyAbsSyn ) -> ([S]) -happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut24 #-} -happyIn25 :: (([ExportSpec L],[S])) -> (HappyAbsSyn ) -happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn25 #-} -happyOut25 :: (HappyAbsSyn ) -> (([ExportSpec L],[S])) -happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut25 #-} -happyIn26 :: (ExportSpec L) -> (HappyAbsSyn ) -happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn26 #-} -happyOut26 :: (HappyAbsSyn ) -> (ExportSpec L) -happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut26 #-} -happyIn27 :: (([ImportDecl L],[S])) -> (HappyAbsSyn ) -happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn27 #-} -happyOut27 :: (HappyAbsSyn ) -> (([ImportDecl L],[S])) -happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut27 #-} -happyIn28 :: (ImportDecl L) -> (HappyAbsSyn ) -happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn28 #-} -happyOut28 :: (HappyAbsSyn ) -> (ImportDecl L) -happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut28 #-} -happyIn29 :: ((Bool,[S])) -> (HappyAbsSyn ) -happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn29 #-} -happyOut29 :: (HappyAbsSyn ) -> ((Bool,[S])) -happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut29 #-} -happyIn30 :: ((Bool,[S])) -> (HappyAbsSyn ) -happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn30 #-} -happyOut30 :: (HappyAbsSyn ) -> ((Bool,[S])) -happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut30 #-} -happyIn31 :: ((Maybe String,[S])) -> (HappyAbsSyn ) -happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn31 #-} -happyOut31 :: (HappyAbsSyn ) -> ((Maybe String,[S])) -happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut31 #-} -happyIn32 :: ((Maybe (ModuleName L),[S],Maybe L)) -> (HappyAbsSyn ) -happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn32 #-} -happyOut32 :: (HappyAbsSyn ) -> ((Maybe (ModuleName L),[S],Maybe L)) -happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut32 #-} -happyIn33 :: (Maybe (ImportSpecList L)) -> (HappyAbsSyn ) -happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn33 #-} -happyOut33 :: (HappyAbsSyn ) -> (Maybe (ImportSpecList L)) -happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut33 #-} -happyIn34 :: (ImportSpecList L) -> (HappyAbsSyn ) -happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn34 #-} -happyOut34 :: (HappyAbsSyn ) -> (ImportSpecList L) -happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut34 #-} -happyIn35 :: ((Bool, Maybe L,[S])) -> (HappyAbsSyn ) -happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn35 #-} -happyOut35 :: (HappyAbsSyn ) -> ((Bool, Maybe L,[S])) -happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut35 #-} -happyIn36 :: (([ImportSpec L],[S])) -> (HappyAbsSyn ) -happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn36 #-} -happyOut36 :: (HappyAbsSyn ) -> (([ImportSpec L],[S])) -happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut36 #-} -happyIn37 :: (ImportSpec L) -> (HappyAbsSyn ) -happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn37 #-} -happyOut37 :: (HappyAbsSyn ) -> (ImportSpec L) -happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut37 #-} -happyIn38 :: (([CName L],[S])) -> (HappyAbsSyn ) -happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn38 #-} -happyOut38 :: (HappyAbsSyn ) -> (([CName L],[S])) -happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut38 #-} -happyIn39 :: (CName L) -> (HappyAbsSyn ) -happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn39 #-} -happyOut39 :: (HappyAbsSyn ) -> (CName L) -happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut39 #-} -happyIn40 :: (Decl L) -> (HappyAbsSyn ) -happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn40 #-} -happyOut40 :: (HappyAbsSyn ) -> (Decl L) -happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut40 #-} -happyIn41 :: ((Maybe Int, [S])) -> (HappyAbsSyn ) -happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn41 #-} -happyOut41 :: (HappyAbsSyn ) -> ((Maybe Int, [S])) -happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut41 #-} -happyIn42 :: (Assoc L) -> (HappyAbsSyn ) -happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn42 #-} -happyOut42 :: (HappyAbsSyn ) -> (Assoc L) -happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut42 #-} -happyIn43 :: (([Op L],[S],L)) -> (HappyAbsSyn ) -happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn43 #-} -happyOut43 :: (HappyAbsSyn ) -> (([Op L],[S],L)) -happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut43 #-} -happyIn44 :: (([Decl L],[S])) -> (HappyAbsSyn ) -happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn44 #-} -happyOut44 :: (HappyAbsSyn ) -> (([Decl L],[S])) -happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut44 #-} -happyIn45 :: (([Decl L],[S])) -> (HappyAbsSyn ) -happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn45 #-} -happyOut45 :: (HappyAbsSyn ) -> (([Decl L],[S])) -happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut45 #-} -happyIn46 :: (Decl L) -> (HappyAbsSyn ) -happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn46 #-} -happyOut46 :: (HappyAbsSyn ) -> (Decl L) -happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut46 #-} -happyIn47 :: (DataOrNew L) -> (HappyAbsSyn ) -happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn47 #-} -happyOut47 :: (HappyAbsSyn ) -> (DataOrNew L) -happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut47 #-} -happyIn48 :: (([Type L],[S])) -> (HappyAbsSyn ) -happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn48 #-} -happyOut48 :: (HappyAbsSyn ) -> (([Type L],[S])) -happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut48 #-} -happyIn49 :: (([Decl L],[S])) -> (HappyAbsSyn ) -happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn49 #-} -happyOut49 :: (HappyAbsSyn ) -> (([Decl L],[S])) -happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut49 #-} -happyIn50 :: (([Decl L],[S])) -> (HappyAbsSyn ) -happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn50 #-} -happyOut50 :: (HappyAbsSyn ) -> (([Decl L],[S])) -happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut50 #-} -happyIn51 :: (Decl L) -> (HappyAbsSyn ) -happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn51 #-} -happyOut51 :: (HappyAbsSyn ) -> (Decl L) -happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut51 #-} -happyIn52 :: (Binds L) -> (HappyAbsSyn ) -happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn52 #-} -happyOut52 :: (HappyAbsSyn ) -> (Binds L) -happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut52 #-} -happyIn53 :: (Decl L) -> (HappyAbsSyn ) -happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn53 #-} -happyOut53 :: (HappyAbsSyn ) -> (Decl L) -happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut53 #-} -happyIn54 :: (([Type L],[S])) -> (HappyAbsSyn ) -happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn54 #-} -happyOut54 :: (HappyAbsSyn ) -> (([Type L],[S])) -happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut54 #-} -happyIn55 :: (Type L) -> (HappyAbsSyn ) -happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn55 #-} -happyOut55 :: (HappyAbsSyn ) -> (Type L) -happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut55 #-} -happyIn56 :: (Binds L) -> (HappyAbsSyn ) -happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn56 #-} -happyOut56 :: (HappyAbsSyn ) -> (Binds L) -happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut56 #-} -happyIn57 :: (([Name L],[S],L)) -> (HappyAbsSyn ) -happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn57 #-} -happyOut57 :: (HappyAbsSyn ) -> (([Name L],[S],L)) -happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut57 #-} -happyIn58 :: (CallConv L) -> (HappyAbsSyn ) -happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn58 #-} -happyOut58 :: (HappyAbsSyn ) -> (CallConv L) -happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut58 #-} -happyIn59 :: (Maybe (Safety L)) -> (HappyAbsSyn ) -happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn59 #-} -happyOut59 :: (HappyAbsSyn ) -> (Maybe (Safety L)) -happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut59 #-} -happyIn60 :: ((Maybe String, Name L, Type L, [S])) -> (HappyAbsSyn ) -happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn60 #-} -happyOut60 :: (HappyAbsSyn ) -> ((Maybe String, Name L, Type L, [S])) -happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut60 #-} -happyIn61 :: ([Rule L]) -> (HappyAbsSyn ) -happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn61 #-} -happyOut61 :: (HappyAbsSyn ) -> ([Rule L]) -happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut61 #-} -happyIn62 :: (Rule L) -> (HappyAbsSyn ) -happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn62 #-} -happyOut62 :: (HappyAbsSyn ) -> (Rule L) -happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut62 #-} -happyIn63 :: (Maybe (Activation L)) -> (HappyAbsSyn ) -happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn63 #-} -happyOut63 :: (HappyAbsSyn ) -> (Maybe (Activation L)) -happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut63 #-} -happyIn64 :: ((Maybe [RuleVar L],[S])) -> (HappyAbsSyn ) -happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn64 #-} -happyOut64 :: (HappyAbsSyn ) -> ((Maybe [RuleVar L],[S])) -happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut64 #-} -happyIn65 :: ([RuleVar L]) -> (HappyAbsSyn ) -happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn65 #-} -happyOut65 :: (HappyAbsSyn ) -> ([RuleVar L]) -happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut65 #-} -happyIn66 :: (RuleVar L) -> (HappyAbsSyn ) -happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn66 #-} -happyOut66 :: (HappyAbsSyn ) -> (RuleVar L) -happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut66 #-} -happyIn67 :: (([([Name L],String)],[S])) -> (HappyAbsSyn ) -happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn67 #-} -happyOut67 :: (HappyAbsSyn ) -> (([([Name L],String)],[S])) -happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut67 #-} -happyIn68 :: ((([Name L], String),[S])) -> (HappyAbsSyn ) -happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn68 #-} -happyOut68 :: (HappyAbsSyn ) -> ((([Name L], String),[S])) -happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut68 #-} -happyIn69 :: (([Name L],[S])) -> (HappyAbsSyn ) -happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn69 #-} -happyOut69 :: (HappyAbsSyn ) -> (([Name L],[S])) -happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut69 #-} -happyIn70 :: (Name L) -> (HappyAbsSyn ) -happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn70 #-} -happyOut70 :: (HappyAbsSyn ) -> (Name L) -happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut70 #-} -happyIn71 :: (Type L) -> (HappyAbsSyn ) -happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn71 #-} -happyOut71 :: (HappyAbsSyn ) -> (Type L) -happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut71 #-} -happyIn72 :: (PType L) -> (HappyAbsSyn ) -happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn72 #-} -happyOut72 :: (HappyAbsSyn ) -> (PType L) -happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut72 #-} -happyIn73 :: (Type L) -> (HappyAbsSyn ) -happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn73 #-} -happyOut73 :: (HappyAbsSyn ) -> (Type L) -happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut73 #-} -happyIn74 :: (PType L) -> (HappyAbsSyn ) -happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn74 #-} -happyOut74 :: (HappyAbsSyn ) -> (PType L) -happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut74 #-} -happyIn75 :: (Type L) -> (HappyAbsSyn ) -happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn75 #-} -happyOut75 :: (HappyAbsSyn ) -> (Type L) -happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut75 #-} -happyIn76 :: (PType L) -> (HappyAbsSyn ) -happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn76 #-} -happyOut76 :: (HappyAbsSyn ) -> (PType L) -happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut76 #-} -happyIn77 :: (Type L) -> (HappyAbsSyn ) -happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn77 #-} -happyOut77 :: (HappyAbsSyn ) -> (Type L) -happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut77 #-} -happyIn78 :: (PType L) -> (HappyAbsSyn ) -happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn78 #-} -happyOut78 :: (HappyAbsSyn ) -> (PType L) -happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut78 #-} -happyIn79 :: (QName L) -> (HappyAbsSyn ) -happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn79 #-} -happyOut79 :: (HappyAbsSyn ) -> (QName L) -happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut79 #-} -happyIn80 :: (QName L) -> (HappyAbsSyn ) -happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn80 #-} -happyOut80 :: (HappyAbsSyn ) -> (QName L) -happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut80 #-} -happyIn81 :: (QName L) -> (HappyAbsSyn ) -happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn81 #-} -happyOut81 :: (HappyAbsSyn ) -> (QName L) -happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut81 #-} -happyIn82 :: (Type L) -> (HappyAbsSyn ) -happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn82 #-} -happyOut82 :: (HappyAbsSyn ) -> (Type L) -happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut82 #-} -happyIn83 :: (PType L) -> (HappyAbsSyn ) -happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn83 #-} -happyOut83 :: (HappyAbsSyn ) -> (PType L) -happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut83 #-} -happyIn84 :: (PContext L) -> (HappyAbsSyn ) -happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn84 #-} -happyOut84 :: (HappyAbsSyn ) -> (PContext L) -happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut84 #-} -happyIn85 :: (([PType L],[S])) -> (HappyAbsSyn ) -happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn85 #-} -happyOut85 :: (HappyAbsSyn ) -> (([PType L],[S])) -happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut85 #-} -happyIn86 :: (([PType L],[S])) -> (HappyAbsSyn ) -happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn86 #-} -happyOut86 :: (HappyAbsSyn ) -> (([PType L],[S])) -happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut86 #-} -happyIn87 :: (([TyVarBind L],Maybe L)) -> (HappyAbsSyn ) -happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn87 #-} -happyOut87 :: (HappyAbsSyn ) -> (([TyVarBind L],Maybe L)) -happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut87 #-} -happyIn88 :: (TyVarBind L) -> (HappyAbsSyn ) -happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn88 #-} -happyOut88 :: (HappyAbsSyn ) -> (TyVarBind L) -happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut88 #-} -happyIn89 :: (([Name L],Maybe L)) -> (HappyAbsSyn ) -happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn89 #-} -happyOut89 :: (HappyAbsSyn ) -> (([Name L],Maybe L)) -happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut89 #-} -happyIn90 :: (([Name L],L)) -> (HappyAbsSyn ) -happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn90 #-} -happyOut90 :: (HappyAbsSyn ) -> (([Name L],L)) -happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut90 #-} -happyIn91 :: (([FunDep L],[S],Maybe L)) -> (HappyAbsSyn ) -happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn91 #-} -happyOut91 :: (HappyAbsSyn ) -> (([FunDep L],[S],Maybe L)) -happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut91 #-} -happyIn92 :: (([FunDep L],[S],L)) -> (HappyAbsSyn ) -happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn92 #-} -happyOut92 :: (HappyAbsSyn ) -> (([FunDep L],[S],L)) -happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut92 #-} -happyIn93 :: (FunDep L) -> (HappyAbsSyn ) -happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn93 #-} -happyOut93 :: (HappyAbsSyn ) -> (FunDep L) -happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut93 #-} -happyIn94 :: (([GadtDecl L],[S],L)) -> (HappyAbsSyn ) -happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn94 #-} -happyOut94 :: (HappyAbsSyn ) -> (([GadtDecl L],[S],L)) -happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut94 #-} -happyIn95 :: (([GadtDecl L],[S],L)) -> (HappyAbsSyn ) -happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn95 #-} -happyOut95 :: (HappyAbsSyn ) -> (([GadtDecl L],[S],L)) -happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut95 #-} -happyIn96 :: (([GadtDecl L],[S])) -> (HappyAbsSyn ) -happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn96 #-} -happyOut96 :: (HappyAbsSyn ) -> (([GadtDecl L],[S])) -happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut96 #-} -happyIn97 :: (([GadtDecl L],[S])) -> (HappyAbsSyn ) -happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn97 #-} -happyOut97 :: (HappyAbsSyn ) -> (([GadtDecl L],[S])) -happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut97 #-} -happyIn98 :: (GadtDecl L) -> (HappyAbsSyn ) -happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn98 #-} -happyOut98 :: (HappyAbsSyn ) -> (GadtDecl L) -happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut98 #-} -happyIn99 :: (([QualConDecl L],[S],Maybe L)) -> (HappyAbsSyn ) -happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn99 #-} -happyOut99 :: (HappyAbsSyn ) -> (([QualConDecl L],[S],Maybe L)) -happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut99 #-} -happyIn100 :: (([QualConDecl L],[S],L)) -> (HappyAbsSyn ) -happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn100 #-} -happyOut100 :: (HappyAbsSyn ) -> (([QualConDecl L],[S],L)) -happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut100 #-} -happyIn101 :: (QualConDecl L) -> (HappyAbsSyn ) -happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn101 #-} -happyOut101 :: (HappyAbsSyn ) -> (QualConDecl L) -happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut101 #-} -happyIn102 :: ((Maybe [TyVarBind L], [S], Maybe L)) -> (HappyAbsSyn ) -happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn102 #-} -happyOut102 :: (HappyAbsSyn ) -> ((Maybe [TyVarBind L], [S], Maybe L)) -happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut102 #-} -happyIn103 :: (ConDecl L) -> (HappyAbsSyn ) -happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn103 #-} -happyOut103 :: (HappyAbsSyn ) -> (ConDecl L) -happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut103 #-} -happyIn104 :: ((Name L, [BangType L], L)) -> (HappyAbsSyn ) -happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn104 #-} -happyOut104 :: (HappyAbsSyn ) -> ((Name L, [BangType L], L)) -happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut104 #-} -happyIn105 :: ((Name L, [BangType L],L)) -> (HappyAbsSyn ) -happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn105 #-} -happyOut105 :: (HappyAbsSyn ) -> ((Name L, [BangType L],L)) -happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut105 #-} -happyIn106 :: (BangType L) -> (HappyAbsSyn ) -happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn106 #-} -happyOut106 :: (HappyAbsSyn ) -> (BangType L) -happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut106 #-} -happyIn107 :: (BangType L) -> (HappyAbsSyn ) -happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn107 #-} -happyOut107 :: (HappyAbsSyn ) -> (BangType L) -happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut107 #-} -happyIn108 :: (([FieldDecl L],[S])) -> (HappyAbsSyn ) -happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn108 #-} -happyOut108 :: (HappyAbsSyn ) -> (([FieldDecl L],[S])) -happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut108 #-} -happyIn109 :: (FieldDecl L) -> (HappyAbsSyn ) -happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn109 #-} -happyOut109 :: (HappyAbsSyn ) -> (FieldDecl L) -happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut109 #-} -happyIn110 :: (BangType L) -> (HappyAbsSyn ) -happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn110 #-} -happyOut110 :: (HappyAbsSyn ) -> (BangType L) -happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut110 #-} -happyIn111 :: (Maybe (Deriving L)) -> (HappyAbsSyn ) -happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn111 #-} -happyOut111 :: (HappyAbsSyn ) -> (Maybe (Deriving L)) -happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut111 #-} -happyIn112 :: (([InstHead L],[S])) -> (HappyAbsSyn ) -happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn112 #-} -happyOut112 :: (HappyAbsSyn ) -> (([InstHead L],[S])) -happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut112 #-} -happyIn113 :: (QName L) -> (HappyAbsSyn ) -happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn113 #-} -happyOut113 :: (HappyAbsSyn ) -> (QName L) -happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut113 #-} -happyIn114 :: (Kind L) -> (HappyAbsSyn ) -happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn114 #-} -happyOut114 :: (HappyAbsSyn ) -> (Kind L) -happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut114 #-} -happyIn115 :: (Kind L) -> (HappyAbsSyn ) -happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn115 #-} -happyOut115 :: (HappyAbsSyn ) -> (Kind L) -happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut115 #-} -happyIn116 :: (Kind L) -> (HappyAbsSyn ) -happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn116 #-} -happyOut116 :: (HappyAbsSyn ) -> (Kind L) -happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut116 #-} -happyIn117 :: ((Maybe (Kind L), [S])) -> (HappyAbsSyn ) -happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn117 #-} -happyOut117 :: (HappyAbsSyn ) -> ((Maybe (Kind L), [S])) -happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut117 #-} -happyIn118 :: ((Maybe [ClassDecl L],[S],Maybe L)) -> (HappyAbsSyn ) -happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn118 #-} -happyOut118 :: (HappyAbsSyn ) -> ((Maybe [ClassDecl L],[S],Maybe L)) -happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut118 #-} -happyIn119 :: (([ClassDecl L],[S])) -> (HappyAbsSyn ) -happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn119 #-} -happyOut119 :: (HappyAbsSyn ) -> (([ClassDecl L],[S])) -happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut119 #-} -happyIn120 :: (([ClassDecl L],[S])) -> (HappyAbsSyn ) -happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn120 #-} -happyOut120 :: (HappyAbsSyn ) -> (([ClassDecl L],[S])) -happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut120 #-} -happyIn121 :: (ClassDecl L) -> (HappyAbsSyn ) -happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn121 #-} -happyOut121 :: (HappyAbsSyn ) -> (ClassDecl L) -happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut121 #-} -happyIn122 :: (ClassDecl L) -> (HappyAbsSyn ) -happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn122 #-} -happyOut122 :: (HappyAbsSyn ) -> (ClassDecl L) -happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut122 #-} -happyIn123 :: ((Maybe [InstDecl L],[S],Maybe L)) -> (HappyAbsSyn ) -happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn123 #-} -happyOut123 :: (HappyAbsSyn ) -> ((Maybe [InstDecl L],[S],Maybe L)) -happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut123 #-} -happyIn124 :: (([InstDecl L],[S])) -> (HappyAbsSyn ) -happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn124 #-} -happyOut124 :: (HappyAbsSyn ) -> (([InstDecl L],[S])) -happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut124 #-} -happyIn125 :: (([InstDecl L],[S])) -> (HappyAbsSyn ) -happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn125 #-} -happyOut125 :: (HappyAbsSyn ) -> (([InstDecl L],[S])) -happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut125 #-} -happyIn126 :: (InstDecl L) -> (HappyAbsSyn ) -happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn126 #-} -happyOut126 :: (HappyAbsSyn ) -> (InstDecl L) -happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut126 #-} -happyIn127 :: (InstDecl L) -> (HappyAbsSyn ) -happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn127 #-} -happyOut127 :: (HappyAbsSyn ) -> (InstDecl L) -happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut127 #-} -happyIn128 :: (InstDecl L) -> (HappyAbsSyn ) -happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn128 #-} -happyOut128 :: (HappyAbsSyn ) -> (InstDecl L) -happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut128 #-} -happyIn129 :: (Decl L) -> (HappyAbsSyn ) -happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn129 #-} -happyOut129 :: (HappyAbsSyn ) -> (Decl L) -happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut129 #-} -happyIn130 :: ((Maybe (Binds L),[S])) -> (HappyAbsSyn ) -happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn130 #-} -happyOut130 :: (HappyAbsSyn ) -> ((Maybe (Binds L),[S])) -happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut130 #-} -happyIn131 :: ((Maybe (Type L),[S])) -> (HappyAbsSyn ) -happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn131 #-} -happyOut131 :: (HappyAbsSyn ) -> ((Maybe (Type L),[S])) -happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut131 #-} -happyIn132 :: (Rhs L) -> (HappyAbsSyn ) -happyIn132 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn132 #-} -happyOut132 :: (HappyAbsSyn ) -> (Rhs L) -happyOut132 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut132 #-} -happyIn133 :: (([GuardedRhs L],L)) -> (HappyAbsSyn ) -happyIn133 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn133 #-} -happyOut133 :: (HappyAbsSyn ) -> (([GuardedRhs L],L)) -happyOut133 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut133 #-} -happyIn134 :: (GuardedRhs L) -> (HappyAbsSyn ) -happyIn134 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn134 #-} -happyOut134 :: (HappyAbsSyn ) -> (GuardedRhs L) -happyOut134 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut134 #-} -happyIn135 :: (Exp L) -> (HappyAbsSyn ) -happyIn135 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn135 #-} -happyOut135 :: (HappyAbsSyn ) -> (Exp L) -happyOut135 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut135 #-} -happyIn136 :: (PExp L) -> (HappyAbsSyn ) -happyIn136 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn136 #-} -happyOut136 :: (HappyAbsSyn ) -> (PExp L) -happyOut136 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut136 #-} -happyIn137 :: (PExp L) -> (HappyAbsSyn ) -happyIn137 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn137 #-} -happyOut137 :: (HappyAbsSyn ) -> (PExp L) -happyOut137 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut137 #-} -happyIn138 :: (PExp L) -> (HappyAbsSyn ) -happyIn138 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn138 #-} -happyOut138 :: (HappyAbsSyn ) -> (PExp L) -happyOut138 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut138 #-} -happyIn139 :: (PExp L) -> (HappyAbsSyn ) -happyIn139 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn139 #-} -happyOut139 :: (HappyAbsSyn ) -> (PExp L) -happyOut139 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut139 #-} -happyIn140 :: (PExp L) -> (HappyAbsSyn ) -happyIn140 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn140 #-} -happyOut140 :: (HappyAbsSyn ) -> (PExp L) -happyOut140 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut140 #-} -happyIn141 :: (PExp L) -> (HappyAbsSyn ) -happyIn141 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn141 #-} -happyOut141 :: (HappyAbsSyn ) -> (PExp L) -happyOut141 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut141 #-} -happyIn142 :: (PExp L) -> (HappyAbsSyn ) -happyIn142 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn142 #-} -happyOut142 :: (HappyAbsSyn ) -> (PExp L) -happyOut142 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut142 #-} -happyIn143 :: (PExp L) -> (HappyAbsSyn ) -happyIn143 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn143 #-} -happyOut143 :: (HappyAbsSyn ) -> (PExp L) -happyOut143 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut143 #-} -happyIn144 :: ([Pat L]) -> (HappyAbsSyn ) -happyIn144 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn144 #-} -happyOut144 :: (HappyAbsSyn ) -> ([Pat L]) -happyOut144 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut144 #-} -happyIn145 :: (Pat L) -> (HappyAbsSyn ) -happyIn145 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn145 #-} -happyOut145 :: (HappyAbsSyn ) -> (Pat L) -happyOut145 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut145 #-} -happyIn146 :: (PExp L) -> (HappyAbsSyn ) -happyIn146 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn146 #-} -happyOut146 :: (HappyAbsSyn ) -> (PExp L) -happyOut146 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut146 #-} -happyIn147 :: (PExp L) -> (HappyAbsSyn ) -happyIn147 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn147 #-} -happyOut147 :: (HappyAbsSyn ) -> (PExp L) -happyOut147 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut147 #-} -happyIn148 :: (PExp L) -> (HappyAbsSyn ) -happyIn148 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn148 #-} -happyOut148 :: (HappyAbsSyn ) -> (PExp L) -happyOut148 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut148 #-} -happyIn149 :: ([S]) -> (HappyAbsSyn ) -happyIn149 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn149 #-} -happyOut149 :: (HappyAbsSyn ) -> ([S]) -happyOut149 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut149 #-} -happyIn150 :: (PExp L) -> (HappyAbsSyn ) -happyIn150 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn150 #-} -happyOut150 :: (HappyAbsSyn ) -> (PExp L) -happyOut150 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut150 #-} -happyIn151 :: (([Maybe (PExp L)],[S])) -> (HappyAbsSyn ) -happyIn151 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn151 #-} -happyOut151 :: (HappyAbsSyn ) -> (([Maybe (PExp L)],[S])) -happyOut151 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut151 #-} -happyIn152 :: (([PExp L],[S])) -> (HappyAbsSyn ) -happyIn152 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn152 #-} -happyOut152 :: (HappyAbsSyn ) -> (([PExp L],[S])) -happyOut152 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut152 #-} -happyIn153 :: (PExp L) -> (HappyAbsSyn ) -happyIn153 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn153 #-} -happyOut153 :: (HappyAbsSyn ) -> (PExp L) -happyOut153 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut153 #-} -happyIn154 :: (PExp L) -> (HappyAbsSyn ) -happyIn154 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn154 #-} -happyOut154 :: (HappyAbsSyn ) -> (PExp L) -happyOut154 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut154 #-} -happyIn155 :: ([PExp L]) -> (HappyAbsSyn ) -happyIn155 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn155 #-} -happyOut155 :: (HappyAbsSyn ) -> ([PExp L]) -happyOut155 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut155 #-} -happyIn156 :: (PExp L) -> (HappyAbsSyn ) -happyIn156 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn156 #-} -happyOut156 :: (HappyAbsSyn ) -> (PExp L) -happyOut156 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut156 #-} -happyIn157 :: (XName L) -> (HappyAbsSyn ) -happyIn157 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn157 #-} -happyOut157 :: (HappyAbsSyn ) -> (XName L) -happyOut157 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut157 #-} -happyIn158 :: (Loc String) -> (HappyAbsSyn ) -happyIn158 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn158 #-} -happyOut158 :: (HappyAbsSyn ) -> (Loc String) -happyOut158 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut158 #-} -happyIn159 :: (Loc String) -> (HappyAbsSyn ) -happyIn159 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn159 #-} -happyOut159 :: (HappyAbsSyn ) -> (Loc String) -happyOut159 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut159 #-} -happyIn160 :: ([ParseXAttr L]) -> (HappyAbsSyn ) -happyIn160 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn160 #-} -happyOut160 :: (HappyAbsSyn ) -> ([ParseXAttr L]) -happyOut160 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut160 #-} -happyIn161 :: (ParseXAttr L) -> (HappyAbsSyn ) -happyIn161 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn161 #-} -happyOut161 :: (HappyAbsSyn ) -> (ParseXAttr L) -happyOut161 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut161 #-} -happyIn162 :: (Maybe (PExp L)) -> (HappyAbsSyn ) -happyIn162 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn162 #-} -happyOut162 :: (HappyAbsSyn ) -> (Maybe (PExp L)) -happyOut162 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut162 #-} -happyIn163 :: (L -> PExp L) -> (HappyAbsSyn ) -happyIn163 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn163 #-} -happyOut163 :: (HappyAbsSyn ) -> (L -> PExp L) -happyOut163 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut163 #-} -happyIn164 :: (([PExp L],[S])) -> (HappyAbsSyn ) -happyIn164 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn164 #-} -happyOut164 :: (HappyAbsSyn ) -> (([PExp L],[S])) -happyOut164 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut164 #-} -happyIn165 :: (([[QualStmt L]],[S])) -> (HappyAbsSyn ) -happyIn165 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn165 #-} -happyOut165 :: (HappyAbsSyn ) -> (([[QualStmt L]],[S])) -happyOut165 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut165 #-} -happyIn166 :: (([QualStmt L],[S])) -> (HappyAbsSyn ) -happyIn166 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn166 #-} -happyOut166 :: (HappyAbsSyn ) -> (([QualStmt L],[S])) -happyOut166 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut166 #-} -happyIn167 :: (QualStmt L) -> (HappyAbsSyn ) -happyIn167 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn167 #-} -happyOut167 :: (HappyAbsSyn ) -> (QualStmt L) -happyOut167 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut167 #-} -happyIn168 :: (QualStmt L) -> (HappyAbsSyn ) -happyIn168 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn168 #-} -happyOut168 :: (HappyAbsSyn ) -> (QualStmt L) -happyOut168 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut168 #-} -happyIn169 :: (([Stmt L],[S])) -> (HappyAbsSyn ) -happyIn169 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn169 #-} -happyOut169 :: (HappyAbsSyn ) -> (([Stmt L],[S])) -happyOut169 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut169 #-} -happyIn170 :: (Stmt L) -> (HappyAbsSyn ) -happyIn170 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn170 #-} -happyOut170 :: (HappyAbsSyn ) -> (Stmt L) -happyOut170 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut170 #-} -happyIn171 :: (([Alt L],L,[S])) -> (HappyAbsSyn ) -happyIn171 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn171 #-} -happyOut171 :: (HappyAbsSyn ) -> (([Alt L],L,[S])) -happyOut171 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut171 #-} -happyIn172 :: (([Alt L],[S])) -> (HappyAbsSyn ) -happyIn172 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn172 #-} -happyOut172 :: (HappyAbsSyn ) -> (([Alt L],[S])) -happyOut172 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut172 #-} -happyIn173 :: (([Alt L],[S])) -> (HappyAbsSyn ) -happyIn173 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn173 #-} -happyOut173 :: (HappyAbsSyn ) -> (([Alt L],[S])) -happyOut173 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut173 #-} -happyIn174 :: (Alt L) -> (HappyAbsSyn ) -happyIn174 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn174 #-} -happyOut174 :: (HappyAbsSyn ) -> (Alt L) -happyOut174 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut174 #-} -happyIn175 :: (GuardedAlts L) -> (HappyAbsSyn ) -happyIn175 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn175 #-} -happyOut175 :: (HappyAbsSyn ) -> (GuardedAlts L) -happyOut175 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut175 #-} -happyIn176 :: (([GuardedAlt L],L)) -> (HappyAbsSyn ) -happyIn176 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn176 #-} -happyOut176 :: (HappyAbsSyn ) -> (([GuardedAlt L],L)) -happyOut176 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut176 #-} -happyIn177 :: (GuardedAlt L) -> (HappyAbsSyn ) -happyIn177 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn177 #-} -happyOut177 :: (HappyAbsSyn ) -> (GuardedAlt L) -happyOut177 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut177 #-} -happyIn178 :: (Pat L) -> (HappyAbsSyn ) -happyIn178 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn178 #-} -happyOut178 :: (HappyAbsSyn ) -> (Pat L) -happyOut178 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut178 #-} -happyIn179 :: (([Stmt L],L,[S])) -> (HappyAbsSyn ) -happyIn179 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn179 #-} -happyOut179 :: (HappyAbsSyn ) -> (([Stmt L],L,[S])) -happyOut179 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut179 #-} -happyIn180 :: (([Stmt L],[S])) -> (HappyAbsSyn ) -happyIn180 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn180 #-} -happyOut180 :: (HappyAbsSyn ) -> (([Stmt L],[S])) -happyOut180 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut180 #-} -happyIn181 :: (([Stmt L],[S])) -> (HappyAbsSyn ) -happyIn181 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn181 #-} -happyOut181 :: (HappyAbsSyn ) -> (([Stmt L],[S])) -happyOut181 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut181 #-} -happyIn182 :: (Stmt L) -> (HappyAbsSyn ) -happyIn182 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn182 #-} -happyOut182 :: (HappyAbsSyn ) -> (Stmt L) -happyOut182 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut182 #-} -happyIn183 :: (([PFieldUpdate L],[S])) -> (HappyAbsSyn ) -happyIn183 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn183 #-} -happyOut183 :: (HappyAbsSyn ) -> (([PFieldUpdate L],[S])) -happyOut183 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut183 #-} -happyIn184 :: (PFieldUpdate L) -> (HappyAbsSyn ) -happyIn184 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn184 #-} -happyOut184 :: (HappyAbsSyn ) -> (PFieldUpdate L) -happyOut184 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut184 #-} -happyIn185 :: (([IPBind L],[S])) -> (HappyAbsSyn ) -happyIn185 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn185 #-} -happyOut185 :: (HappyAbsSyn ) -> (([IPBind L],[S])) -happyOut185 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut185 #-} -happyIn186 :: (([IPBind L],[S])) -> (HappyAbsSyn ) -happyIn186 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn186 #-} -happyOut186 :: (HappyAbsSyn ) -> (([IPBind L],[S])) -happyOut186 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut186 #-} -happyIn187 :: (IPBind L) -> (HappyAbsSyn ) -happyIn187 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn187 #-} -happyOut187 :: (HappyAbsSyn ) -> (IPBind L) -happyOut187 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut187 #-} -happyIn188 :: (PExp L) -> (HappyAbsSyn ) -happyIn188 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn188 #-} -happyOut188 :: (HappyAbsSyn ) -> (PExp L) -happyOut188 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut188 #-} -happyIn189 :: (Name L) -> (HappyAbsSyn ) -happyIn189 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn189 #-} -happyOut189 :: (HappyAbsSyn ) -> (Name L) -happyOut189 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut189 #-} -happyIn190 :: (Name L) -> (HappyAbsSyn ) -happyIn190 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn190 #-} -happyOut190 :: (HappyAbsSyn ) -> (Name L) -happyOut190 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut190 #-} -happyIn191 :: (QName L) -> (HappyAbsSyn ) -happyIn191 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn191 #-} -happyOut191 :: (HappyAbsSyn ) -> (QName L) -happyOut191 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut191 #-} -happyIn192 :: (IPName L) -> (HappyAbsSyn ) -happyIn192 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn192 #-} -happyOut192 :: (HappyAbsSyn ) -> (IPName L) -happyOut192 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut192 #-} -happyIn193 :: (Name L) -> (HappyAbsSyn ) -happyIn193 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn193 #-} -happyOut193 :: (HappyAbsSyn ) -> (Name L) -happyOut193 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut193 #-} -happyIn194 :: (QName L) -> (HappyAbsSyn ) -happyIn194 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn194 #-} -happyOut194 :: (HappyAbsSyn ) -> (QName L) -happyOut194 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut194 #-} -happyIn195 :: (Name L) -> (HappyAbsSyn ) -happyIn195 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn195 #-} -happyOut195 :: (HappyAbsSyn ) -> (Name L) -happyOut195 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut195 #-} -happyIn196 :: (QName L) -> (HappyAbsSyn ) -happyIn196 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn196 #-} -happyOut196 :: (HappyAbsSyn ) -> (QName L) -happyOut196 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut196 #-} -happyIn197 :: (QName L) -> (HappyAbsSyn ) -happyIn197 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn197 #-} -happyOut197 :: (HappyAbsSyn ) -> (QName L) -happyOut197 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut197 #-} -happyIn198 :: (Name L) -> (HappyAbsSyn ) -happyIn198 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn198 #-} -happyOut198 :: (HappyAbsSyn ) -> (Name L) -happyOut198 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut198 #-} -happyIn199 :: (QName L) -> (HappyAbsSyn ) -happyIn199 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn199 #-} -happyOut199 :: (HappyAbsSyn ) -> (QName L) -happyOut199 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut199 #-} -happyIn200 :: (Op L) -> (HappyAbsSyn ) -happyIn200 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn200 #-} -happyOut200 :: (HappyAbsSyn ) -> (Op L) -happyOut200 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut200 #-} -happyIn201 :: (QOp L) -> (HappyAbsSyn ) -happyIn201 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn201 #-} -happyOut201 :: (HappyAbsSyn ) -> (QOp L) -happyOut201 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut201 #-} -happyIn202 :: (QOp L) -> (HappyAbsSyn ) -happyIn202 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn202 #-} -happyOut202 :: (HappyAbsSyn ) -> (QOp L) -happyOut202 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut202 #-} -happyIn203 :: (QName L) -> (HappyAbsSyn ) -happyIn203 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn203 #-} -happyOut203 :: (HappyAbsSyn ) -> (QName L) -happyOut203 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut203 #-} -happyIn204 :: (QName L) -> (HappyAbsSyn ) -happyIn204 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn204 #-} -happyOut204 :: (HappyAbsSyn ) -> (QName L) -happyOut204 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut204 #-} -happyIn205 :: (Name L) -> (HappyAbsSyn ) -happyIn205 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn205 #-} -happyOut205 :: (HappyAbsSyn ) -> (Name L) -happyOut205 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut205 #-} -happyIn206 :: (Name L) -> (HappyAbsSyn ) -happyIn206 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn206 #-} -happyOut206 :: (HappyAbsSyn ) -> (Name L) -happyOut206 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut206 #-} -happyIn207 :: (IPName L) -> (HappyAbsSyn ) -happyIn207 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn207 #-} -happyOut207 :: (HappyAbsSyn ) -> (IPName L) -happyOut207 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut207 #-} -happyIn208 :: (QName L) -> (HappyAbsSyn ) -happyIn208 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn208 #-} -happyOut208 :: (HappyAbsSyn ) -> (QName L) -happyOut208 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut208 #-} -happyIn209 :: (Name L) -> (HappyAbsSyn ) -happyIn209 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn209 #-} -happyOut209 :: (HappyAbsSyn ) -> (Name L) -happyOut209 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut209 #-} -happyIn210 :: (QName L) -> (HappyAbsSyn ) -happyIn210 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn210 #-} -happyOut210 :: (HappyAbsSyn ) -> (QName L) -happyOut210 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut210 #-} -happyIn211 :: (Name L) -> (HappyAbsSyn ) -happyIn211 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn211 #-} -happyOut211 :: (HappyAbsSyn ) -> (Name L) -happyOut211 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut211 #-} -happyIn212 :: (QName L) -> (HappyAbsSyn ) -happyIn212 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn212 #-} -happyOut212 :: (HappyAbsSyn ) -> (QName L) -happyOut212 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut212 #-} -happyIn213 :: (QName L) -> (HappyAbsSyn ) -happyIn213 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn213 #-} -happyOut213 :: (HappyAbsSyn ) -> (QName L) -happyOut213 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut213 #-} -happyIn214 :: (Name L) -> (HappyAbsSyn ) -happyIn214 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn214 #-} -happyOut214 :: (HappyAbsSyn ) -> (Name L) -happyOut214 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut214 #-} -happyIn215 :: (Name L) -> (HappyAbsSyn ) -happyIn215 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn215 #-} -happyOut215 :: (HappyAbsSyn ) -> (Name L) -happyOut215 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut215 #-} -happyIn216 :: (QName L) -> (HappyAbsSyn ) -happyIn216 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn216 #-} -happyOut216 :: (HappyAbsSyn ) -> (QName L) -happyOut216 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut216 #-} -happyIn217 :: (Literal L) -> (HappyAbsSyn ) -happyIn217 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn217 #-} -happyOut217 :: (HappyAbsSyn ) -> (Literal L) -happyOut217 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut217 #-} -happyIn218 :: (S) -> (HappyAbsSyn ) -happyIn218 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn218 #-} -happyOut218 :: (HappyAbsSyn ) -> (S) -happyOut218 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut218 #-} -happyIn219 :: (S) -> (HappyAbsSyn ) -happyIn219 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn219 #-} -happyOut219 :: (HappyAbsSyn ) -> (S) -happyOut219 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut219 #-} -happyIn220 :: (ModuleName L) -> (HappyAbsSyn ) -happyIn220 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn220 #-} -happyOut220 :: (HappyAbsSyn ) -> (ModuleName L) -happyOut220 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut220 #-} -happyIn221 :: (Name L) -> (HappyAbsSyn ) -happyIn221 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn221 #-} -happyOut221 :: (HappyAbsSyn ) -> (Name L) -happyOut221 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut221 #-} -happyIn222 :: (QName L) -> (HappyAbsSyn ) -happyIn222 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn222 #-} -happyOut222 :: (HappyAbsSyn ) -> (QName L) -happyOut222 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut222 #-} -happyIn223 :: (Name L) -> (HappyAbsSyn ) -happyIn223 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn223 #-} -happyOut223 :: (HappyAbsSyn ) -> (Name L) -happyOut223 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut223 #-} -happyIn224 :: (QName L) -> (HappyAbsSyn ) -happyIn224 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn224 #-} -happyOut224 :: (HappyAbsSyn ) -> (QName L) -happyOut224 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut224 #-} -happyIn225 :: (Name L) -> (HappyAbsSyn ) -happyIn225 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn225 #-} -happyOut225 :: (HappyAbsSyn ) -> (Name L) -happyOut225 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut225 #-} -happyInTok :: (Loc Token) -> (HappyAbsSyn ) -happyInTok x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyInTok #-} -happyOutTok :: (HappyAbsSyn ) -> (Loc Token) -happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOutTok #-} - - -happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\x00\x00\x1f\x11\xa3\x10\x55\x0a\xa4\x19\x00\x00\x00\x00\xb2\x07\x5f\x02\xf6\x07\x00\x00\x00\x00\xcc\x18\x00\x00\x00\x00\x00\x00\x6f\x07\x00\x00\xa4\x19\xcb\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x18\x24\x19\x74\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x07\x6c\x07\x64\x19\x00\x00\x00\x00\x00\x00\x9d\x18\x00\x00\x41\x18\x00\x00\xd3\x07\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x0b\xbd\x01\x47\x0c\x00\x00\x41\x18\x41\x18\x41\x18\x1f\x11\x00\x00\x1f\x11\x1f\x11\x1f\x11\x8c\x19\x00\x00\xd9\x1a\xc1\x1a\x00\x00\xcd\x17\x1f\x11\x13\x00\x1f\x11\x8c\x19\x8c\x07\xd7\x07\x7e\x07\xc7\x07\x00\x00\x00\x00\x00\x00\x8c\x19\xc7\x07\x00\x00\xe4\x19\xbf\x07\xef\x1a\xbf\x07\xd4\x07\x36\x1b\x36\x1b\x00\x00\x00\x00\x00\x00\xe9\x1b\x00\x00\x00\x00\x6a\x07\xd5\x15\xa6\x17\x1f\x11\x1f\x11\xc5\x07\xd5\x15\xd2\x07\xd1\x07\xc2\x07\x57\x07\x00\x00\x57\x07\x11\x00\x00\x00\x00\x00\xbb\x07\x32\x17\x67\x07\x32\x05\xc4\x07\x5a\x07\x56\x07\xa2\x07\x00\x00\x0b\x17\x00\x00\x68\x07\x00\x00\x00\x00\x5e\x07\xb4\x07\x00\x00\x7f\x15\x00\x00\x00\x00\x00\x00\x1f\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x08\x00\x00\x00\x00\x8c\x19\x00\x00\x00\x00\x00\x00\x1f\x11\x1f\x11\x1f\x11\x1f\x11\x61\x00\x00\x00\xb6\x07\xa0\x07\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x04\x5f\x00\x24\x00\x00\x00\xa1\x07\x22\x1b\x3f\x00\x97\x07\x04\x02\x8c\x19\x22\x1b\x95\x07\x0c\x19\xcc\x19\xa9\x1a\x00\x00\x3f\x0d\x3f\x0d\x49\x07\x00\x00\x8c\x19\x8c\x19\x8c\x19\x90\x07\x4d\x07\xcf\x04\xcf\x04\x6d\x07\x00\x00\x81\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x07\xa0\x01\x7f\x07\x00\x00\x00\x00\x7e\x03\x55\x0a\x66\x07\x61\x07\x8a\x1b\x54\x07\x7d\x07\x64\x07\x47\x00\x9d\x04\x0b\x17\x00\x00\x58\x07\xd1\x01\x60\x07\x6b\x07\x00\x00\x00\x00\x1f\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x08\x00\x00\x00\x00\x00\x00\x9e\x01\x00\x00\x00\x00\x8a\x04\x4f\x0b\x8e\x01\x69\x07\x63\x07\x5d\x07\x5c\x07\x59\x07\x00\x00\x55\x07\x0b\x17\x4e\x07\x48\x07\xcc\x19\x0b\x17\x0b\x17\xab\x13\x00\x00\x59\x04\x15\x15\x22\x1b\x8c\x19\x2c\x00\x8c\x19\xeb\x08\x00\x00\xcd\x12\x3c\x07\x00\x00\x00\x00\x40\x01\xdc\x00\x00\x00\x3e\x01\x45\x07\x39\x07\x89\x01\x34\x07\x00\x00\x33\x07\xa9\x1a\x00\x00\x00\x00\xa9\x1a\x00\x00\xa9\x1a\x00\x00\x00\x00\x54\x1a\x8c\x19\xa9\x1a\x00\x00\x50\x00\x2c\x07\x00\x00\x00\x00\x00\x00\x42\x07\x00\x00\x13\x07\x00\x00\x23\x00\x21\x00\x1d\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x4c\x1a\x00\x00\x0a\x07\x08\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x19\x00\x00\x00\x00\x2b\x01\x00\x00\x00\x00\x8c\x19\x00\x00\x00\x00\x00\x00\x8c\x18\x8c\x19\xfd\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x1b\x2c\x00\xc0\x06\xad\x06\x2b\x01\xae\x06\xe4\x02\x81\x01\x00\x00\x00\x00\xa6\x06\xe1\x06\x00\x00\x1f\x11\x27\x10\xd8\x01\x00\x00\xdf\x06\x00\x00\x00\x00\x00\x00\x00\x00\xeb\x06\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x0a\x00\x00\x00\x00\x5c\x01\x00\x00\x1f\x11\x1f\x11\x00\x00\xd6\x06\x00\x00\xc3\x0c\x00\x00\xc3\x0c\x1f\x11\x37\x0e\x86\x06\x1f\x11\x00\x00\x27\x10\xbf\x14\x00\x00\x1f\x11\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\xde\x06\x97\x16\x4b\x14\x00\x00\x07\x07\x00\x00\x00\x00\xb3\x08\xcd\x06\x80\x06\x00\x00\xc1\x06\xce\x06\x00\x00\xbe\x06\x00\x00\x00\x00\x00\x00\xbf\x06\x00\x00\xb8\x06\xac\x06\xb7\x06\xb0\x06\x3f\x0d\xb4\x06\xb3\x06\x50\x00\x9f\x06\x00\x00\x98\x06\xa9\x1a\x8c\x19\x46\x06\x3d\x06\x8c\x19\x9b\x06\xaf\x06\x8f\x06\x54\x06\x9a\x06\x00\x00\x95\x1a\x00\x00\x91\x06\x8d\x06\x95\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7e\x06\x00\x00\x00\x00\x1f\x11\x00\x00\x1f\x11\x89\x12\x78\x06\x77\x06\x50\x00\x50\x00\x1f\x11\x00\x00\x1f\x11\x1f\x11\x1f\x11\x6a\x06\x5c\x04\x00\x00\x00\x00\x44\x06\x00\x00\x00\x00\x00\x00\x00\x00\x65\x06\x59\x09\x50\x00\x4b\x14\x3c\x06\x68\x06\x6d\x06\x61\x06\x63\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\x42\x06\x00\x00\x0c\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x11\x65\x1b\x8c\x19\x3f\x06\x00\x00\xda\x05\x33\x06\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x1a\x00\x00\x8c\x19\x00\x00\x00\x00\xf9\x05\x00\x00\x00\x00\x3f\x0d\x00\x00\x1f\x11\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x18\x26\x06\x30\x06\x00\x00\x00\x00\x2f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x23\x06\x00\x00\x28\x0b\x1a\x01\xb3\x08\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x06\x00\x00\x87\x04\x53\x04\x4d\x04\x1e\x04\xef\x03\xc5\x03\x8b\x03\x26\x03\x22\x03\x11\x03\x09\x03\xe9\x02\x00\x00\x55\x0a\x22\x06\x05\x06\x00\x00\x31\x00\x00\x00\x16\x06\x1a\x06\x00\x00\x00\x00\x1a\x06\x0b\x06\x0f\x06\x00\x00\x00\x00\x00\x00\xab\x0f\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x06\x00\x00\x00\x00\x00\x00\x45\x01\x00\x00\x00\x00\x1f\x11\x00\x00\x5e\x12\x3b\x00\x00\x00\x00\x00\x00\x00\x51\x1b\x8c\x19\x02\x06\x00\x00\xe1\x08\x00\x00\x00\x00\x00\x00\xfc\x05\x2b\x01\x00\x00\x00\x00\x08\x06\x00\x00\xfe\x01\xc7\x05\xab\x05\xf6\x05\xf4\x05\xeb\x08\x00\x00\xee\x05\x00\x00\xfd\x05\xf1\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x06\x0b\x00\x00\x00\x00\x00\x00\x00\x2b\x01\x00\x00\x00\x00\x00\x00\xea\x05\x00\x00\x00\x00\x00\x00\x4c\x19\xaa\x05\x00\x00\x00\x00\x00\x00\xec\x05\x2b\x01\xe8\x11\x00\x00\x2e\x08\xe1\x08\x00\x00\x00\x00\xda\x08\x53\x00\xdb\x05\xd7\x05\x96\x18\xa9\x1a\x6e\x05\x86\x05\x00\x00\x00\x00\x1a\x01\x2f\x0f\x1f\x11\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x11\x8b\x05\x08\x00\x37\x0e\x37\x0e\x00\x00\x7b\x05\x1f\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x16\x00\x00\xc2\x05\xae\x05\xa9\x1a\xbb\x0d\xb3\x05\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x18\x61\x13\xa4\x05\x50\x00\x00\x00\x00\x00\x00\x00\x8c\x19\x00\x00\x00\x00\x49\x05\xa6\x05\x4a\x1b\x00\x00\x33\x01\x93\x05\x1f\x11\x1f\x11\x55\x04\x9c\x05\xf5\x12\x9c\x05\x83\x05\x45\x05\x3d\x05\x38\x05\x00\x00\x24\x1a\x00\x00\xa9\x03\x00\x00\x00\x00\x00\x00\x00\x00\x35\x05\x00\x00\x36\x05\x1c\x05\xd7\x09\x7d\x05\x00\x00\x00\x00\x88\x05\x70\x05\x00\x00\x00\x00\x00\x00\x79\x05\x00\x00\xb8\x04\x00\x00\x00\x00\x00\x00\x82\x05\x00\x00\x00\x00\x58\x05\x00\x00\x00\x00\x1f\x11\x64\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x1b\x00\x00\xa9\x1a\x5d\x05\x00\x00\x00\x00\x9b\x11\x6d\x05\x50\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x02\x00\x00\xa9\x1a\x00\x00\x00\x00\x4e\x03\x00\x00\x59\x05\x00\x00\x1f\x11\x1f\x11\x1f\x11\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x05\x00\x00\x00\x00\x53\x05\x20\x14\x9a\x08\x63\x05\x00\x00\x00\x00\xa9\x1a\xdb\x04\x84\x08\x00\x00\xa9\x1a\xa9\x1a\xd3\x04\x00\x00\x00\x00\x00\x00\x29\x02\x34\x05\x50\x00\x00\x00\x33\x05\x3a\x05\x00\x00\xf9\x04\x30\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x05\x44\x00\x11\x05\x00\x00\x0c\x1a\x0f\x05\x00\x00\xa9\x1a\x00\x00\xe3\x00\xd9\x00\x00\x00\x00\x00\x0d\x05\xa9\x1a\x00\x00\x00\x00\xbc\x04\x00\x00\x00\x00\x00\x00\xfc\x15\x1f\x11\x00\x00\xab\x04\xfb\x04\x00\x00\x2f\x0f\x1f\x11\xb3\x0e\xfe\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x19\xcc\x19\x0a\x1b\xef\x04\x8c\x19\xd6\x13\xfa\x04\x2c\x00\x8c\x19\x00\x00\xe9\x04\x00\x00\xb2\x18\xf3\x04\x81\x1a\x00\x00\x1f\x03\x00\x00\x00\x00\x00\x00\xf7\x04\x00\x00\xb8\x04\x00\x00\xfc\x15\x00\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00\x00\x00\xed\x04\xf6\x04\xe0\x04\x98\x04\x7e\x04\x00\x00\x00\x00\x8c\x19\x67\x04\xbf\x04\xbb\x04\xb6\x04\xb6\x04\x12\x12\xc4\x04\x00\x00\x00\x00\x09\x01\x00\x00\x00\x00\x00\x00\xf1\xff\x8b\x04\x1f\x11\x00\x00\x00\x00\x0a\x1b\x44\x08\x69\x1a\x69\x1a\x8c\x19\xca\x01\xb0\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x1a\x35\x04\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x11\x00\x00\x00\x00\x00\x00\x8c\x19\x00\x00\x00\x00\x8e\x04\x00\x00\x00\x00\x1d\x04\x00\x00\x00\x00\x55\x15\x4a\x04\x41\x04\x2d\x00\xb8\x04\x00\x00\x00\x00\x1f\x11\x3e\x04\x00\x00\x00\x00\x5a\x04\x00\x00\x69\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x04\x00\x00\xea\x14\x00\x00\x52\x04\x51\x04\x00\x00\x00\x00\x00\x00\x57\x04\x1a\x08\x47\x04\x55\x15\x00\x00\x00\x00\x00\x00\x71\x00\x00\x00\x3b\x04\x00\x00\x00\x00\x00\x00"# - -happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\x01\x00\x38\x22\xb8\x24\x61\x02\xd6\x05\x03\x00\x02\x00\x4e\x04\x1b\x04\x00\x00\x00\x00\x00\x00\x37\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\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\xd6\x03\x88\x04\xea\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x03\x00\x00\x00\x00\x00\x00\x13\x04\x00\x00\xc4\x06\x00\x00\x00\x00\x00\x00\x7c\x08\x00\x00\x3b\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x22\xa1\x03\xa0\x22\x00\x00\x20\x2b\x04\x16\x0a\x2b\xa2\x24\x00\x00\xe5\x21\xcf\x21\x70\x29\xc3\x05\x56\x03\x98\x03\xce\x00\x00\x00\xa8\x06\xc8\x28\x00\x00\xb2\x28\xb1\x06\x00\x00\x00\x00\x00\x00\x90\xff\x00\x00\x00\x00\x00\x00\x9c\x06\x8e\xff\x00\x00\x61\x03\xee\x03\x9e\x02\xe4\x03\xb3\x03\x7a\x07\x1b\x03\x00\x00\x00\x00\x00\x00\x33\x09\x00\x00\x00\x00\x00\x00\x9f\x16\xef\x2a\x7c\x21\x60\x28\xf5\xff\xe4\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x02\x00\x00\x00\x00\xf9\xff\x9e\x06\xc6\x03\x3e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x2a\x00\x00\x00\x00\x1f\x00\x04\x00\x00\x00\x00\x00\x00\x00\x3a\x17\x00\x00\x00\x00\x00\x00\x86\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x02\x00\x00\x00\x00\xb0\x05\x00\x00\x00\x00\x00\x00\x4a\x28\xf8\x27\xe2\x27\x90\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x01\x00\x00\x00\x00\x00\x00\xcf\x03\x5d\x02\x00\x00\x00\x00\x85\x01\x88\x06\x0d\x02\x00\x00\x37\x07\x38\x04\x9f\x03\x00\x00\x4a\x1e\xf7\x1d\x8a\x03\x00\x00\x73\x06\x2a\x01\x60\x06\xb8\x03\x00\x00\xb0\x03\xa0\x03\x00\x00\x31\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\xff\x2c\x03\x00\x00\x00\x00\x00\x00\x34\x03\x24\x01\x00\x00\x00\x00\xb8\x08\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x05\xad\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x23\x16\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x16\x00\x00\x00\x00\x33\x03\x97\x2a\x7c\x2a\x19\x02\x00\x00\x95\x05\xce\x29\x5b\x00\x9d\x05\xd8\x00\x89\x05\xec\xff\x00\x00\x92\x00\x00\x00\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\x02\x00\x00\x00\x00\x9f\x01\x00\x00\xc9\x00\x00\x00\x00\x00\x32\x02\x4d\x06\x13\x05\x00\x00\xcc\x02\x00\x00\xd0\x03\xb5\x03\x86\x03\x06\x00\x71\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x06\x00\x00\x00\x00\x3e\x05\x00\x00\x00\x00\x27\x06\x00\x00\x00\x00\x00\x00\xf8\x00\xfe\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x01\xbe\x00\x35\x03\x00\x00\x2c\x05\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x03\x0d\x03\x00\x00\x66\x21\xa4\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x23\x00\x00\x00\x00\x9c\x01\x00\x00\x50\x24\x7a\x27\x00\x00\x00\x00\x00\x00\x10\x23\x00\x00\xbe\x22\x28\x27\x5f\x1b\x0c\x03\x12\x27\x00\x00\x51\x1d\x00\x00\x00\x00\x86\x29\x00\x00\x00\x00\xae\x02\x54\x03\x00\x00\x00\x00\xac\x02\x3a\x2a\x00\x00\x43\x03\x00\x00\x00\x00\x1b\x00\x79\xff\xfc\x02\xed\x03\xcf\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x02\x00\x00\x00\x00\x00\x00\x00\x00\x77\x02\xfe\x1c\xef\xff\x8a\xff\x47\x02\x00\x00\x00\x00\x95\x02\xcc\x04\x74\x05\x00\x00\x00\x00\xaa\x03\x00\x00\x00\x00\x00\x00\xc7\x02\xb8\x02\x00\x00\x05\x07\x00\x00\x00\x00\x00\x00\x3b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x26\x00\x00\xaa\x26\x95\x01\x00\x00\x00\x00\x12\x02\xf4\x01\x58\x26\x00\x00\x42\x26\xf0\x25\xda\x25\x00\x00\xb6\x02\x00\x00\x00\x00\x00\x00\x1b\x02\x00\x00\xb9\x04\x84\x04\x00\x00\x60\x00\xd6\x01\x24\x2a\x9a\x02\x27\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x03\x00\x00\xdd\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x29\x2f\x00\x8f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x01\x00\x00\x39\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x1c\x00\x00\x13\x21\x2a\x00\x25\x00\x00\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x01\x00\x00\x1a\x00\x09\x00\x00\x00\x00\x00\x00\x00\xd2\xff\xc1\x01\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xff\x00\x00\x00\x00\xde\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x00\x00\x00\x00\x00\x88\x25\x00\x00\xea\x01\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x26\x05\x00\x00\x00\x00\x0f\x07\x25\x02\x00\x00\x00\x00\x00\x00\x8a\x02\x00\x00\x00\x00\xdd\xff\x00\x00\xa9\xff\x23\x02\x00\x00\x00\x00\x00\x00\xb2\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\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x04\x00\x00\x00\x00\x00\x00\xd9\xff\x00\x00\x00\x00\x00\x00\x75\x04\x17\x02\x00\x00\x3d\x00\x36\x00\x00\x00\x86\x02\x92\x00\x00\x00\x0d\x01\x24\x07\x00\x00\x00\x00\x52\x07\x9b\xff\x00\x00\x00\x00\xc1\x03\x65\x07\x00\x00\x7e\x02\x00\x00\x00\x00\xa3\x01\x9d\x1e\xaa\x20\x00\x00\x00\x00\x00\x00\x00\x00\x72\x25\x00\x00\x00\x00\x05\x1c\xb2\x1b\x00\x00\x00\x00\x94\x20\x00\x00\x00\x00\x00\x00\xd0\x01\x00\x00\x55\x2a\x00\x00\x00\x00\x00\x00\x84\x03\xd2\x23\x00\x00\x7f\x01\x6d\x00\x30\x00\x88\x01\x6a\x02\x00\x00\xc8\x02\x00\x00\x7b\x01\x00\x00\x00\x00\x00\x00\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\xbf\x01\x00\x00\x20\x25\x41\x20\x7c\x00\x00\x00\x80\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\x00\x00\x00\x00\x53\x02\x00\x00\x00\x00\x26\x02\x00\x00\x18\x02\x00\x00\x76\x00\x00\x00\x8f\x01\x00\x00\x00\x00\x09\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x04\x3e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x08\x00\x00\xfd\x01\xc7\x01\x00\x00\x00\x00\x42\x01\x00\x00\x39\x01\x00\x00\x00\x00\x28\x02\x00\x00\x9c\x03\x00\x00\x3a\x01\x00\x00\x00\x00\x34\x01\x00\x00\x00\x00\x00\x00\xd8\x1f\xc2\x1f\x6f\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x00\xcd\x03\x25\x01\x00\x00\x00\x00\x5f\x07\x00\x00\x0d\x01\x00\x00\x25\x04\x4c\x07\x00\x00\x00\x00\x00\x00\x00\x00\x02\x01\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x01\x00\x00\x00\x00\x6f\x01\x00\x00\x00\x00\x0d\x01\x00\x00\x00\x00\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x03\x3a\x24\x00\x00\xf9\x00\xb0\x00\x00\x00\x58\x1c\x59\x1f\xe8\x23\x00\x00\x00\x00\x00\x00\x00\x00\x59\x01\x00\x00\x00\x00\xe9\x05\x57\x02\xcf\x01\x00\x00\xea\x04\xe6\x02\x00\x00\xea\xff\xd6\x04\x00\x00\x00\x00\x00\x00\x28\x00\x00\x00\x12\x00\x00\x00\x34\x01\x00\x00\x00\x00\x00\x00\x1b\x01\x00\x00\x4e\x00\x00\x00\xee\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xc2\x04\x00\x00\x00\x00\x00\x00\x5d\x00\x26\x00\xf0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x1f\x00\x00\x00\x00\x5f\x01\xeb\x03\x12\x06\x5f\x05\xaf\x04\xc9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x1e\x00\x00\x00\x00\x00\x00\x9c\x04\x00\x00\x00\x00\xd3\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x00\x00\x4f\x00\xe3\x02\x5a\xff\x00\x00\x00\x00\x0a\x25\xb1\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xff\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# - -happyDefActions :: HappyAddr -happyDefActions = HappyA# "\xbd\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbd\xfd\x00\x00\x00\x00\xf2\xff\x00\x00\x51\xff\x38\xff\x58\xff\x4e\xff\x4c\xff\x45\xff\x00\x00\x3b\xff\x00\x00\x00\x00\xe1\xfd\xb6\xfd\x01\xfe\x3e\xff\xdb\xfd\x4b\xff\xe8\xfd\xdd\xfd\xdc\xfd\xd9\xfd\xda\xfd\x00\x00\x00\x00\x00\x00\xe4\xfd\xe0\xfd\xdf\xfd\xde\xfd\xe3\xfd\xe2\xfd\xe7\xfd\x31\xff\xe5\xfd\xe6\xfd\x8a\xff\xb1\xff\x00\x00\x00\x00\x95\xff\x8b\xff\x89\xff\xd5\xfe\xc2\xfe\xb8\xfe\xb3\xfe\xab\xfe\xa7\xfe\x99\xfe\xa4\xfe\xa5\xfe\xa6\xfe\x08\xfe\x03\xfe\xea\xfd\xfe\xfd\xa3\xfe\xe9\xfd\xc7\xfd\xc5\xfd\xc6\xfd\xc4\xfd\xc3\xfd\xc2\xfd\xc1\xfd\xc0\xfd\xbf\xfd\xbe\xfd\x00\x00\x00\x00\x00\x00\x9d\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x98\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xbd\xfd\x00\x00\x00\x00\x8e\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\xff\x00\x00\x00\x00\xbd\xfd\xaf\xff\xae\xff\xad\xff\x00\x00\xbd\xfd\x93\xff\x00\x00\x6b\xff\x00\x00\x6b\xff\x6d\xff\x5f\xff\x5f\xff\x23\xfe\xcd\xfe\xc7\xfe\xc6\xfe\xc4\xfe\xbd\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\xfe\x00\x00\xe9\xff\xf9\xff\xf7\xff\xbd\xfd\x00\x00\xe9\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xfe\x00\x00\x7d\xff\x00\x00\xdd\xff\xdd\xff\x00\x00\x00\x00\x22\xfe\x00\x00\xb1\xfe\xf0\xfd\xef\xfd\xcc\xfe\xf4\xfd\xeb\xfd\xd8\xfd\xfa\xfd\xd5\xfd\xd4\xfd\xd1\xfd\xd6\xfd\xc8\xfd\xd7\xfd\x00\x00\xce\xfd\xec\xfd\x00\x00\xd0\xfd\xcf\xfd\xcd\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xff\x00\x00\x5d\xff\x5a\xff\x5b\xff\x07\xfe\x00\xfe\x00\x00\x00\x00\x00\x00\x6e\xff\x6b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xff\x00\x00\x00\x00\xb9\xfe\x1d\xfe\x1d\xfe\xe6\xfe\xba\xfe\x00\x00\x90\xff\x00\x00\x2b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x4b\xfe\x78\xfe\x74\xfe\x77\xfe\x76\xfe\x75\xfe\x70\xfe\x6f\xfe\x6e\xfe\x6d\xfe\x6c\xfe\x6b\xfe\x6a\xfe\x69\xfe\x68\xfe\x67\xfe\x72\xfe\x71\xfe\x66\xfe\x65\xfe\x64\xfe\x63\xfe\x62\xfe\x61\xfe\x60\xfe\x5f\xfe\x5e\xfe\x5d\xfe\x5c\xfe\x5b\xfe\x5a\xfe\x59\xfe\x58\xfe\x57\xfe\x56\xfe\x55\xfe\x54\xfe\x53\xfe\x52\xfe\x51\xfe\x50\xfe\x73\xfe\x4f\xfe\x4e\xfe\x4d\xfe\x8f\xfe\x90\xfe\x00\x00\x00\x00\x00\x00\x92\xfe\x91\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xc6\xfe\x00\x00\x00\x00\x84\xfe\x00\x00\x00\x00\xbb\xfe\xac\xfe\x8b\xfe\x47\xfe\x00\x00\x46\xfe\xee\xfd\xed\xfd\x00\x00\xf8\xfd\xd3\xfd\xd2\xfd\xcc\xfd\x0c\xfe\x00\x00\xca\xfd\xcb\xfd\xc9\xfd\x00\x00\x0a\xfe\x8c\xfe\x8b\xfe\x00\x00\x00\x00\x00\x00\xf4\xfd\x00\x00\xd2\xfd\xcc\xfd\x0d\xfe\xca\xfd\xd0\xfd\xcb\xfd\xc9\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xb4\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x1f\xff\x00\x00\x00\x00\xb0\xff\x00\x00\x00\x00\x42\xff\x34\xff\x00\x00\x00\x00\x40\xff\x34\xff\x00\x00\x00\x00\x00\x00\x00\x00\x44\xff\x00\x00\x00\x00\x39\xff\x4f\xff\x00\x00\x3c\xff\x00\x00\xb4\xfd\xb3\xfd\x00\x00\x00\x00\x00\x00\x37\xff\x00\x00\x00\x00\xdd\xff\xdd\xff\xdd\xff\x00\x00\xdd\xff\xec\xff\xde\xff\x00\x00\x00\x00\x00\x00\xf2\xff\xf4\xff\xbb\xfd\xbc\xfd\x54\xff\x55\xff\x00\x00\x00\x00\x56\xff\x57\xff\x52\xff\x43\xff\x3d\xff\x41\xff\x8d\xfe\x00\x00\x4a\xff\x47\xff\x00\x00\x3f\xff\x49\xff\x00\x00\x48\xff\x32\xff\x30\xff\x00\x00\x00\x00\xb2\xff\xf2\xfd\xf1\xfd\xab\xff\xf6\xfd\xfc\xfd\x00\x00\x1f\xff\x02\xff\x00\x00\x00\x00\x18\xff\x86\xff\x00\x00\x79\xff\xc3\xfe\xd7\xfe\xd3\xfe\xd1\xfe\x00\x00\x00\x00\x00\x00\x15\xfe\x13\xfe\xaa\xfe\x12\xfe\xad\xfe\xae\xfe\x00\x00\x53\xff\x02\xfe\xfd\xfd\x9c\xfe\x00\x00\xa1\xfe\xa2\xfe\x00\x00\x0b\xfe\x00\x00\x00\x00\x09\xfe\x00\x00\x8a\xfe\x00\x00\x9e\xfe\x00\x00\x45\xfe\x00\x00\xd7\xfe\x00\x00\x9b\xfe\x00\x00\x9b\xff\x96\xfe\x00\x00\x95\xfe\x94\xfe\x00\x00\xdd\xff\xa8\xff\x00\x00\x00\x00\x48\xfe\x7f\xfe\x73\xff\x78\xff\x77\xff\x00\x00\xbd\xfd\xf2\xfe\x2d\xff\xf6\xfe\x00\x00\x91\xff\x53\xff\x92\xff\x9d\xff\x9e\xff\xbd\xfd\x18\xfe\xcf\xfe\x00\x00\x00\x00\x1b\xfe\x1d\xfe\xbd\xfd\xbd\xfd\x00\x00\x00\x00\x59\xff\xf6\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\xff\x6f\xff\x98\xff\x61\xff\x97\xff\x00\x00\x00\x00\x00\x00\x5e\xff\x96\xff\xc8\xfe\xc9\xfe\xca\xfe\xcb\xfe\xce\xfe\x00\x00\xc5\xfe\xb2\xfe\x00\x00\x97\xfe\x00\x00\x8e\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xe6\xff\xba\xfd\xb9\xfd\x00\x00\x4b\xfe\xeb\xff\xdd\xff\xdd\xff\x00\x00\xe0\xff\x00\x00\x48\xfe\x00\x00\xdb\xff\x00\x00\x00\x00\x00\x00\xb6\xfe\xb7\xfe\xbe\xfe\xc0\xfe\x7b\xff\x87\xff\x7c\xff\x88\xff\xdd\xff\x8c\xff\xdd\xff\x0f\xfe\xa6\xfe\xdf\xff\x00\x00\xc1\xfe\xf9\xfd\x5c\xff\x06\xfe\xff\xfd\x62\xff\x70\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xff\x00\x00\x80\xff\x7e\xff\x81\xff\x84\xff\xa7\xff\x54\xff\xa6\xff\x00\x00\x20\xfe\x17\xfe\x1a\xfe\x1e\xfe\x1f\xfe\x1d\xfe\x21\xfe\x00\x00\xdd\xff\xdd\xff\x9c\xff\xa2\xff\x00\x00\x00\x00\x2a\xff\x28\xff\x9f\xff\xbd\xfd\xbc\xfe\xdd\xff\xdd\xff\x99\xff\x00\x00\x05\xfe\x00\x00\x00\x00\x00\x00\x76\xff\x75\xff\x74\xff\x49\xfe\x00\x00\x4c\xfe\x00\x00\xe8\xfd\xd9\xfd\xe4\xfd\xe0\xfd\xdf\xfd\xde\xfd\xe3\xfd\xe2\xfd\xe7\xfd\xe5\xfd\xe6\xfd\x79\xfe\xde\xff\xaa\xff\x00\x00\x30\xfe\x00\x00\x32\xfe\x00\x00\xbd\xfd\x85\xfe\xd9\xfe\xbd\xfd\x41\xfe\x3d\xfe\x3b\xfe\x3a\xfe\x39\xfe\x00\x00\x43\xfe\x8b\xfe\x3f\xfe\x40\xfe\xf7\xfd\x89\xfe\x82\xfe\x83\xfe\x9f\xfe\xa0\xfe\x00\x00\x86\xfe\xa8\xfe\x00\x00\xa9\xfe\x00\x00\x00\x00\xd4\xfe\xd2\xfe\xda\xfe\x00\x00\x00\x00\x1e\xff\x1c\xff\x00\x00\x31\xff\xf5\xfe\xfc\xfe\xfb\xfe\x00\x00\xf8\xfe\xf9\xfe\xbd\xfd\xa4\xff\x00\x00\x02\xff\x00\x00\x00\x00\x00\x00\x00\x00\x3a\xff\x00\x00\x33\xff\x00\x00\x35\xff\xb5\xfd\xf3\xfd\x36\xff\xf3\xff\xef\xff\xee\xff\xf0\xff\x00\x00\x00\x00\xf1\xff\xed\xff\x46\xff\x00\x00\xac\xff\xf5\xfd\xfb\xfd\xbd\xfd\xa1\xff\x01\xff\xfd\xfe\x00\x00\x02\xff\x26\xff\xdd\xff\xdd\xff\x00\x00\x00\x00\x00\x00\x0b\xff\x13\xff\x00\x00\x1a\xff\x17\xff\x12\xff\x00\x00\x00\x00\x3e\xff\x00\x00\x00\x00\x00\x00\x18\xff\x85\xff\x7a\xff\x00\x00\x00\x00\x00\x00\x16\xfe\x14\xfe\x88\xfe\x87\xfe\x44\xfe\x38\xfe\x00\x00\x00\x00\x00\x00\xd8\xfe\x2f\xfe\x00\x00\x9a\xfe\x93\xfe\xa9\xff\x7d\xfe\x80\xfe\x00\x00\x9a\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\xff\xdd\xff\x2d\xff\x2d\xff\x2c\xff\xe4\xfe\x00\x00\x00\x00\x19\xfe\x1c\xfe\xa5\xff\x00\x00\x83\xff\x69\xff\x00\x00\x00\x00\x66\xff\x64\xff\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\x11\xfe\xde\xff\x8f\xff\x00\x00\x00\x00\x00\x00\x00\x00\xdc\xff\xd7\xff\xf8\xff\x00\x00\xe4\xff\xdd\xff\xcd\xff\xe2\xff\xca\xff\xe5\xff\xc8\xff\x00\x00\xde\xff\xe1\xff\x7d\xfe\xf5\xff\x00\x00\xd7\xff\xd5\xff\xd4\xff\xb7\xfd\xd3\xff\xd8\xff\x00\x00\xea\xff\xe8\xff\xe7\xff\x00\x00\x8d\xff\x10\xfe\x00\x00\x0e\xfe\xbf\xfe\x00\x00\x00\x00\x65\xff\x67\xff\x82\xff\x7f\xff\xe7\xfe\xe8\xfe\x00\x00\xdd\xff\xe2\xfe\xdf\xfe\xe0\xfe\xe1\xfe\xd5\xfe\x94\xff\x00\x00\x6b\xff\x27\xff\x29\xff\xf0\xfe\x00\x00\x00\x00\x2d\xfe\x2e\xfe\xdd\xff\x2a\xfe\x00\x00\x71\xff\x00\x00\x04\xfe\x4a\xfe\x00\x00\x31\xfe\x3e\xfe\x3c\xfe\x00\x00\x00\x00\x00\x00\x42\xfe\xd0\xfe\x33\xfe\x1d\xff\x00\x00\x0a\xff\x4d\xff\x00\x00\x00\x00\x00\x00\x00\x00\x0e\xff\x0f\xff\x00\x00\x00\x00\x13\xff\x1b\xff\x00\x00\x00\x00\x00\x00\x19\xff\xfa\xfe\xf7\xfe\x00\x00\x00\x00\x00\x00\xa3\xff\xfe\xfe\x00\x00\x00\xff\x02\xff\x00\x00\x2f\xff\xa0\xff\xff\xfe\x24\xff\x25\xff\xdd\xff\x21\xff\x00\x00\x00\x00\x00\x00\x11\xff\x00\x00\x00\x00\x0d\xff\x50\xff\x16\xff\x00\x00\x00\x00\x07\xff\x15\xff\x3d\xff\x00\x00\x37\xfe\x35\xfe\x36\xfe\x7a\xfe\x7e\xfe\x7c\xfe\x00\x00\x00\x00\x72\xff\xd7\xfe\x27\xfe\x25\xfe\x00\x00\x00\x00\xde\xff\x2c\xfe\xf3\xfe\xf4\xfe\xed\xfe\xdd\xff\xee\xfe\xec\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\xe5\xfe\x1f\xff\x00\x00\x6c\xff\x00\x00\xcf\xff\x00\x00\x00\x00\xd8\xff\xd9\xff\x00\x00\xce\xff\xe3\xff\xcb\xff\xc6\xff\xc9\xff\x00\x00\xc7\xff\x00\x00\xd6\xff\xda\xff\x00\x00\xb5\xff\xb4\xff\xb3\xff\xd1\xff\x00\x00\x00\x00\x00\x00\x02\xff\x00\x00\xe3\xfe\xd6\xfe\x00\x00\x00\x00\x00\x00\x51\xff\xf6\xfe\xf6\xfe\xde\xff\xf1\xfe\x2b\xfe\x28\xfe\x00\x00\x26\xfe\x29\xfe\x84\xfe\x00\x00\x00\x00\x00\x00\x09\xff\x14\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\x23\xff\x22\xff\x20\xff\x10\xff\x0c\xff\x05\xff\x06\xff\x00\x00\x00\x00\x08\xff\x34\xfe\x81\xfe\x7b\xfe\x00\x00\xef\xfe\xe9\xfe\xeb\xfe\x00\x00\xde\xfe\xdd\xfe\xbd\xfd\xdc\xfe\x63\xff\x00\x00\xd2\xff\xd0\xff\x00\x00\x00\x00\xc4\xff\xc2\xff\x00\x00\xf6\xff\xb6\xff\x00\x00\x02\xff\xea\xfe\x24\xfe\x00\x00\x04\xff\x00\x00\xdb\xfe\xb5\xfe\xc5\xff\xcc\xff\xc3\xff\x00\x00\xbf\xff\xd7\xff\x03\xff\x00\x00\xd7\xff\xbc\xff\xbb\xff\xb8\xfd\xba\xff\x00\x00\x00\x00\xd8\xff\xc0\xff\xbd\xff\xc1\xff\x00\x00\xb8\xff\x00\x00\xb9\xff\xb7\xff"# - -happyCheck :: HappyAddr -happyCheck = HappyA# "\xff\xff\x00\x00\x09\x00\x02\x00\x02\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x2b\x00\x05\x00\x05\x00\x0f\x00\x2f\x00\x22\x00\x0b\x00\x0c\x00\x68\x00\x2b\x00\x22\x00\x0b\x00\x0c\x00\x2f\x00\x66\x00\x1b\x00\x1c\x00\x2b\x00\xa2\x00\x1d\x00\x1e\x00\x2f\x00\x0f\x00\x2b\x00\x33\x00\x59\x00\x11\x00\x2f\x00\x0b\x00\x0c\x00\x1c\x00\x55\x00\x56\x00\x0b\x00\x0c\x00\x28\x00\xd3\x00\x55\x00\x56\x00\x0b\x00\x0c\x00\x55\x00\x56\x00\xaa\x00\x0b\x00\x0c\x00\x8c\x00\xaa\x00\x1c\x00\xaa\x00\x0b\x00\x0c\x00\x1c\x00\x4d\x00\x1c\x00\x1c\x00\x0b\x00\x0c\x00\x16\x00\x5a\x00\x1d\x00\x1e\x00\x28\x00\x0b\x00\x0c\x00\xd1\x00\x0c\x00\x1a\x00\x09\x00\x33\x00\x0b\x00\x00\x00\x38\x00\x39\x00\x22\x00\x28\x00\x29\x00\x6c\x00\x46\x00\xbd\x00\x48\x00\x1c\x00\xd1\x00\x09\x00\x22\x00\x56\x00\xd1\x00\x2e\x00\xd1\x00\x4f\x00\x1e\x00\x29\x00\xca\x00\x17\x00\x38\x00\x39\x00\x22\x00\x39\x00\x27\x00\x3a\x00\xc2\x00\x2f\x00\x1f\x00\xc7\x00\xc8\x00\x12\x00\x13\x00\xc9\x00\xca\x00\x63\x00\x24\x00\x0b\x00\x0c\x00\x72\x00\x1c\x00\x6b\x00\x1c\x00\x66\x00\x1f\x00\x39\x00\x21\x00\xb9\x00\x23\x00\x24\x00\x25\x00\x26\x00\xb5\x00\x17\x00\x13\x00\x2a\x00\x30\x00\x2c\x00\x57\x00\x61\x00\x84\x00\xc7\x00\xc8\x00\x6c\x00\x22\x00\x57\x00\x1f\x00\xc4\x00\x21\x00\x73\x00\x23\x00\x24\x00\x25\x00\x26\x00\x73\x00\x6e\x00\x73\x00\x2a\x00\x84\x00\x2c\x00\xb5\x00\xd1\x00\x84\x00\xba\x00\x84\x00\x84\x00\xbd\x00\xd1\x00\xbf\x00\xa3\x00\xb6\x00\xd1\x00\xd1\x00\xb9\x00\xb4\x00\xc4\x00\xb4\x00\xb0\x00\xb8\x00\xca\x00\xb8\x00\xd1\x00\xcd\x00\xc3\x00\xc4\x00\xc5\x00\xa3\x00\xc7\x00\xc8\x00\xd1\x00\xc4\x00\xc5\x00\xc4\x00\xc5\x00\xc8\x00\xd1\x00\xc8\x00\xb6\x00\x6c\x00\xd1\x00\xb9\x00\xd5\x00\xc8\x00\xc8\x00\xb0\x00\xb5\x00\xd4\x00\xd1\x00\xd1\x00\xd1\x00\xc3\x00\xc4\x00\xc5\x00\x78\x00\xc7\x00\xc8\x00\x6e\x00\xb4\x00\xc4\x00\xc5\x00\xc4\x00\xb8\x00\x4f\x00\x82\x00\x84\x00\x84\x00\x84\x00\x86\x00\xd5\x00\x26\x00\x89\x00\x8a\x00\x8b\x00\xc4\x00\xc5\x00\x78\x00\x2d\x00\xc8\x00\x91\x00\xb4\x00\xc4\x00\xc5\x00\x19\x00\xb8\x00\x1e\x00\x82\x00\xb4\x00\x84\x00\x22\x00\x86\x00\xb8\x00\x22\x00\x89\x00\x8a\x00\x8b\x00\xc4\x00\xc5\x00\x30\x00\x22\x00\xc8\x00\x91\x00\x3f\x00\xc4\x00\xc5\x00\x28\x00\x43\x00\xc8\x00\x45\x00\x46\x00\x47\x00\xb6\x00\xd4\x00\xb3\x00\x46\x00\x47\x00\xb6\x00\xb7\x00\x5a\x00\xb9\x00\x44\x00\x45\x00\x46\x00\x47\x00\xc3\x00\xc4\x00\xc5\x00\xd3\x00\x08\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\x6c\x00\x22\x00\xb6\x00\xb7\x00\xb2\x00\xb9\x00\xd0\x00\x16\x00\x5a\x00\xb7\x00\x01\x00\x17\x00\x2d\x00\x63\x00\x64\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x25\x00\x22\x00\x16\x00\xc6\x00\x1f\x00\x6c\x00\x21\x00\xd0\x00\x23\x00\x24\x00\x25\x00\x26\x00\x31\x00\x32\x00\x33\x00\x2a\x00\xb4\x00\x2c\x00\x27\x00\x45\x00\x46\x00\x47\x00\x17\x00\xc4\x00\xc5\x00\xa8\x00\x19\x00\x58\x00\x59\x00\x17\x00\x32\x00\x33\x00\xc4\x00\xc5\x00\x1f\x00\x22\x00\x21\x00\x0b\x00\x0c\x00\x28\x00\x22\x00\xd6\x00\x3f\x00\x40\x00\x41\x00\x2a\x00\x43\x00\x2c\x00\x45\x00\x46\x00\x47\x00\x79\x00\x17\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x3e\x00\x3f\x00\xc4\x00\xc5\x00\x66\x00\x43\x00\x22\x00\x45\x00\x46\x00\x47\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x8c\x00\xb6\x00\x8e\x00\xd6\x00\xc4\x00\xc5\x00\x30\x00\xc7\x00\xc8\x00\xc4\x00\xc5\x00\x61\x00\xc7\x00\xc8\x00\xc3\x00\xc4\x00\xc5\x00\xc4\x00\xc5\x00\x78\x00\xc7\x00\xc8\x00\xd6\x00\x17\x00\x0b\x00\x0c\x00\x22\x00\xd6\x00\x17\x00\x82\x00\x74\x00\x84\x00\x28\x00\x86\x00\x22\x00\xd6\x00\x89\x00\x8a\x00\x8b\x00\x22\x00\x6f\x00\x70\x00\x71\x00\x1f\x00\x91\x00\x21\x00\x19\x00\xd2\x00\x19\x00\x78\x00\xb9\x00\xc4\x00\xc5\x00\x29\x00\x2a\x00\x22\x00\x2c\x00\x22\x00\x64\x00\x82\x00\x91\x00\x84\x00\x93\x00\x86\x00\xc7\x00\xc8\x00\x89\x00\x8a\x00\x8b\x00\xd6\x00\x05\x00\x06\x00\xc4\x00\xc5\x00\x91\x00\xc7\x00\xc8\x00\x19\x00\xb3\x00\x50\x00\x51\x00\xb6\x00\xb7\x00\x54\x00\xb9\x00\x3f\x00\x22\x00\x16\x00\xb7\x00\x43\x00\xd6\x00\x45\x00\x46\x00\x47\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc8\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x22\x00\xd0\x00\xb3\x00\x1e\x00\x26\x00\xb6\x00\xb7\x00\x22\x00\xb9\x00\x2b\x00\x36\x00\xc4\x00\xc5\x00\xd6\x00\xc7\x00\xc8\x00\x05\x00\x06\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xd2\x00\x08\x00\x78\x00\x0a\x00\x1f\x00\xd6\x00\x21\x00\xd0\x00\xca\x00\x16\x00\xb6\x00\xcd\x00\x82\x00\x0f\x00\x84\x00\x2a\x00\x86\x00\x2c\x00\xd3\x00\x89\x00\x8a\x00\x8b\x00\x92\x00\xc3\x00\xc4\x00\xc5\x00\x1f\x00\x91\x00\x21\x00\x8c\x00\x25\x00\x8e\x00\x25\x00\x26\x00\x15\x00\x05\x00\x06\x00\x2a\x00\xc2\x00\x2c\x00\x0b\x00\x0c\x00\x31\x00\x32\x00\x33\x00\xc9\x00\xca\x00\x14\x00\x3e\x00\x3f\x00\xc4\x00\xc5\x00\x16\x00\x43\x00\xc8\x00\x45\x00\x46\x00\x47\x00\x1c\x00\xb1\x00\xb2\x00\xb3\x00\x0b\x00\x0c\x00\xb6\x00\xb7\x00\xd2\x00\xb9\x00\x3f\x00\xcb\x00\xd2\x00\xcd\x00\x43\x00\xcf\x00\x45\x00\x46\x00\x47\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x0b\x00\x0c\x00\x70\x00\x71\x00\x92\x00\xc4\x00\xc5\x00\xd0\x00\xc7\x00\xc8\x00\x78\x00\xc3\x00\xc4\x00\xc5\x00\xba\x00\xc7\x00\xc8\x00\xbd\x00\xcd\x00\xbf\x00\x82\x00\x4e\x00\x84\x00\xd6\x00\x86\x00\x3c\x00\x3d\x00\x89\x00\x8a\x00\x8b\x00\xca\x00\x66\x00\x78\x00\xcd\x00\x1f\x00\x91\x00\x21\x00\xc4\x00\xc5\x00\xb6\x00\x25\x00\x26\x00\x82\x00\x66\x00\x84\x00\x2a\x00\x86\x00\x2c\x00\xcd\x00\x89\x00\x8a\x00\x8b\x00\xc3\x00\xc4\x00\xc5\x00\x3e\x00\x3f\x00\x91\x00\x41\x00\xaf\x00\x43\x00\x01\x00\x45\x00\x46\x00\x47\x00\x1f\x00\xb6\x00\x21\x00\x8c\x00\xb3\x00\x8e\x00\xd1\x00\xb6\x00\xb7\x00\xd2\x00\xb9\x00\x2a\x00\x01\x00\x2c\x00\xc3\x00\xc4\x00\xc5\x00\x06\x00\x07\x00\x97\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\x50\x00\x51\x00\xb6\x00\xb7\x00\x08\x00\xb9\x00\xd0\x00\xc4\x00\xc5\x00\xb6\x00\xc7\x00\xc8\x00\xd2\x00\xae\x00\xaf\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb6\x00\xc3\x00\xc4\x00\xc5\x00\xd6\x00\xc4\x00\xc5\x00\xd0\x00\xc7\x00\xc8\x00\x78\x00\x5c\x00\x5d\x00\xc3\x00\xc4\x00\xc5\x00\x80\x00\x81\x00\x82\x00\x83\x00\x82\x00\xd2\x00\x84\x00\xd6\x00\x86\x00\x0b\x00\x0c\x00\x89\x00\x8a\x00\x8b\x00\x35\x00\x26\x00\xb4\x00\x6a\x00\x6b\x00\x91\x00\xb8\x00\x6a\x00\x6b\x00\xc4\x00\xc5\x00\x78\x00\xc7\x00\xc8\x00\x18\x00\x19\x00\x1a\x00\x37\x00\xc4\x00\xc5\x00\x6c\x00\x82\x00\xc8\x00\x84\x00\x2b\x00\x86\x00\x2d\x00\xd6\x00\x89\x00\x8a\x00\x8b\x00\x26\x00\x29\x00\xb7\x00\x2b\x00\x27\x00\x91\x00\x29\x00\xb6\x00\xb3\x00\x0b\x00\x0c\x00\xb6\x00\xb7\x00\xd2\x00\xb9\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc3\x00\xc4\x00\xc5\x00\xac\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc3\x00\xc4\x00\xc5\x00\xd6\x00\xc7\x00\xc8\x00\x27\x00\xd0\x00\x29\x00\xb3\x00\x0d\x00\x0e\x00\xb6\x00\xb7\x00\x27\x00\xb9\x00\x29\x00\x6c\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x95\x00\x96\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x27\x00\x82\x00\x29\x00\x84\x00\x27\x00\x86\x00\x29\x00\xd0\x00\x89\x00\x8a\x00\x8b\x00\xb6\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x91\x00\xd1\x00\x75\x00\x76\x00\x77\x00\x78\x00\x0b\x00\x0c\x00\xc3\x00\xc4\x00\xc5\x00\x45\x00\x46\x00\x47\x00\x48\x00\x82\x00\x6d\x00\x84\x00\x4c\x00\x86\x00\x03\x00\x04\x00\x89\x00\x8a\x00\x8b\x00\x3f\x00\x40\x00\x41\x00\x32\x00\x43\x00\x91\x00\x45\x00\x46\x00\x47\x00\xb3\x00\x0b\x00\x0c\x00\xb6\x00\xb7\x00\xd2\x00\xb9\x00\x94\x00\x95\x00\x96\x00\x79\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x7d\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x0b\x00\x0c\x00\x45\x00\x46\x00\x47\x00\x48\x00\x79\x00\xd0\x00\xb3\x00\x4c\x00\x66\x00\xb6\x00\xb7\x00\xd2\x00\xb9\x00\x3f\x00\x2d\x00\x2e\x00\x25\x00\x43\x00\x27\x00\x45\x00\x46\x00\x47\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x31\x00\x32\x00\x33\x00\x27\x00\x3f\x00\x29\x00\x41\x00\xd0\x00\x43\x00\x8c\x00\x45\x00\x46\x00\x47\x00\x2d\x00\x2e\x00\x4a\x00\x4b\x00\x0b\x00\x0c\x00\x3e\x00\x3f\x00\x94\x00\x95\x00\x96\x00\x43\x00\x97\x00\x45\x00\x46\x00\x47\x00\x06\x00\x07\x00\x3f\x00\xb4\x00\x41\x00\x31\x00\x43\x00\xb8\x00\x45\x00\x46\x00\x47\x00\x2d\x00\x2e\x00\x4a\x00\x4b\x00\x0b\x00\x0c\x00\x3e\x00\x3f\x00\xc4\x00\xc5\x00\x31\x00\x43\x00\xc8\x00\x45\x00\x46\x00\x47\x00\x34\x00\x35\x00\x3f\x00\xb7\x00\x41\x00\x27\x00\x43\x00\x29\x00\x45\x00\x46\x00\x47\x00\x49\x00\x4a\x00\x4a\x00\x4b\x00\xc2\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x72\x00\xc9\x00\xca\x00\xcb\x00\x3f\x00\xcd\x00\x41\x00\xcf\x00\x43\x00\x36\x00\x45\x00\x46\x00\x47\x00\xd6\x00\x52\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x42\x00\x43\x00\xd3\x00\x45\x00\x46\x00\x47\x00\x3f\x00\x27\x00\x41\x00\x29\x00\x43\x00\x36\x00\x45\x00\x46\x00\x47\x00\x03\x00\x04\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x36\x00\xc4\x00\xc5\x00\xd1\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x8c\x00\x43\x00\x62\x00\x45\x00\x46\x00\x47\x00\x20\x00\x49\x00\x4a\x00\x4b\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x50\x00\x51\x00\x4e\x00\x53\x00\x54\x00\xa6\x00\xa7\x00\xa8\x00\x27\x00\xb7\x00\x29\x00\xc4\x00\xc5\x00\xd6\x00\xc7\x00\xc8\x00\x8c\x00\xb6\x00\x01\x00\x65\x00\xb9\x00\x17\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x03\x00\x04\x00\xd6\x00\xc3\x00\xc4\x00\xc5\x00\x17\x00\xc7\x00\xc8\x00\xb7\x00\x8c\x00\xc4\x00\xc5\x00\xd6\x00\xc7\x00\xc8\x00\x43\x00\x17\x00\x45\x00\x46\x00\x47\x00\x16\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x22\x00\x27\x00\xd6\x00\x29\x00\x3f\x00\xb7\x00\x41\x00\x27\x00\x43\x00\x29\x00\x45\x00\x46\x00\x47\x00\xd6\x00\x16\x00\x29\x00\xc2\x00\x2b\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x32\x00\xb7\x00\x0a\x00\x0b\x00\x0c\x00\xc4\x00\xc5\x00\x49\x00\xc7\x00\xc8\x00\x55\x00\xd6\x00\xc2\x00\x5b\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x84\x00\xb7\x00\xd6\x00\x44\x00\x45\x00\x46\x00\x47\x00\x69\x00\x6a\x00\x6b\x00\x1d\x00\xd6\x00\x08\x00\x09\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\x2b\x00\x41\x00\x2d\x00\x43\x00\x84\x00\x45\x00\x46\x00\x47\x00\x05\x00\x06\x00\x4a\x00\x4b\x00\xd6\x00\x4d\x00\x0a\x00\x0b\x00\x0c\x00\x29\x00\x3f\x00\x2b\x00\x41\x00\x25\x00\x43\x00\x1c\x00\x45\x00\x46\x00\x47\x00\x49\x00\x4a\x00\x4a\x00\x4b\x00\x49\x00\x4d\x00\x31\x00\x32\x00\x33\x00\x7d\x00\x7e\x00\x3f\x00\x67\x00\x41\x00\x28\x00\x43\x00\x1c\x00\x45\x00\x46\x00\x47\x00\x29\x00\x49\x00\x4a\x00\x4b\x00\x29\x00\xc4\x00\xc5\x00\x84\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x73\x00\x43\x00\x5b\x00\x45\x00\x46\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\x0c\x00\x41\x00\x17\x00\x43\x00\x0f\x00\x45\x00\x46\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\xd6\x00\x43\x00\x27\x00\x45\x00\x46\x00\x47\x00\x8c\x00\x3f\x00\x1c\x00\x41\x00\x29\x00\x43\x00\x1c\x00\x45\x00\x46\x00\x47\x00\x73\x00\x49\x00\x4a\x00\x4b\x00\x53\x00\x54\x00\xc4\x00\xc5\x00\x2b\x00\xc7\x00\xc8\x00\x3f\x00\x1d\x00\x41\x00\xb7\x00\x43\x00\x72\x00\x45\x00\x46\x00\x47\x00\x28\x00\x49\x00\x4a\x00\x4b\x00\xd6\x00\x05\x00\x06\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x32\x00\x43\x00\x32\x00\x45\x00\x46\x00\x47\x00\x17\x00\x49\x00\x4a\x00\x4b\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x17\x00\x1e\x00\xb7\x00\x5b\x00\x22\x00\x43\x00\x84\x00\x45\x00\x46\x00\x47\x00\x5b\x00\x5c\x00\x5d\x00\xd6\x00\x84\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x05\x00\x43\x00\x17\x00\x45\x00\x46\x00\x47\x00\x32\x00\x49\x00\x4a\x00\x4b\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x22\x00\x43\x00\x20\x00\x45\x00\x46\x00\x47\x00\x29\x00\x49\x00\x4a\x00\x4b\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x1e\x00\x28\x00\xb7\x00\x0c\x00\x16\x00\xc4\x00\xc5\x00\x22\x00\xc7\x00\xc8\x00\x69\x00\x6a\x00\x6b\x00\xd6\x00\x1c\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x17\x00\x84\x00\xb7\x00\xd6\x00\x44\x00\x45\x00\x46\x00\x47\x00\x69\x00\x6a\x00\x6b\x00\x74\x00\x73\x00\xd6\x00\x78\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\x31\x00\x41\x00\xb7\x00\x43\x00\x1c\x00\x45\x00\x46\x00\x47\x00\x29\x00\x49\x00\x4a\x00\x4b\x00\xd6\x00\x84\x00\x1e\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\x84\x00\x41\x00\x25\x00\x43\x00\x84\x00\x45\x00\x46\x00\x47\x00\x1e\x00\x49\x00\x4a\x00\x4b\x00\xd6\x00\x28\x00\xc4\x00\xc5\x00\x17\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x64\x00\x43\x00\x56\x00\x45\x00\x46\x00\x47\x00\x5f\x00\x49\x00\x4a\x00\x4b\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x84\x00\x43\x00\x1d\x00\x45\x00\x46\x00\x47\x00\x1d\x00\x49\x00\x4a\x00\x4b\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\x17\x00\x41\x00\x5b\x00\x43\x00\x1d\x00\x45\x00\x46\x00\x47\x00\x05\x00\x49\x00\x4a\x00\x4b\x00\xd6\x00\x7b\x00\x7c\x00\x7d\x00\x22\x00\x17\x00\x3f\x00\x28\x00\x41\x00\x24\x00\x43\x00\x24\x00\x45\x00\x46\x00\x47\x00\x73\x00\x49\x00\x4a\x00\x4b\x00\x5b\x00\xc4\x00\xc5\x00\x1d\x00\xc7\x00\xc8\x00\x3f\x00\x2d\x00\x41\x00\xb7\x00\x43\x00\x2b\x00\x45\x00\x46\x00\x47\x00\x22\x00\x2b\x00\x4a\x00\x4b\x00\xd6\x00\x2b\x00\x1d\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\x1c\x00\x41\x00\xb7\x00\x43\x00\x2c\x00\x45\x00\x46\x00\x47\x00\x41\x00\x29\x00\x4a\x00\x4b\x00\xd6\x00\x28\x00\x1d\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x22\x00\x2d\x00\xb7\x00\x22\x00\x44\x00\x45\x00\x46\x00\x47\x00\x7b\x00\x7c\x00\x7d\x00\x64\x00\x84\x00\xd6\x00\x21\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x5d\x00\x43\x00\x29\x00\x45\x00\x46\x00\x47\x00\x0c\x00\x0f\x00\x4a\x00\x4b\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x0f\x00\x43\x00\x16\x00\x45\x00\x46\x00\x47\x00\x46\x00\x1e\x00\x4a\x00\x4b\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x4b\x00\x43\x00\x27\x00\x45\x00\x46\x00\x47\x00\x1e\x00\x1e\x00\x4a\x00\x4b\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x24\x00\x43\x00\x17\x00\x45\x00\x46\x00\x47\x00\x17\x00\x0f\x00\x4a\x00\x4b\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\x5f\x00\x41\x00\xb7\x00\x43\x00\x28\x00\x45\x00\x46\x00\x47\x00\x0c\x00\x21\x00\x4a\x00\x4b\x00\xd6\x00\x28\x00\x84\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\x29\x00\x41\x00\x84\x00\x43\x00\x1c\x00\x45\x00\x46\x00\x47\x00\x1d\x00\x1d\x00\x4a\x00\x4b\x00\xd6\x00\x1e\x00\xc4\x00\xc5\x00\x2c\x00\xc7\x00\xc8\x00\x3f\x00\x1d\x00\x41\x00\xb7\x00\x43\x00\x22\x00\x45\x00\x46\x00\x47\x00\x2c\x00\x17\x00\x4a\x00\x4b\x00\xd6\x00\x28\x00\x1d\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x73\x00\x43\x00\x17\x00\x45\x00\x46\x00\x47\x00\x73\x00\x24\x00\x4a\x00\x4b\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x1b\x00\x43\x00\x29\x00\x45\x00\x46\x00\x47\x00\x2b\x00\x5f\x00\x4a\x00\x4b\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x73\x00\x43\x00\x5b\x00\x45\x00\x46\x00\x47\x00\x22\x00\x73\x00\x4a\x00\x4b\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3f\x00\xb7\x00\x41\x00\x24\x00\x43\x00\x24\x00\x45\x00\x46\x00\x47\x00\x94\x00\x95\x00\x96\x00\x22\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x94\x00\x95\x00\x96\x00\xb7\x00\x3b\x00\x3c\x00\x3d\x00\x44\x00\x45\x00\x46\x00\x47\x00\x05\x00\x1c\x00\xd6\x00\x17\x00\x17\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x42\x00\x43\x00\xb7\x00\x45\x00\x46\x00\x47\x00\x50\x00\x51\x00\x52\x00\x4b\x00\x22\x00\x17\x00\x21\x00\xd6\x00\x17\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x17\x00\x42\x00\x43\x00\xb7\x00\x45\x00\x46\x00\x47\x00\x17\x00\x5e\x00\x5f\x00\x60\x00\x17\x00\x62\x00\xd6\x00\x17\x00\x17\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x17\x00\xb7\x00\x45\x00\x46\x00\x47\x00\x48\x00\x17\x00\x21\x00\x5e\x00\x5f\x00\x60\x00\x2d\x00\x62\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x22\x00\xb7\x00\x2b\x00\x44\x00\x45\x00\x46\x00\x47\x00\x17\x00\x41\x00\x44\x00\x45\x00\x46\x00\x47\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x21\x00\xb7\x00\x41\x00\x44\x00\x45\x00\x46\x00\x47\x00\x41\x00\x27\x00\x44\x00\x45\x00\x46\x00\x47\x00\xd6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x61\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x4b\x00\xb4\x00\x6d\x00\x2b\x00\x73\x00\xb8\x00\x29\x00\x28\x00\xd6\x00\x20\x00\x22\x00\xc4\x00\xc5\x00\x0f\x00\xc7\x00\xc8\x00\xb9\x00\xc4\x00\xc5\x00\x17\x00\x64\x00\xc8\x00\x70\x00\x2d\x00\x0c\x00\x0f\x00\x6b\x00\xc4\x00\xc5\x00\xd6\x00\xc7\x00\xc8\x00\x1d\x00\x09\x00\x84\x00\x0b\x00\x85\x00\xb9\x00\x84\x00\x20\x00\x0f\x00\x0f\x00\x1d\x00\x0f\x00\x1d\x00\xd6\x00\x68\x00\x17\x00\xc4\x00\xc5\x00\x5e\x00\xc7\x00\xc8\x00\x16\x00\x0c\x00\x85\x00\x1d\x00\x85\x00\x22\x00\x28\x00\x85\x00\xbe\x00\x00\x00\x27\x00\x46\x00\xc2\x00\xd6\x00\xc4\x00\xc5\x00\x2d\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\xd6\x00\xd7\x00\xd8\x00\xc4\x00\xc5\x00\xff\xff\xc7\x00\xc8\x00\xff\xff\xc4\x00\xc5\x00\xff\xff\xc7\x00\xc8\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\xff\xff\xd6\x00\xc4\x00\xc5\x00\xff\xff\xc7\x00\xc8\x00\xd6\x00\xc4\x00\xc5\x00\xff\xff\xc7\x00\xc8\x00\xb4\x00\x01\x00\x16\x00\x17\x00\xb8\x00\x05\x00\x06\x00\xd6\x00\xff\xff\x09\x00\xff\xff\xff\xff\xff\xff\xd6\x00\xff\xff\xff\xff\xc4\x00\xc5\x00\x26\x00\xff\xff\xc8\x00\xff\xff\x16\x00\x01\x00\x18\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x24\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\x74\x00\xff\xff\xff\xff\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\x09\x00\x74\x00\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x01\x00\x18\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\x74\x00\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\xff\xff\x01\x00\xff\xff\x32\x00\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0f\x00\x7f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\x01\x00\xff\xff\xff\xff\x61\x00\x05\x00\x06\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x08\x00\x09\x00\xff\xff\x7a\x00\x16\x00\x74\x00\x18\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x4f\x00\x7f\x00\xff\xff\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\x74\x00\x24\x00\x25\x00\xff\xff\xff\xff\x32\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xbb\x00\xff\xff\xff\xff\xbe\x00\x61\x00\xc0\x00\xff\xff\xc2\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xc9\x00\xca\x00\xcb\x00\xff\xff\xcd\x00\xff\xff\xcf\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xbb\x00\xff\xff\x1c\x00\xbe\x00\xff\xff\xc0\x00\x20\x00\xc2\x00\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xc9\x00\xca\x00\xcb\x00\xff\xff\xcd\x00\xff\xff\xcf\x00\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xbb\x00\x18\x00\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xc2\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xc9\x00\xca\x00\xcb\x00\xff\xff\xcd\x00\xff\xff\xcf\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\x16\x00\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x4f\x00\xff\xff\x2a\x00\xff\xff\x53\x00\x54\x00\x55\x00\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\x61\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x57\x00\x03\x00\x04\x00\x05\x00\x06\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\x16\x00\xff\xff\x18\x00\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\x61\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x16\x00\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\x25\x00\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\x74\x00\xff\xff\xff\xff\x01\x00\x02\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x16\x00\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\x26\x00\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x01\x00\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\x16\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\x25\x00\x6a\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x61\x00\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\x16\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\x26\x00\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\x16\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\x01\x00\xff\xff\xff\xff\x2f\x00\x05\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x16\x00\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x01\x00\x42\x00\x43\x00\x44\x00\x05\x00\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x2d\x00\xff\xff\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\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\x74\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x91\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xb3\x00\x48\x00\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xd0\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\x74\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x91\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xb3\x00\x48\x00\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xd0\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\x74\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\x8b\x00\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x91\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xb3\x00\x48\x00\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xd0\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\x01\x00\xff\xff\xff\xff\x74\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x61\x00\xff\xff\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x74\x00\x20\x00\x05\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\x22\x00\xff\xff\x24\x00\x25\x00\x2d\x00\x27\x00\x28\x00\xff\xff\xff\xff\x16\x00\x17\x00\xff\xff\xff\xff\xff\xff\x01\x00\x31\x00\x32\x00\x33\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\xff\xff\x0b\x00\x26\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x20\x00\x61\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x2d\x00\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\xff\xff\x74\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x61\x00\x08\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x01\x00\x74\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x16\x00\x2f\x00\x18\x00\x19\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x17\x00\x18\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x01\x00\x02\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x5e\x00\xff\xff\xff\xff\x61\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x74\x00\x05\x00\x06\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x20\x00\x61\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\x16\x00\x74\x00\x18\x00\x01\x00\x02\x00\xff\xff\x61\x00\x05\x00\x06\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x16\x00\x74\x00\xff\xff\x05\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x16\x00\xff\xff\x61\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x74\x00\x18\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x74\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x01\x00\x02\x00\xff\xff\x74\x00\x05\x00\x06\x00\xff\xff\x20\x00\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x6b\x00\xff\xff\xff\xff\x16\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x74\x00\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\x74\x00\x61\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x16\x00\xff\xff\x61\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x01\x00\x16\x00\xff\xff\x61\x00\x05\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\x01\x00\x16\x00\x74\x00\xff\xff\xff\xff\x61\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x24\x00\x25\x00\x74\x00\x27\x00\x28\x00\x01\x00\x16\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\x16\x00\x01\x00\xff\xff\x74\x00\xff\xff\x05\x00\xff\xff\xff\xff\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x74\x00\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\x74\x00\x61\x00\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x31\x00\x32\x00\x33\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x61\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x91\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xff\xff\xa1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9d\x00\x9e\x00\x9f\x00\xff\xff\xa1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\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\x9e\x00\x9f\x00\xff\xff\xa1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\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\xa0\x00\xa1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\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\xa9\x00\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\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\xa9\x00\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\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\xa0\x00\xa1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\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\xa0\x00\xa1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\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\xa9\x00\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\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\xa9\x00\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\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\xa1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\xff\xff\xff\xff\x90\x00\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xbc\x00\xff\xff\xbe\x00\xff\xff\xff\xff\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\x8d\x00\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9a\x00\x9b\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\x8d\x00\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xbc\x00\xff\xff\xbe\x00\xff\xff\xff\xff\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xcc\x00\xff\xff\xce\x00\xcf\x00\xd0\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xbc\x00\xff\xff\xbe\x00\xff\xff\xff\xff\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xcc\x00\xff\xff\xce\x00\xcf\x00\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\x8d\x00\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\x8d\x00\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xbc\x00\xff\xff\xbe\x00\xff\xff\xff\xff\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xcc\x00\xff\xff\xce\x00\xcf\x00\xd0\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xbc\x00\xff\xff\xbe\x00\xff\xff\xff\xff\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xcc\x00\xff\xff\xce\x00\xcf\x00\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\x8d\x00\xff\xff\xff\xff\xff\xff\x91\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\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xbc\x00\xff\xff\xbe\x00\xff\xff\xff\xff\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xcc\x00\xff\xff\xce\x00\xcf\x00\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xa4\x00\xa5\x00\xff\xff\x91\x00\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xa5\x00\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\x8f\x00\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\x8f\x00\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xd0\x00\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\xd0\x00\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\x00\x84\x00\x85\x00\x86\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\x84\x00\xff\xff\x86\x00\xff\xff\xd0\x00\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\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\x88\x00\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\x91\x00\xff\xff\xff\xff\x94\x00\x95\x00\x96\x00\xff\xff\x98\x00\x99\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\x94\x00\x95\x00\x96\x00\xff\xff\x98\x00\x99\x00\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xb3\x00\xff\xff\xd0\x00\xb6\x00\xb7\x00\x91\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xd0\x00\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xd0\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xb3\x00\xff\xff\xd0\x00\xb6\x00\xb7\x00\x91\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xd0\x00\xff\xff\xff\xff\x91\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xd0\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\x89\x00\x8a\x00\x8b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x91\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xd0\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\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"# - -happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\x86\x00\x0f\x02\x87\x00\x07\x00\x09\x00\x20\x03\x21\x03\x22\x03\x94\x00\xb5\x02\x66\x01\x15\x04\xe2\x02\x87\x01\x68\x01\xff\x01\xbd\x02\x94\x00\xb9\x01\x68\x01\xef\x02\xe3\x02\x0c\x04\x16\x04\x17\x04\x94\x00\x51\x02\x21\x04\xc0\x03\x41\x02\x1c\x04\x94\x00\xeb\x02\xe5\x03\xbd\x03\x95\x00\x68\x01\xef\x02\x29\x02\x06\x04\xc1\x02\x68\x01\xff\x01\x00\x02\x0e\x04\x76\x03\xc1\x02\x68\x01\xf7\x02\xc0\x02\xc1\x02\x40\x02\x68\x01\xf7\x02\x50\x01\xcc\x00\x29\x02\xd0\x00\x68\x01\x45\x03\x29\x02\xf1\x03\x29\x02\xec\x01\x68\x01\x6f\x03\xbe\xff\xc7\x03\xbf\x03\xc0\x03\x02\x02\x68\x01\x6f\x03\x52\x02\xe8\x01\x3a\x01\xa8\x00\x54\x02\xaa\x00\x6f\x01\x33\x03\x02\x03\xd8\x02\x92\x01\x93\x01\xc8\x03\x8c\x00\x61\x03\x8d\x00\x1f\x04\xcd\x00\xa8\x00\xd8\x02\x56\x03\xcd\x00\x3b\x01\xcd\x00\xd7\x00\x04\x04\xd9\x02\x8b\x01\x01\x04\x01\x03\x02\x03\xb9\x01\xe6\x02\xad\x00\x3c\x01\x51\x01\xe9\x01\x70\x01\xbe\x02\x18\x00\x15\x03\x16\x03\xa1\x00\xa2\x00\xd8\x00\x63\x03\x68\x01\x45\x03\x57\x03\xee\x01\x8e\x00\xee\x01\xf9\x03\x2c\x00\xba\x01\x2d\x00\x7f\x03\x17\x03\xc1\x01\xc2\x01\x2f\x00\xed\x02\x26\x04\xb5\x03\x30\x00\x94\x01\x31\x00\x70\x03\x13\x04\xb5\x02\x40\x00\x18\x00\xf3\x03\xff\x03\x71\x03\x2c\x00\x56\x02\x2d\x00\xf8\x02\xb6\x03\xc1\x01\xc2\x01\x2f\x00\xf9\x02\x46\x03\xf6\xfe\x30\x00\xb0\x02\x31\x00\x55\x02\xc2\x02\xb1\x02\x88\x01\xb2\x02\xed\x01\x89\x01\xc2\x02\x8a\x01\xf0\x02\x23\x03\xc2\x02\x96\x00\x24\x03\x18\x04\x56\x02\xc1\x03\x01\x02\x19\x04\x8b\x01\xc2\x03\x96\x00\x8c\x01\x3e\x00\x14\x00\x3f\x00\xf1\x02\x40\x00\x18\x00\x96\x00\x14\x00\xbb\x00\x14\x00\xbb\x00\xbc\x00\x96\x00\xbc\x00\x23\x03\xf4\x03\x10\x02\x24\x03\x25\x03\x67\x01\x67\x01\x03\x02\x55\x02\x1a\x04\x08\x00\x08\x00\x08\x00\x3e\x00\x14\x00\x3f\x00\x32\x00\x40\x00\x18\x00\x47\x03\xc1\x03\x14\x00\x03\x03\x56\x02\xc2\x03\x83\x01\x33\x00\xef\x01\x34\x00\xf4\x01\x35\x00\x25\x03\xde\x02\x36\x00\x37\x00\x38\x00\x14\x00\xbb\x00\x32\x00\xaf\x01\xbc\x00\x39\x00\x18\x04\x14\x00\x03\x03\x80\x01\x19\x04\xde\x03\x33\x00\xc1\x03\x34\x00\xdf\x03\x35\x00\xc2\x03\x7b\x01\x36\x00\x37\x00\x38\x00\x14\x00\xbb\x00\x88\x03\x93\x02\xbc\x00\x39\x00\x74\x01\x14\x00\xbb\x00\xe0\x03\xc9\x00\xbc\x00\x0d\x00\x0e\x00\x0f\x00\x95\x01\x1a\x04\x3a\x00\x06\x01\x0f\x00\x3b\x00\x3c\x00\xa1\x02\x3d\x00\x14\x04\x5e\x03\x0e\x00\x0f\x00\x3e\x00\x14\x00\x3f\x00\x00\x04\xa7\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\xa2\x02\xd8\x02\x3b\x00\x3c\x00\x2d\x03\x3d\x00\x41\x00\xba\x03\x8f\x01\x2e\x03\x1b\x00\xfe\x03\xf2\x03\x89\x03\x8a\x03\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\xac\x00\xff\x03\x9c\x02\x16\x00\x2c\x00\x90\x01\x2d\x00\x41\x00\xc0\x01\xc1\x01\xc2\x01\x2f\x00\xaf\x00\xb0\x00\xb1\x00\x30\x00\xd5\x02\x31\x00\xcf\x01\x56\x01\x0e\x00\x0f\x00\x7e\x01\x14\x00\x15\x00\xd6\x03\x81\x01\x7d\x03\x7e\x03\xdd\x02\x9d\x02\x9e\x02\x14\x00\xbb\x00\x2c\x00\x82\x01\x2d\x00\xd1\x03\xd2\x03\x7f\x01\x2c\x01\x84\x01\x0a\x00\xd0\x01\xd1\x01\xa0\x03\x0c\x00\x31\x00\x0d\x00\x0e\x00\x0f\x00\xd7\x03\x88\x02\x49\x01\x12\x00\xd2\x01\x4f\x01\x96\x03\xe0\x01\x14\x00\x15\x00\x79\x03\xc9\x00\x2c\x01\x0d\x00\x0e\x00\x0f\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\xa8\x01\x95\x01\xdb\x02\xf6\x02\x14\x00\x15\x00\x88\x03\x17\x00\x18\x00\x14\x00\x15\x00\x2b\x00\x17\x00\x18\x00\x3e\x00\x14\x00\x3f\x00\x14\x00\x15\x00\x32\x00\x17\x00\x18\x00\x19\x00\x7a\x01\xe3\x03\xe4\x03\x93\x02\x07\x01\xab\x01\x33\x00\x2c\x00\x34\x00\x94\x02\x35\x00\x7b\x01\x19\x00\x36\x00\x37\x00\x38\x00\x2c\x01\xa1\x03\xa2\x03\xa3\x03\x2c\x00\x39\x00\x2d\x00\xb0\x01\x7b\x03\x4d\x01\x32\x00\x7f\x03\x14\x00\x15\x00\x23\x02\x24\x02\x7b\x01\x31\x00\x2c\x01\xed\x03\x33\x00\x91\x03\x34\x00\x92\x03\x35\x00\x40\x00\x18\x00\x36\x00\x37\x00\x38\x00\xa7\x02\x1e\x00\x1f\x00\x14\x00\x15\x00\x39\x00\x17\x00\x18\x00\x2b\x01\x3a\x00\x4b\x02\x4c\x02\x3b\x00\x3c\x00\x44\x03\x3d\x00\x75\x01\x2c\x01\x81\x03\x13\x00\xc9\x00\x19\x00\x0d\x00\x0e\x00\x0f\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\xa4\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xb5\x01\x41\x00\x3a\x00\x8d\x02\xb6\x01\x3b\x00\x3c\x00\x8e\x02\x3d\x00\xb7\x01\xa6\x03\x14\x00\x15\x00\x19\x00\x17\x00\x18\x00\x1e\x00\x1f\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x9e\x03\xa7\x00\x32\x00\xa9\x00\x2c\x00\x19\x00\x2d\x00\x41\x00\xef\x01\xc0\x02\x95\x01\xf0\x01\x33\x00\xb1\x03\x34\x00\xa0\x03\x35\x00\x31\x00\xaf\x03\x36\x00\x37\x00\x38\x00\xb4\x03\x3e\x00\x14\x00\x3f\x00\x2c\x00\x39\x00\x2d\x00\xa8\x01\xac\x00\x86\x02\xe7\x02\x2f\x00\xb8\x03\x1e\x00\x1f\x00\x30\x00\xc3\x01\x31\x00\x9c\x03\x9d\x03\xaf\x00\xb0\x00\xb1\x00\xa1\x00\xa2\x00\x1a\x03\xa7\x03\xe0\x01\x14\x00\xa3\x02\x81\x03\xc9\x00\xa4\x02\x0d\x00\x0e\x00\x0f\x00\x29\x02\x25\x02\x26\x02\x3a\x00\xa9\x03\xaa\x03\x3b\x00\x27\x02\x37\x03\x3d\x00\x76\x01\x31\x01\x48\x03\xa4\x00\xc9\x00\xa5\x00\x0d\x00\x0e\x00\x0f\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x1c\x03\x1d\x03\xf2\x03\xa3\x03\x51\x03\x14\x00\x15\x00\x41\x00\x17\x00\x18\x00\x32\x00\xb0\x01\x14\x00\x3f\x00\x88\x01\x72\x01\x18\x00\x89\x01\xf0\x01\xb8\x02\x33\x00\xc6\x02\x34\x00\x19\x00\x35\x00\x2c\x02\xb8\x00\x36\x00\x37\x00\x38\x00\x8b\x01\x72\x03\x32\x00\x8c\x01\x2c\x00\x39\x00\x2d\x00\x14\x00\x32\x03\xcc\x03\x2e\x00\x2f\x00\x33\x00\xbc\x02\x34\x00\x30\x00\x35\x00\x31\x00\xec\x02\x36\x00\x37\x00\x38\x00\x3e\x00\x14\x00\x3f\x00\xcd\x03\xce\x03\x39\x00\xcf\x03\xd9\x02\xc9\x00\x12\x03\x0d\x00\x0e\x00\x0f\x00\x2c\x00\x9e\x01\x2d\x00\xa8\x01\x3a\x00\xa9\x01\xf2\x02\x3b\x00\x3c\x00\x14\x03\x3d\x00\x2c\x03\x88\x00\x31\x00\x3e\x00\x14\x00\x3f\x00\x89\x00\x8a\x00\x15\x02\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x4b\x02\x43\x03\x3b\x00\x3c\x00\x17\x02\x3d\x00\x41\x00\x14\x00\x15\x00\xe4\x01\x17\x00\x18\x00\x1f\x02\x9c\x01\x9d\x01\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x9e\x01\x3e\x00\x14\x00\x3f\x00\x19\x00\x14\x00\x15\x00\x41\x00\x17\x00\x18\x00\x32\x00\x5b\x03\x96\x02\x3e\x00\x14\x00\x3f\x00\x63\x01\x64\x01\x65\x01\x66\x01\x33\x00\x20\x02\x34\x00\x19\x00\x35\x00\x08\x03\x09\x03\x36\x00\x37\x00\x38\x00\x30\x02\x39\x03\xb9\x00\x6d\x03\x9a\x02\x39\x00\xba\x00\xc4\x02\x9a\x02\x14\x00\x15\x00\x32\x00\x72\x01\x18\x00\x0f\x04\x10\x04\x11\x04\x31\x02\x14\x00\xbb\x00\x3d\x02\x33\x00\xbc\x00\x34\x00\x9b\x03\x35\x00\x9c\x03\x73\x01\x36\x00\x37\x00\x38\x00\x39\x03\xd6\xfe\x13\x00\xd6\xfe\x4d\xfe\x39\x00\x4d\xfe\xe9\x01\x3a\x00\x0a\x03\x0b\x03\x3b\x00\x3c\x00\x3f\x02\x3d\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x3e\x00\x14\x00\x3f\x00\x43\x02\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\xf9\x01\x14\x00\x3f\x00\x19\x00\x72\x01\x18\x00\x5f\xfe\x41\x00\x5f\xfe\x3a\x00\x0f\x03\x10\x03\x3b\x00\x3c\x00\x69\xfe\x3d\x00\x69\xfe\x4a\x02\x3a\x03\x3b\x03\x3c\x03\x3d\x03\x3e\x03\x6c\x02\xdb\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x6a\xfe\x3f\x03\x6a\xfe\x34\x00\x6b\xfe\x35\x00\x6b\xfe\x41\x00\x36\x00\x37\x00\x38\x00\xc4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\x39\x00\x47\x02\xc9\x03\x3c\x03\x3d\x03\x3e\x03\x6d\x02\x6e\x02\x3e\x00\x14\x00\x3f\x00\x94\x03\x5f\x00\xbd\x03\x60\x00\x3f\x03\x4f\x02\x34\x00\x96\x03\x35\x00\xae\x02\x61\x01\x36\x00\x37\x00\x38\x00\x0a\x00\xa3\x01\xa4\x01\x59\x02\xc9\x00\x39\x00\x0d\x00\x0e\x00\x0f\x00\x3a\x00\x68\x01\xb3\x02\x3b\x00\x3c\x00\x6f\x02\x3d\x00\xff\x03\xda\x00\xdb\x00\x76\x02\xa7\x00\xa8\x00\xa9\x00\xaa\x00\x90\x02\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x68\x01\x69\x01\x94\x03\x5f\x00\x95\x03\x60\x00\x91\x02\x41\x00\x3a\x00\x96\x03\x9f\x02\x3b\x00\x3c\x00\x6d\x01\x3d\x00\xc8\x00\x36\x03\x37\x02\xac\x00\xc9\x00\xad\x00\x0d\x00\x0e\x00\x0f\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\xaf\x00\xb0\x00\xb1\x00\x6c\xfe\x0a\x00\x6c\xfe\x0b\x00\x41\x00\x0c\x00\x4b\x01\x0d\x00\x0e\x00\x0f\x00\x00\x03\x37\x02\x38\x02\x12\x00\x68\x01\x6a\x01\x4d\x03\xe0\x01\xda\x03\xda\x00\xdb\x00\xc9\x00\xc5\x01\x0d\x00\x0e\x00\x0f\x00\x0d\x02\x8a\x00\x0a\x00\xb9\x00\x0b\x00\xc7\x01\x0c\x00\xba\x00\x0d\x00\x0e\x00\x0f\x00\x36\x02\x37\x02\x38\x02\x12\x00\x68\x01\x6b\x01\xdf\x01\xe0\x01\x14\x00\xbb\x00\xca\x01\xc9\x00\xbc\x00\x0d\x00\x0e\x00\x0f\x00\xbf\x00\xc0\x00\x0a\x00\x13\x00\x0b\x00\x6d\xfe\x0c\x00\x6d\xfe\x0d\x00\x0e\x00\x0f\x00\x1f\x03\x20\x03\x38\x02\x12\x00\xc3\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xd4\x01\xa1\x00\xa2\x00\x31\x01\x0a\x00\xa4\x00\x0b\x00\xa5\x00\x0c\x00\xea\x01\x0d\x00\x0e\x00\x0f\x00\x19\x00\xcc\x01\x4d\x01\x12\x00\x4e\x01\x4f\x01\xc7\x02\x86\x03\x0a\x02\x0d\x00\x0e\x00\x0f\x00\x0a\x00\x6e\xfe\x0b\x00\x6e\xfe\x0c\x00\xc2\x00\x0d\x00\x0e\x00\x0f\x00\x60\x01\x61\x01\x4d\x01\x12\x00\x4e\x01\x4f\x01\xc7\x00\x14\x00\x15\x00\x0e\x01\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x29\x01\x0c\x00\x87\x03\x0d\x00\x0e\x00\x0f\x00\x44\x01\xe9\x03\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x4b\x02\x4c\x02\x46\x01\x4d\x02\x4e\x02\x97\x03\x98\x03\x99\x03\x6f\xfe\x13\x00\x6f\xfe\x14\x00\x15\x00\x19\x00\x17\x00\x18\x00\x50\x01\x0b\x01\x88\x00\xea\x03\x0c\x01\x25\x04\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x1c\x00\x1d\x00\x19\x00\x3e\x00\x14\x00\x3f\x00\x21\x04\x40\x00\x18\x00\x13\x00\x50\x01\x14\x00\x15\x00\x19\x00\x17\x00\x18\x00\x83\x03\x1f\x04\x0d\x00\x0e\x00\x0f\x00\x1c\x04\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x1e\x04\x76\xfe\x19\x00\x76\xfe\x0a\x00\x13\x00\xe1\x01\x77\xfe\xc9\x00\x77\xfe\x0d\x00\x0e\x00\x0f\x00\x19\x00\x14\x04\x9b\x01\x5f\x03\x9c\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xa1\x00\xa2\x00\x0c\x04\x13\x00\x12\x02\x68\x01\x13\x02\x14\x00\x15\x00\x04\x04\x17\x00\x18\x00\x03\x04\x19\x00\x51\x01\xa1\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xa1\x00\xa2\x00\x06\x04\x13\x00\x19\x00\x0a\x04\x5e\x03\x0e\x00\x0f\x00\x77\x03\x99\x02\x9a\x02\xc4\x02\x19\x00\xa7\x00\xa8\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\xae\x01\x0b\x00\xaf\x01\x0c\x00\x0a\x04\x0d\x00\x0e\x00\x0f\x00\x0c\x02\x0d\x02\x49\x01\x12\x00\x19\x00\x73\x03\x14\x02\x68\x01\x13\x02\x9b\x01\x0a\x00\x9c\x01\x0b\x00\xac\x00\x0c\x00\x29\x02\x0d\x00\x0e\x00\x0f\x00\xe9\x02\xea\x02\x49\x01\x12\x00\xf0\x03\x4a\x01\xaf\x00\xb0\x00\xb1\x00\x19\x02\x1a\x02\x0a\x00\x74\x03\x0b\x00\x92\x01\x0c\x00\x29\x02\x0d\x00\x0e\x00\x0f\x00\x59\xff\x07\x04\x11\x00\x12\x00\xf6\x03\x14\x00\x15\x00\xf7\x03\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\xf9\x03\x0c\x00\xa1\x02\x0d\x00\x0e\x00\x0f\x00\xfb\x03\xe6\x03\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\xfc\x03\x0b\x00\xfd\x03\x0c\x00\xbc\x03\x0d\x00\x0e\x00\x0f\x00\xbf\x03\xf7\x03\x11\x00\x12\x00\x19\x00\x3c\x02\xc6\x03\x0d\x00\x0e\x00\x0f\x00\x4b\x01\x0a\x00\x29\x02\x0b\x00\xcc\x03\x0c\x00\x29\x02\x0d\x00\x0e\x00\x0f\x00\x78\x02\xc6\x03\x11\x00\x12\x00\xc9\x01\xca\x01\x14\x00\x15\x00\x9b\x03\x17\x00\x18\x00\x0a\x00\xfd\xfd\x0b\x00\x13\x00\x0c\x00\xdc\x03\x0d\x00\x0e\x00\x0f\x00\xe3\x03\xca\x03\x11\x00\x12\x00\x19\x00\x0c\x02\x0d\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\xe1\x03\x0c\x00\xe2\x03\x0d\x00\x0e\x00\x0f\x00\x79\x03\xab\x03\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x7b\x03\x7d\x03\x13\x00\xa1\x02\x82\x01\x70\x01\x82\x03\x0d\x00\x0e\x00\x0f\x00\x94\x02\x95\x02\x96\x02\x19\x00\x85\x03\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x1e\x00\x0c\x00\x8d\x03\x0d\x00\x0e\x00\x0f\x00\x8e\x03\xd4\x02\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\xe1\x02\x0c\x00\xc4\x00\x0d\x00\x0e\x00\x0f\x00\x08\x03\xfc\x02\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xa0\x03\xad\x03\x13\x00\xaf\x03\xb1\x03\x14\x00\x15\x00\xb3\x03\x17\x00\x18\x00\x98\x02\x99\x02\x9a\x02\x19\x00\x29\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xb4\x03\xb8\x03\x13\x00\x19\x00\xe7\x03\x5e\x03\x0e\x00\x0f\x00\xa9\x02\x99\x02\x9a\x02\xba\x03\x29\x03\x19\x00\x1c\x03\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x2c\x03\x0b\x00\x13\x00\x0c\x00\x29\x02\x0d\x00\x0e\x00\x0f\x00\x32\x03\x3b\x02\x11\x00\x12\x00\x19\x00\x2a\x03\x39\x03\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x2b\x03\x0b\x00\x35\x03\x0c\x00\x36\x03\x0d\x00\x0e\x00\x0f\x00\x4a\x03\x8e\x01\x11\x00\x12\x00\x19\x00\x4f\x03\x14\x00\x15\x00\x50\x03\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x05\x02\x0c\x00\x58\x03\x0d\x00\x0e\x00\x0f\x00\x98\x02\x93\x01\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x5d\x03\x0c\x00\xfe\xfd\x0d\x00\x0e\x00\x0f\x00\x61\x03\xf8\x01\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x6f\x03\x0b\x00\xa1\x02\x0c\x00\xc4\x02\x0d\x00\x0e\x00\x0f\x00\x1e\x00\x0f\x01\x11\x00\x12\x00\x19\x00\x97\x01\x98\x01\x99\x01\x33\xff\xb7\x02\x0a\x00\xb8\x02\x0b\x00\xba\x02\x0c\x00\xbb\x02\x0d\x00\x0e\x00\x0f\x00\xbc\x02\x10\x00\x11\x00\x12\x00\xa1\x02\x14\x00\x15\x00\xc4\x02\x17\x00\x18\x00\x0a\x00\xc6\x02\x0b\x00\x13\x00\x0c\x00\xd4\x02\x0d\x00\x0e\x00\x0f\x00\xe1\x02\xae\x01\xd0\x03\x12\x00\x19\x00\xe2\x02\x98\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x29\x02\x0b\x00\x13\x00\x0c\x00\xe5\x02\x0d\x00\x0e\x00\x0f\x00\xe7\x02\xeb\x02\xa6\x02\x12\x00\x19\x00\xef\x02\xf4\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xf5\x02\xf6\x02\x13\x00\xfe\x02\xe8\x03\x5e\x03\x0e\x00\x0f\x00\xb7\x01\x98\x01\x99\x01\x05\x02\xff\x02\x19\x00\x00\x03\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x07\x03\x0c\x00\x08\x03\x0d\x00\x0e\x00\x0f\x00\x0d\x03\x0e\x03\xa8\x02\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x0f\x03\x0c\x00\x12\x03\x0d\x00\x0e\x00\x0f\x00\x8c\x00\x1a\x03\xaa\x02\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x17\x02\x0c\x00\x1b\x02\x0d\x00\x0e\x00\x0f\x00\x22\x02\x23\x02\x71\x01\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x2c\x02\x0c\x00\x2e\x02\x0d\x00\x0e\x00\x0f\x00\x2f\x02\xc2\x00\xce\x01\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x33\x02\x0b\x00\x13\x00\x0c\x00\x34\x02\x0d\x00\x0e\x00\x0f\x00\x35\x02\x36\x02\xd3\x01\x12\x00\x19\x00\x92\x01\x3a\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x3f\x02\x0b\x00\x3b\x02\x0c\x00\x45\x02\x0d\x00\x0e\x00\x0f\x00\xcf\x00\x98\x00\xe5\x01\x12\x00\x19\x00\x46\x02\x14\x00\x15\x00\x47\x02\x17\x00\x18\x00\x0a\x00\x49\x02\x0b\x00\x13\x00\x0c\x00\x38\xff\x0d\x00\x0e\x00\x0f\x00\x23\xfe\x4a\x02\xcf\x00\x12\x00\x19\x00\x92\x01\x54\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x51\x02\x0c\x00\xa7\x01\x0d\x00\x0e\x00\x0f\x00\x78\x02\x83\x02\xd4\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x8b\x02\x0c\x00\x8c\x02\x0d\x00\x0e\x00\x0f\x00\x9c\x01\x98\x02\x42\x01\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x78\x02\x0c\x00\xa1\x02\x0d\x00\x0e\x00\x0f\x00\xa6\x02\x9f\x02\x55\x01\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x47\x01\xac\x02\xc9\x00\xad\x02\x0d\x00\x0e\x00\x0f\x00\x0e\x02\xda\x00\xdb\x00\xb3\x02\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xd9\x00\xda\x00\xdb\x00\x13\x00\x2f\x02\xb7\x00\xb8\x00\xdc\x03\x5e\x03\x0e\x00\x0f\x00\x1e\x00\x6d\x01\x19\x00\x78\x01\x79\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xc7\x02\xc8\x02\x13\x00\x0d\x00\x0e\x00\x0f\x00\x5b\x02\x5c\x02\x5d\x02\xc9\x02\x7c\x01\x7d\x01\x83\x01\x19\x00\xcd\xfd\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xcf\xfd\xc7\x02\x67\x03\x13\x00\x0d\x00\x0e\x00\x0f\x00\xce\xfd\xca\x02\xcb\x02\xcc\x02\xd1\xfd\xcd\x02\x19\x00\xd4\xfd\xa6\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xa7\x01\x13\x00\x56\x01\x0e\x00\x0f\x00\x57\x01\xa8\x01\xb4\x01\x68\x03\xcb\x02\xcc\x02\xaf\x01\xcd\x02\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xb3\x01\x13\x00\xbb\x01\x82\x03\x5e\x03\x0e\x00\x0f\x00\xbc\x01\xbd\x01\x63\x03\x5e\x03\x0e\x00\x0f\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x49\x01\x13\x00\xbf\x01\x85\x03\x5e\x03\x0e\x00\x0f\x00\xc0\x01\xc5\x01\x5d\x03\x5e\x03\x0e\x00\x0f\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x64\x03\xbe\x00\xb6\x00\xb7\x00\xb8\x00\xc7\x01\xb9\x00\xcc\x01\xce\x01\xd6\x01\xba\x00\xe4\x01\xe7\x01\x19\x00\xc4\x00\xf2\x01\x14\x00\x15\x00\xf3\x01\x17\x00\x18\x00\xce\x02\x14\x00\xbb\x00\xfe\x01\x05\x02\xbc\x00\xff\x01\x07\x02\x0a\x02\x8f\x00\x8e\x00\x14\x00\x15\x00\x19\x00\xcf\x02\x18\x00\x12\x02\xa8\x00\x08\x02\xaa\x00\xff\xff\xce\x02\x09\x02\xc4\x00\x90\x00\x91\x00\x98\x00\xc2\x00\xcf\x00\x19\x00\xd2\x00\x53\x01\x14\x00\x15\x00\xd4\x00\xcf\x02\x18\x00\xd3\x00\x46\x01\xff\xff\x3d\x01\xff\xff\x2c\x01\x55\x01\xff\xff\x58\x01\xff\xff\xad\x00\x8c\x00\xa0\x00\x19\x00\x14\x00\x15\x00\x54\x01\x17\x00\x18\x00\xa1\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x43\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x19\x00\x59\x01\x5a\x01\x14\x00\x15\x00\x00\x00\x17\x00\x18\x00\x00\x00\x14\x00\x15\x00\x00\x00\x17\x00\x18\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x19\x00\x14\x00\x15\x00\x00\x00\x17\x00\x18\x00\x19\x00\x14\x00\x15\x00\x00\x00\x17\x00\x18\x00\xb9\x00\x1b\x00\xbe\x00\x23\x04\xba\x00\x1e\x00\x1f\x00\x19\x00\x00\x00\x50\xff\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x14\x00\xbb\x00\x24\x04\x00\x00\xbc\x00\x00\x00\x20\x00\x1b\x00\x21\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x50\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x6a\x03\x60\x01\x00\x00\x6b\x03\x00\x00\x00\x00\x00\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x03\x00\x00\x2c\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x50\xff\x2c\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x1b\x00\x21\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x2c\x00\x2a\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x50\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x03\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x1b\x00\x00\x00\x6b\x03\x00\x00\x2c\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x02\xed\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x02\x00\x00\x00\x00\xd2\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x2b\x00\x1e\x00\x1f\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\xa7\x00\xa8\x00\x00\x00\x3e\x01\xd1\x02\x2c\x00\x21\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x23\x00\x6c\x03\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x66\x03\x00\x00\x2c\x00\x8e\x01\xac\x00\x00\x00\x00\x00\xd2\x02\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x02\x00\x00\x00\x00\xaf\x00\xb0\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x9d\x00\x00\x00\x00\x00\x9e\x00\x2b\x00\x3f\x01\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\xa1\x00\xa2\x00\xa3\x00\x00\x00\xa4\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x67\x03\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xd3\x02\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x9d\x00\x00\x00\x29\x02\x9e\x00\x00\x00\xbd\x01\x50\x00\xa0\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x00\xa2\x00\xa3\x00\x00\x00\xa4\x00\x00\x00\xa5\x00\x52\x00\x00\x00\x53\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x19\x03\x00\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x2c\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x74\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x9d\x00\x4f\x00\x00\x00\x9e\x00\x00\x00\x9f\x00\x00\x00\xa0\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\xa1\x00\xa2\x00\xa3\x00\x00\x00\xa4\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x19\x03\x00\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x2c\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x74\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x2c\x00\x6f\x00\x70\x00\x71\x00\x00\x00\x72\x00\x00\x00\x00\x00\x00\x00\x73\x00\x74\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x24\x01\xa8\x00\xa9\x00\xaa\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x8a\x02\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x7b\x01\x51\x00\x26\x01\x27\x01\x00\x00\xad\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x28\x01\x29\x01\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1b\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x6c\x00\x59\x02\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x84\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x24\x01\xa8\x00\xa9\x00\xaa\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\xad\x01\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x7b\x01\x51\x00\x26\x01\x27\x01\x00\x00\xad\x00\x23\x00\x00\x00\x7c\x00\x00\x00\x27\x00\x28\x00\x29\x00\x52\x00\x00\x00\x53\x00\x28\x01\x29\x01\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x2b\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x84\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x34\x01\xa8\x00\xa9\x00\xaa\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x35\x01\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x2c\x01\x51\x00\x26\x01\x36\x01\x00\x00\xad\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x37\x01\x38\x01\x39\x01\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x84\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x24\x01\xa8\x00\xa9\x00\xaa\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x25\x01\x00\x00\x51\x00\x26\x01\x27\x01\x00\x00\xad\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x28\x01\x29\x01\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x84\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x24\x01\xa8\x00\xa9\x00\xaa\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x26\x01\x27\x01\x00\x00\xad\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x28\x01\x29\x01\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x84\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\xdc\x01\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x01\x6c\x00\x00\x00\x00\x00\x00\x00\x81\x00\xde\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x84\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x29\x02\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x84\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x02\x6c\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x7e\x02\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x84\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x84\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x02\x6c\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x84\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\xe0\x02\x2b\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x84\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x02\x6c\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x84\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x7d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x84\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1b\x00\x62\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x6c\x00\x20\x00\x00\x00\x21\x00\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x22\x00\x49\x01\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x84\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x29\x02\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x52\x00\x00\x00\x53\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x2b\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x1b\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\xa5\x03\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x86\x01\x00\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x03\x6d\x03\x00\x00\x2c\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x1b\x00\x43\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\xa5\x03\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\xc6\x00\x00\x00\x00\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x03\xa1\x01\x00\x00\x2c\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x29\x02\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x54\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x1b\x00\x5f\x00\x00\x00\x60\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x00\x00\x86\x01\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x87\x01\x6c\x00\x00\x00\x00\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x2c\x00\x6f\x00\x70\x00\x71\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x52\x00\x00\x00\x53\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x2b\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x68\x00\x69\x00\x6a\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x2c\x00\x6f\x00\x70\x00\x71\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x29\x02\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x54\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x1b\x00\x43\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x41\x03\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x01\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\xa1\x01\x42\x03\x00\x00\x00\x00\x2c\x00\x43\x03\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x54\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x2c\x00\x00\x00\x1b\x00\x43\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x62\x00\x00\x00\x41\x03\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x03\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x03\x00\x00\x00\x00\x2c\x00\x43\x03\x62\x02\x43\x00\x1c\x00\x1d\x00\x63\x02\x1f\x00\xdf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\x64\x02\x65\x02\x66\x02\x67\x02\x68\x02\x69\x02\x6a\x02\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\x6b\x02\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x6c\x02\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x00\x00\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x00\x00\x97\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x97\xfe\x00\x00\x00\x00\x97\xfe\x00\x00\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x00\x00\x97\xfe\x97\xfe\x97\xfe\x00\x00\x97\xfe\x1b\x00\x00\x00\x00\x00\x97\xfe\x1e\x00\x97\xfe\x97\xfe\x97\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x97\xfe\x00\x00\x00\x00\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\xbe\x00\x97\xfe\x97\xfe\x97\xfe\x00\x00\x97\xfe\x00\x00\x97\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x27\x03\x00\x00\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x00\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\xfe\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\xfe\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x1b\x00\x5c\x00\x5d\x00\x5e\x00\x1e\x00\x5f\x00\x00\x00\x60\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\xbe\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\xfd\x01\x00\x00\x52\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\xdf\x00\x52\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x17\x01\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x39\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\xdf\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x3a\x00\x60\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x9b\x00\x9c\x00\x92\x00\x37\x00\x38\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x39\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\xdf\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x3a\x00\x60\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\xfb\x01\x92\x00\x37\x00\x38\x00\x50\x00\x00\x00\x00\x00\x51\x00\x00\x00\x39\x00\x00\x00\x00\x00\xdd\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\xdf\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x3a\x00\x60\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\xff\x00\x00\x00\x00\x2c\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x04\x01\x05\x01\x06\x01\x1b\x00\x43\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x00\x00\x51\x00\x2e\xff\x2e\xff\x2e\xff\x2e\xff\x2e\xff\x2e\xff\x2e\xff\x00\x00\x00\x00\x00\x00\x00\x00\x52\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\xff\x00\x00\x55\x00\x00\x00\x00\x00\x56\x00\x7e\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x2e\xff\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\xa8\x00\x00\x00\xaa\x00\x2b\x00\x00\x00\x00\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x20\x00\x53\x01\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x2c\x00\x22\x00\x1e\x00\x2c\x01\x00\x00\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\x41\x01\x00\x00\xab\x00\xac\x00\x54\x01\xad\x00\x42\x01\x00\x00\x00\x00\xbe\x00\xc4\x03\x00\x00\x00\x00\x00\x00\x1b\x00\xaf\x00\xb0\x00\xb1\x00\x1e\x00\x1f\x00\x00\x00\x5c\x01\xa8\x00\x00\x00\xaa\x00\xc5\x03\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x5d\x01\x00\x00\x00\x00\xad\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x5e\x01\x00\x00\x5f\x01\x60\x01\x00\x00\x00\x00\x00\x00\x2c\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x2b\x00\x5c\x01\xa8\x00\x00\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x1b\x00\x2c\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x5d\x01\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x01\x20\x00\xe3\x01\x21\x00\x4d\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\x2c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x76\x03\x21\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x2a\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x2a\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x2a\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x01\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x2a\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x2a\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x1b\x00\x43\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x0e\x01\x00\x00\xae\x02\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x2b\x00\x27\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x2c\x00\x1e\x00\x1f\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x22\x00\x2b\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\xae\x02\x00\x00\x00\x00\x20\x00\x2c\x00\x21\x00\x1b\x00\x43\x00\x00\x00\x2b\x00\x1e\x00\x1f\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x0e\x01\x2c\x00\x00\x00\x1e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1b\x00\xbe\x00\x00\x00\x2b\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x2c\x00\x21\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x2c\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x09\x01\x00\x00\x0a\x01\x1b\x00\x43\x00\x00\x00\x2c\x00\x1e\x00\x1f\x00\x00\x00\x0b\x01\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x28\x03\x00\x00\x00\x00\x0e\x01\x1b\x00\x43\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2b\x00\x1b\x00\x43\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\xc6\x00\x00\x00\x2b\x00\x1b\x00\x43\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x1b\x00\xc6\x00\x00\x00\x2b\x00\x1e\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\x00\x00\x00\x00\x1b\x00\xbe\x00\x2c\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x05\x03\xab\x00\xac\x00\x2c\x00\xad\x00\xa9\x03\x1b\x00\xd7\x02\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\xaf\x00\xb0\x00\xb1\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x05\x03\x1b\x00\x00\x00\x2c\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\x2c\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2b\x00\x00\x00\x00\x00\xab\x00\xac\x00\x00\x00\xad\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\xaf\x00\xb0\x00\xb1\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x2b\x00\x70\x02\xd7\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x39\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x02\x79\x02\x7a\x02\x7b\x02\x00\x00\x7c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x02\x00\x00\x00\x00\x00\x00\x00\x00\xab\x00\xac\x00\x00\x00\xad\x00\xae\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x70\x02\xd7\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x03\x7a\x02\x7b\x02\x00\x00\x7c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x70\x02\xd7\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x03\x7b\x02\x00\x00\x7c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x70\x02\xd7\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x03\x72\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\xd6\x01\xd7\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\xfb\x02\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\xd6\x01\xd7\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\x42\x02\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x70\x02\xd7\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x02\x72\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x70\x02\xd7\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x02\x72\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\xd6\x01\xd7\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\xd9\x01\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\xd6\x01\xd7\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x01\x00\x00\xde\x01\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x70\x02\xd7\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x08\x04\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\xee\x03\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\xd4\x03\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x8e\x03\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x8f\x03\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x90\x03\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\xad\x03\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x2f\x03\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x52\x03\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x59\x03\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\xde\x02\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\xfa\x02\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x8f\x02\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x99\x00\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x12\x01\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x13\x01\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x84\x00\x85\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x2c\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x2d\x01\x2e\x01\x00\x00\x00\x00\x2f\x01\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x1d\x01\x00\x00\x1e\x01\x00\x00\x00\x00\x1f\x01\x30\x01\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\xa1\x00\xa2\x00\x31\x01\x20\x01\xa4\x00\x21\x01\x32\x01\x41\x00\x19\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x1a\x01\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x01\x1c\x01\x00\x00\x7f\x02\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x80\x02\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x1e\x01\x00\x00\x00\x00\x1f\x01\xa0\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\xa1\x00\xa2\x00\x00\x00\x20\x01\x00\x00\x21\x01\x22\x01\x41\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x1e\x01\x00\x00\x00\x00\x1f\x01\xa0\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\xa1\x00\xa2\x00\x00\x00\x20\x01\x00\x00\x21\x01\x22\x01\x41\x00\x19\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x81\x02\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x88\x02\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x1e\x01\x00\x00\x00\x00\x1f\x01\xa0\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\xa1\x00\xa2\x00\x00\x00\x20\x01\x00\x00\x21\x01\x22\x01\x41\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x1e\x01\x00\x00\x00\x00\x1f\x01\xa0\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\xa1\x00\xa2\x00\x00\x00\x20\x01\x00\x00\x21\x01\x22\x01\x41\x00\x19\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x1e\x01\x00\x00\x00\x00\x1f\x01\xa0\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\xa1\x00\xa2\x00\x00\x00\x20\x01\x00\x00\x21\x01\x22\x01\x41\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x4a\x03\x4b\x03\x00\x00\x39\x00\x00\x00\x4c\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\xd3\x03\x00\x00\x00\x00\x00\x00\x4c\x03\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\xd8\x03\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\xd9\x03\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x84\x02\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x02\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x14\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x15\x01\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x0d\x04\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x30\x03\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x58\x03\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\xda\x02\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x1b\x02\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x1c\x02\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x1d\x02\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x1e\x02\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x29\x02\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x2a\x02\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x75\x02\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x7e\x02\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x83\x02\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\xf4\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\xf5\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\xf6\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\xf7\x01\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x98\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\xd5\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x75\x00\x76\x00\x77\x00\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x05\x03\x76\x00\x11\x01\x78\x00\x34\x00\x79\x00\x35\x00\x41\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x01\x76\x00\x11\x01\x78\x00\x34\x00\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x10\x01\x76\x00\x11\x01\x78\x00\x34\x00\x79\x00\x35\x00\x41\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x01\x96\x01\x79\x00\x35\x00\x00\x00\x00\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x96\x01\x00\x00\x35\x00\x00\x00\x41\x00\x36\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x00\x92\x00\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x5d\x02\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x39\x00\x00\x00\x00\x00\x5e\x02\xda\x00\xdb\x00\x00\x00\x5f\x02\x13\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x02\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x5e\x02\xda\x00\xdb\x00\x00\x00\x5f\x02\x60\x02\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x50\x03\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\xa1\x01\x37\x00\x38\x00\x3a\x00\x00\x00\x41\x00\x3b\x00\x3c\x00\x39\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\xa2\x01\x37\x00\x38\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x3d\x01\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x41\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x05\x02\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x9a\x00\x37\x00\x38\x00\x3a\x00\x00\x00\x41\x00\x3b\x00\x3c\x00\x39\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x16\x01\x37\x00\x38\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x18\x01\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x41\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x3d\x01\x37\x00\x38\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x3a\x00\x00\x00\x00\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x41\x00\x3b\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x14\x00\x3f\x00\x16\x00\x40\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x00\x00\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 (6, 588) [ - (6 , happyReduce_6), - (7 , happyReduce_7), - (8 , happyReduce_8), - (9 , happyReduce_9), - (10 , happyReduce_10), - (11 , happyReduce_11), - (12 , happyReduce_12), - (13 , happyReduce_13), - (14 , happyReduce_14), - (15 , happyReduce_15), - (16 , happyReduce_16), - (17 , happyReduce_17), - (18 , happyReduce_18), - (19 , happyReduce_19), - (20 , happyReduce_20), - (21 , happyReduce_21), - (22 , happyReduce_22), - (23 , happyReduce_23), - (24 , happyReduce_24), - (25 , happyReduce_25), - (26 , happyReduce_26), - (27 , happyReduce_27), - (28 , happyReduce_28), - (29 , happyReduce_29), - (30 , happyReduce_30), - (31 , happyReduce_31), - (32 , happyReduce_32), - (33 , happyReduce_33), - (34 , happyReduce_34), - (35 , happyReduce_35), - (36 , happyReduce_36), - (37 , happyReduce_37), - (38 , happyReduce_38), - (39 , happyReduce_39), - (40 , happyReduce_40), - (41 , happyReduce_41), - (42 , happyReduce_42), - (43 , happyReduce_43), - (44 , happyReduce_44), - (45 , happyReduce_45), - (46 , happyReduce_46), - (47 , happyReduce_47), - (48 , happyReduce_48), - (49 , happyReduce_49), - (50 , happyReduce_50), - (51 , happyReduce_51), - (52 , happyReduce_52), - (53 , happyReduce_53), - (54 , happyReduce_54), - (55 , happyReduce_55), - (56 , happyReduce_56), - (57 , happyReduce_57), - (58 , happyReduce_58), - (59 , happyReduce_59), - (60 , happyReduce_60), - (61 , happyReduce_61), - (62 , happyReduce_62), - (63 , happyReduce_63), - (64 , happyReduce_64), - (65 , happyReduce_65), - (66 , happyReduce_66), - (67 , happyReduce_67), - (68 , happyReduce_68), - (69 , happyReduce_69), - (70 , happyReduce_70), - (71 , happyReduce_71), - (72 , happyReduce_72), - (73 , happyReduce_73), - (74 , happyReduce_74), - (75 , happyReduce_75), - (76 , happyReduce_76), - (77 , happyReduce_77), - (78 , happyReduce_78), - (79 , happyReduce_79), - (80 , happyReduce_80), - (81 , happyReduce_81), - (82 , happyReduce_82), - (83 , happyReduce_83), - (84 , happyReduce_84), - (85 , happyReduce_85), - (86 , happyReduce_86), - (87 , happyReduce_87), - (88 , happyReduce_88), - (89 , happyReduce_89), - (90 , happyReduce_90), - (91 , happyReduce_91), - (92 , happyReduce_92), - (93 , happyReduce_93), - (94 , happyReduce_94), - (95 , happyReduce_95), - (96 , happyReduce_96), - (97 , happyReduce_97), - (98 , happyReduce_98), - (99 , happyReduce_99), - (100 , happyReduce_100), - (101 , happyReduce_101), - (102 , happyReduce_102), - (103 , happyReduce_103), - (104 , happyReduce_104), - (105 , happyReduce_105), - (106 , happyReduce_106), - (107 , happyReduce_107), - (108 , happyReduce_108), - (109 , happyReduce_109), - (110 , happyReduce_110), - (111 , happyReduce_111), - (112 , happyReduce_112), - (113 , happyReduce_113), - (114 , happyReduce_114), - (115 , happyReduce_115), - (116 , happyReduce_116), - (117 , happyReduce_117), - (118 , happyReduce_118), - (119 , happyReduce_119), - (120 , happyReduce_120), - (121 , happyReduce_121), - (122 , happyReduce_122), - (123 , happyReduce_123), - (124 , happyReduce_124), - (125 , happyReduce_125), - (126 , happyReduce_126), - (127 , happyReduce_127), - (128 , happyReduce_128), - (129 , happyReduce_129), - (130 , happyReduce_130), - (131 , happyReduce_131), - (132 , happyReduce_132), - (133 , happyReduce_133), - (134 , happyReduce_134), - (135 , happyReduce_135), - (136 , happyReduce_136), - (137 , happyReduce_137), - (138 , happyReduce_138), - (139 , happyReduce_139), - (140 , happyReduce_140), - (141 , happyReduce_141), - (142 , happyReduce_142), - (143 , happyReduce_143), - (144 , happyReduce_144), - (145 , happyReduce_145), - (146 , happyReduce_146), - (147 , happyReduce_147), - (148 , happyReduce_148), - (149 , happyReduce_149), - (150 , happyReduce_150), - (151 , happyReduce_151), - (152 , happyReduce_152), - (153 , happyReduce_153), - (154 , happyReduce_154), - (155 , happyReduce_155), - (156 , happyReduce_156), - (157 , happyReduce_157), - (158 , happyReduce_158), - (159 , happyReduce_159), - (160 , happyReduce_160), - (161 , happyReduce_161), - (162 , happyReduce_162), - (163 , happyReduce_163), - (164 , happyReduce_164), - (165 , happyReduce_165), - (166 , happyReduce_166), - (167 , happyReduce_167), - (168 , happyReduce_168), - (169 , happyReduce_169), - (170 , happyReduce_170), - (171 , happyReduce_171), - (172 , happyReduce_172), - (173 , happyReduce_173), - (174 , happyReduce_174), - (175 , happyReduce_175), - (176 , happyReduce_176), - (177 , happyReduce_177), - (178 , happyReduce_178), - (179 , happyReduce_179), - (180 , happyReduce_180), - (181 , happyReduce_181), - (182 , happyReduce_182), - (183 , happyReduce_183), - (184 , happyReduce_184), - (185 , happyReduce_185), - (186 , happyReduce_186), - (187 , happyReduce_187), - (188 , happyReduce_188), - (189 , happyReduce_189), - (190 , happyReduce_190), - (191 , happyReduce_191), - (192 , happyReduce_192), - (193 , happyReduce_193), - (194 , happyReduce_194), - (195 , happyReduce_195), - (196 , happyReduce_196), - (197 , happyReduce_197), - (198 , happyReduce_198), - (199 , happyReduce_199), - (200 , happyReduce_200), - (201 , happyReduce_201), - (202 , happyReduce_202), - (203 , happyReduce_203), - (204 , happyReduce_204), - (205 , happyReduce_205), - (206 , happyReduce_206), - (207 , happyReduce_207), - (208 , happyReduce_208), - (209 , happyReduce_209), - (210 , happyReduce_210), - (211 , happyReduce_211), - (212 , happyReduce_212), - (213 , happyReduce_213), - (214 , happyReduce_214), - (215 , happyReduce_215), - (216 , happyReduce_216), - (217 , happyReduce_217), - (218 , happyReduce_218), - (219 , happyReduce_219), - (220 , happyReduce_220), - (221 , happyReduce_221), - (222 , happyReduce_222), - (223 , happyReduce_223), - (224 , happyReduce_224), - (225 , happyReduce_225), - (226 , happyReduce_226), - (227 , happyReduce_227), - (228 , happyReduce_228), - (229 , happyReduce_229), - (230 , happyReduce_230), - (231 , happyReduce_231), - (232 , happyReduce_232), - (233 , happyReduce_233), - (234 , happyReduce_234), - (235 , happyReduce_235), - (236 , happyReduce_236), - (237 , happyReduce_237), - (238 , happyReduce_238), - (239 , happyReduce_239), - (240 , happyReduce_240), - (241 , happyReduce_241), - (242 , happyReduce_242), - (243 , happyReduce_243), - (244 , happyReduce_244), - (245 , happyReduce_245), - (246 , happyReduce_246), - (247 , happyReduce_247), - (248 , happyReduce_248), - (249 , happyReduce_249), - (250 , happyReduce_250), - (251 , happyReduce_251), - (252 , happyReduce_252), - (253 , happyReduce_253), - (254 , happyReduce_254), - (255 , happyReduce_255), - (256 , happyReduce_256), - (257 , happyReduce_257), - (258 , happyReduce_258), - (259 , happyReduce_259), - (260 , happyReduce_260), - (261 , happyReduce_261), - (262 , happyReduce_262), - (263 , happyReduce_263), - (264 , happyReduce_264), - (265 , happyReduce_265), - (266 , happyReduce_266), - (267 , happyReduce_267), - (268 , happyReduce_268), - (269 , happyReduce_269), - (270 , happyReduce_270), - (271 , happyReduce_271), - (272 , happyReduce_272), - (273 , happyReduce_273), - (274 , happyReduce_274), - (275 , happyReduce_275), - (276 , happyReduce_276), - (277 , happyReduce_277), - (278 , happyReduce_278), - (279 , happyReduce_279), - (280 , happyReduce_280), - (281 , happyReduce_281), - (282 , happyReduce_282), - (283 , happyReduce_283), - (284 , happyReduce_284), - (285 , happyReduce_285), - (286 , happyReduce_286), - (287 , happyReduce_287), - (288 , happyReduce_288), - (289 , happyReduce_289), - (290 , happyReduce_290), - (291 , happyReduce_291), - (292 , happyReduce_292), - (293 , happyReduce_293), - (294 , happyReduce_294), - (295 , happyReduce_295), - (296 , happyReduce_296), - (297 , happyReduce_297), - (298 , happyReduce_298), - (299 , happyReduce_299), - (300 , happyReduce_300), - (301 , happyReduce_301), - (302 , happyReduce_302), - (303 , happyReduce_303), - (304 , happyReduce_304), - (305 , happyReduce_305), - (306 , happyReduce_306), - (307 , happyReduce_307), - (308 , happyReduce_308), - (309 , happyReduce_309), - (310 , happyReduce_310), - (311 , happyReduce_311), - (312 , happyReduce_312), - (313 , happyReduce_313), - (314 , happyReduce_314), - (315 , happyReduce_315), - (316 , happyReduce_316), - (317 , happyReduce_317), - (318 , happyReduce_318), - (319 , happyReduce_319), - (320 , happyReduce_320), - (321 , happyReduce_321), - (322 , happyReduce_322), - (323 , happyReduce_323), - (324 , happyReduce_324), - (325 , happyReduce_325), - (326 , happyReduce_326), - (327 , happyReduce_327), - (328 , happyReduce_328), - (329 , happyReduce_329), - (330 , happyReduce_330), - (331 , happyReduce_331), - (332 , happyReduce_332), - (333 , happyReduce_333), - (334 , happyReduce_334), - (335 , happyReduce_335), - (336 , happyReduce_336), - (337 , happyReduce_337), - (338 , happyReduce_338), - (339 , happyReduce_339), - (340 , happyReduce_340), - (341 , happyReduce_341), - (342 , happyReduce_342), - (343 , happyReduce_343), - (344 , happyReduce_344), - (345 , happyReduce_345), - (346 , happyReduce_346), - (347 , happyReduce_347), - (348 , happyReduce_348), - (349 , happyReduce_349), - (350 , happyReduce_350), - (351 , happyReduce_351), - (352 , happyReduce_352), - (353 , happyReduce_353), - (354 , happyReduce_354), - (355 , happyReduce_355), - (356 , happyReduce_356), - (357 , happyReduce_357), - (358 , happyReduce_358), - (359 , happyReduce_359), - (360 , happyReduce_360), - (361 , happyReduce_361), - (362 , happyReduce_362), - (363 , happyReduce_363), - (364 , happyReduce_364), - (365 , happyReduce_365), - (366 , happyReduce_366), - (367 , happyReduce_367), - (368 , happyReduce_368), - (369 , happyReduce_369), - (370 , happyReduce_370), - (371 , happyReduce_371), - (372 , happyReduce_372), - (373 , happyReduce_373), - (374 , happyReduce_374), - (375 , happyReduce_375), - (376 , happyReduce_376), - (377 , happyReduce_377), - (378 , happyReduce_378), - (379 , happyReduce_379), - (380 , happyReduce_380), - (381 , happyReduce_381), - (382 , happyReduce_382), - (383 , happyReduce_383), - (384 , happyReduce_384), - (385 , happyReduce_385), - (386 , happyReduce_386), - (387 , happyReduce_387), - (388 , happyReduce_388), - (389 , happyReduce_389), - (390 , happyReduce_390), - (391 , happyReduce_391), - (392 , happyReduce_392), - (393 , happyReduce_393), - (394 , happyReduce_394), - (395 , happyReduce_395), - (396 , happyReduce_396), - (397 , happyReduce_397), - (398 , happyReduce_398), - (399 , happyReduce_399), - (400 , happyReduce_400), - (401 , happyReduce_401), - (402 , happyReduce_402), - (403 , happyReduce_403), - (404 , happyReduce_404), - (405 , happyReduce_405), - (406 , happyReduce_406), - (407 , happyReduce_407), - (408 , happyReduce_408), - (409 , happyReduce_409), - (410 , happyReduce_410), - (411 , happyReduce_411), - (412 , happyReduce_412), - (413 , happyReduce_413), - (414 , happyReduce_414), - (415 , happyReduce_415), - (416 , happyReduce_416), - (417 , happyReduce_417), - (418 , happyReduce_418), - (419 , happyReduce_419), - (420 , happyReduce_420), - (421 , happyReduce_421), - (422 , happyReduce_422), - (423 , happyReduce_423), - (424 , happyReduce_424), - (425 , happyReduce_425), - (426 , happyReduce_426), - (427 , happyReduce_427), - (428 , happyReduce_428), - (429 , happyReduce_429), - (430 , happyReduce_430), - (431 , happyReduce_431), - (432 , happyReduce_432), - (433 , happyReduce_433), - (434 , happyReduce_434), - (435 , happyReduce_435), - (436 , happyReduce_436), - (437 , happyReduce_437), - (438 , happyReduce_438), - (439 , happyReduce_439), - (440 , happyReduce_440), - (441 , happyReduce_441), - (442 , happyReduce_442), - (443 , happyReduce_443), - (444 , happyReduce_444), - (445 , happyReduce_445), - (446 , happyReduce_446), - (447 , happyReduce_447), - (448 , happyReduce_448), - (449 , happyReduce_449), - (450 , happyReduce_450), - (451 , happyReduce_451), - (452 , happyReduce_452), - (453 , happyReduce_453), - (454 , happyReduce_454), - (455 , happyReduce_455), - (456 , happyReduce_456), - (457 , happyReduce_457), - (458 , happyReduce_458), - (459 , happyReduce_459), - (460 , happyReduce_460), - (461 , happyReduce_461), - (462 , happyReduce_462), - (463 , happyReduce_463), - (464 , happyReduce_464), - (465 , happyReduce_465), - (466 , happyReduce_466), - (467 , happyReduce_467), - (468 , happyReduce_468), - (469 , happyReduce_469), - (470 , happyReduce_470), - (471 , happyReduce_471), - (472 , happyReduce_472), - (473 , happyReduce_473), - (474 , happyReduce_474), - (475 , happyReduce_475), - (476 , happyReduce_476), - (477 , happyReduce_477), - (478 , happyReduce_478), - (479 , happyReduce_479), - (480 , happyReduce_480), - (481 , happyReduce_481), - (482 , happyReduce_482), - (483 , happyReduce_483), - (484 , happyReduce_484), - (485 , happyReduce_485), - (486 , happyReduce_486), - (487 , happyReduce_487), - (488 , happyReduce_488), - (489 , happyReduce_489), - (490 , happyReduce_490), - (491 , happyReduce_491), - (492 , happyReduce_492), - (493 , happyReduce_493), - (494 , happyReduce_494), - (495 , happyReduce_495), - (496 , happyReduce_496), - (497 , happyReduce_497), - (498 , happyReduce_498), - (499 , happyReduce_499), - (500 , happyReduce_500), - (501 , happyReduce_501), - (502 , happyReduce_502), - (503 , happyReduce_503), - (504 , happyReduce_504), - (505 , happyReduce_505), - (506 , happyReduce_506), - (507 , happyReduce_507), - (508 , happyReduce_508), - (509 , happyReduce_509), - (510 , happyReduce_510), - (511 , happyReduce_511), - (512 , happyReduce_512), - (513 , happyReduce_513), - (514 , happyReduce_514), - (515 , happyReduce_515), - (516 , happyReduce_516), - (517 , happyReduce_517), - (518 , happyReduce_518), - (519 , happyReduce_519), - (520 , happyReduce_520), - (521 , happyReduce_521), - (522 , happyReduce_522), - (523 , happyReduce_523), - (524 , happyReduce_524), - (525 , happyReduce_525), - (526 , happyReduce_526), - (527 , happyReduce_527), - (528 , happyReduce_528), - (529 , happyReduce_529), - (530 , happyReduce_530), - (531 , happyReduce_531), - (532 , happyReduce_532), - (533 , happyReduce_533), - (534 , happyReduce_534), - (535 , happyReduce_535), - (536 , happyReduce_536), - (537 , happyReduce_537), - (538 , happyReduce_538), - (539 , happyReduce_539), - (540 , happyReduce_540), - (541 , happyReduce_541), - (542 , happyReduce_542), - (543 , happyReduce_543), - (544 , happyReduce_544), - (545 , happyReduce_545), - (546 , happyReduce_546), - (547 , happyReduce_547), - (548 , happyReduce_548), - (549 , happyReduce_549), - (550 , happyReduce_550), - (551 , happyReduce_551), - (552 , happyReduce_552), - (553 , happyReduce_553), - (554 , happyReduce_554), - (555 , happyReduce_555), - (556 , happyReduce_556), - (557 , happyReduce_557), - (558 , happyReduce_558), - (559 , happyReduce_559), - (560 , happyReduce_560), - (561 , happyReduce_561), - (562 , happyReduce_562), - (563 , happyReduce_563), - (564 , happyReduce_564), - (565 , happyReduce_565), - (566 , happyReduce_566), - (567 , happyReduce_567), - (568 , happyReduce_568), - (569 , happyReduce_569), - (570 , happyReduce_570), - (571 , happyReduce_571), - (572 , happyReduce_572), - (573 , happyReduce_573), - (574 , happyReduce_574), - (575 , happyReduce_575), - (576 , happyReduce_576), - (577 , happyReduce_577), - (578 , happyReduce_578), - (579 , happyReduce_579), - (580 , happyReduce_580), - (581 , happyReduce_581), - (582 , happyReduce_582), - (583 , happyReduce_583), - (584 , happyReduce_584), - (585 , happyReduce_585), - (586 , happyReduce_586), - (587 , happyReduce_587), - (588 , happyReduce_588) - ] - -happy_n_terms = 134 :: Int -happy_n_nonterms = 217 :: Int - -happyReduce_6 = happyMonadReduce 2# 0# happyReduction_6 -happyReduction_6 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut11 happy_x_1 of { happy_var_1 -> - case happyOut10 happy_x_2 of { happy_var_2 -> - ( checkPageModule happy_var_2 happy_var_1)}} - ) (\r -> happyReturn (happyIn9 r)) - -happyReduce_7 = happyMonadReduce 5# 0# happyReduction_7 -happyReduction_7 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut11 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 XCodeTagOpen) -> - case happyOut15 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 XCodeTagClose) -> - case happyOut10 happy_x_5 of { happy_var_5 -> - ( let (os,ss,l) = happy_var_1 in checkHybridModule happy_var_5 (happy_var_3 os ss l) happy_var_2 happy_var_4)}}}}} - ) (\r -> happyReturn (happyIn9 r)) - -happyReduce_8 = happySpecReduce_2 0# happyReduction_8 -happyReduction_8 happy_x_2 - happy_x_1 - = case happyOut11 happy_x_1 of { happy_var_1 -> - case happyOut15 happy_x_2 of { happy_var_2 -> - happyIn9 - (let (os,ss,l) = happy_var_1 in happy_var_2 os ss l - )}} - -happyReduce_9 = happyMonadReduce 9# 1# happyReduction_9 -happyReduction_9 (happy_x_9 `HappyStk` - happy_x_8 `HappyStk` - happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> - case happyOut157 happy_x_2 of { happy_var_2 -> - case happyOut160 happy_x_3 of { happy_var_3 -> - case happyOut162 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 XStdTagClose) -> - case happyOut155 happy_x_6 of { happy_var_6 -> - case happyOutTok happy_x_7 of { (Loc happy_var_7 XCloseTagOpen) -> - case happyOut157 happy_x_8 of { happy_var_8 -> - case happyOutTok happy_x_9 of { (Loc happy_var_9 XStdTagClose) -> - ( do { n <- checkEqNames happy_var_2 happy_var_8; - let { cn = reverse happy_var_6; - as = reverse happy_var_3; }; - return $ XTag (happy_var_1 <^^> happy_var_9 <** [happy_var_1,happy_var_5,happy_var_7,happy_var_9]) n as happy_var_4 cn })}}}}}}}}} - ) (\r -> happyReturn (happyIn10 r)) - -happyReduce_10 = happyReduce 5# 1# happyReduction_10 -happyReduction_10 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> - case happyOut157 happy_x_2 of { happy_var_2 -> - case happyOut160 happy_x_3 of { happy_var_3 -> - case happyOut162 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 XEmptyTagClose) -> - happyIn10 - (XETag (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 (reverse happy_var_3) happy_var_4 - ) `HappyStk` happyRest}}}}} - -happyReduce_11 = happySpecReduce_3 2# happyReduction_11 -happyReduction_11 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut12 happy_x_2 of { happy_var_2 -> - case happyOut219 happy_x_3 of { happy_var_3 -> - happyIn11 - (let (os,ss,ml) = happy_var_2 in (os,happy_var_1:ss++[happy_var_3],happy_var_1 <^^> happy_var_3) - )}}} - -happyReduce_12 = happySpecReduce_3 3# happyReduction_12 -happyReduction_12 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut13 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> - case happyOut12 happy_x_3 of { happy_var_3 -> - happyIn12 - (let (os,ss,ml) = happy_var_3 in (happy_var_1 : os, happy_var_2 : ss, Just $ ann happy_var_1 <++> nIS happy_var_2 <+?> ml) - )}}} - -happyReduce_13 = happySpecReduce_0 3# happyReduction_13 -happyReduction_13 = happyIn12 - (([],[],Nothing) - ) - -happyReduce_14 = happyReduce 4# 4# happyReduction_14 -happyReduction_14 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LANGUAGE) -> - case happyOut14 happy_x_2 of { happy_var_2 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> - happyIn13 - (LanguagePragma (happy_var_1 <^^> happy_var_4 <** (happy_var_1:snd happy_var_2 ++ reverse happy_var_3 ++ [happy_var_4])) (fst happy_var_2) - ) `HappyStk` happyRest}}}} - -happyReduce_15 = happySpecReduce_3 4# happyReduction_15 -happyReduction_15 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut21 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn13 - (let Loc l (INCLUDE s) = happy_var_1 in IncludePragma (l <^^> happy_var_3 <** (l:reverse happy_var_2 ++ [happy_var_3])) s - )}}} - -happyReduce_16 = happySpecReduce_3 4# happyReduction_16 -happyReduction_16 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut21 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn13 - (let Loc l (OPTIONS (mc, s)) = happy_var_1 - in OptionsPragma (l <^^> happy_var_3 <** (l:reverse happy_var_2 ++ [happy_var_3])) (readTool mc) s - )}}} - -happyReduce_17 = happySpecReduce_3 4# happyReduction_17 -happyReduction_17 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut21 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn13 - (let Loc l (CFILES s) = happy_var_1 - in CFilesPragma (l <^^> happy_var_3 <** (l:reverse happy_var_2 ++ [happy_var_3])) s - )}}} - -happyReduce_18 = happySpecReduce_3 5# happyReduction_18 -happyReduction_18 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut209 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut14 happy_x_3 of { happy_var_3 -> - happyIn14 - ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3) - )}}} - -happyReduce_19 = happySpecReduce_1 5# happyReduction_19 -happyReduction_19 happy_x_1 - = case happyOut209 happy_x_1 of { happy_var_1 -> - happyIn14 - (([happy_var_1],[]) - )} - -happyReduce_20 = happySpecReduce_2 6# happyReduction_20 -happyReduction_20 happy_x_2 - happy_x_1 - = case happyOut16 happy_x_1 of { happy_var_1 -> - case happyOut18 happy_x_2 of { happy_var_2 -> - happyIn15 - (let (is,ds,ss1,inf) = happy_var_2 - in \os ss l -> Module (l <++> inf <** (ss ++ ss1)) happy_var_1 os is ds - )}} - -happyReduce_21 = happyReduce 5# 7# happyReduction_21 -happyReduction_21 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> - case happyOut220 happy_x_2 of { happy_var_2 -> - case happyOut17 happy_x_3 of { happy_var_3 -> - case happyOut22 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Where) -> - happyIn16 - (Just $ ModuleHead (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 happy_var_3 happy_var_4 - ) `HappyStk` happyRest}}}}} - -happyReduce_22 = happySpecReduce_0 7# happyReduction_22 -happyReduction_22 = happyIn16 - (Nothing - ) - -happyReduce_23 = happySpecReduce_3 8# happyReduction_23 -happyReduction_23 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 DEPRECATED) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn17 - (let Loc l (StringTok (s,_)) = happy_var_2 in Just $ DeprText (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) s - )}}} - -happyReduce_24 = happySpecReduce_3 8# happyReduction_24 -happyReduction_24 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 WARNING) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn17 - (let Loc l (StringTok (s,_)) = happy_var_2 in Just $ WarnText (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) s - )}}} - -happyReduce_25 = happySpecReduce_0 8# happyReduction_25 -happyReduction_25 = happyIn17 - (Nothing - ) - -happyReduce_26 = happySpecReduce_3 9# happyReduction_26 -happyReduction_26 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut19 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn18 - (let (is,ds,ss) = happy_var_2 in (is,ds,happy_var_1:ss ++ [happy_var_3], happy_var_1 <^^> happy_var_3) - )}}} - -happyReduce_27 = happySpecReduce_3 9# happyReduction_27 -happyReduction_27 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut19 happy_x_2 of { happy_var_2 -> - case happyOut219 happy_x_3 of { happy_var_3 -> - happyIn18 - (let (is,ds,ss) = happy_var_2 in (is,ds,happy_var_1:ss ++ [happy_var_3], happy_var_1 <^^> happy_var_3) - )}}} - -happyReduce_28 = happyReduce 4# 10# happyReduction_28 -happyReduction_28 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut21 happy_x_1 of { happy_var_1 -> - case happyOut27 happy_x_2 of { happy_var_2 -> - case happyOut20 happy_x_3 of { happy_var_3 -> - case happyOut44 happy_x_4 of { happy_var_4 -> - happyIn19 - ((reverse (fst happy_var_2), fst happy_var_4, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3 ++ snd happy_var_4) - ) `HappyStk` happyRest}}}} - -happyReduce_29 = happySpecReduce_2 10# happyReduction_29 -happyReduction_29 happy_x_2 - happy_x_1 - = case happyOut21 happy_x_1 of { happy_var_1 -> - case happyOut44 happy_x_2 of { happy_var_2 -> - happyIn19 - (([], fst happy_var_2, reverse happy_var_1 ++ snd happy_var_2) - )}} - -happyReduce_30 = happySpecReduce_3 10# happyReduction_30 -happyReduction_30 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut21 happy_x_1 of { happy_var_1 -> - case happyOut27 happy_x_2 of { happy_var_2 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - happyIn19 - ((reverse (fst happy_var_2), [], reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3) - )}}} - -happyReduce_31 = happySpecReduce_1 10# happyReduction_31 -happyReduction_31 happy_x_1 - = case happyOut21 happy_x_1 of { happy_var_1 -> - happyIn19 - (([], [], reverse happy_var_1) - )} - -happyReduce_32 = happySpecReduce_2 11# happyReduction_32 -happyReduction_32 happy_x_2 - happy_x_1 - = case happyOut21 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> - happyIn20 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_33 = happySpecReduce_1 12# happyReduction_33 -happyReduction_33 happy_x_1 - = case happyOut20 happy_x_1 of { happy_var_1 -> - happyIn21 - (happy_var_1 - )} - -happyReduce_34 = happySpecReduce_0 12# happyReduction_34 -happyReduction_34 = happyIn21 - ([] - ) - -happyReduce_35 = happySpecReduce_1 13# happyReduction_35 -happyReduction_35 happy_x_1 - = case happyOut23 happy_x_1 of { happy_var_1 -> - happyIn22 - (Just happy_var_1 - )} - -happyReduce_36 = happySpecReduce_0 13# happyReduction_36 -happyReduction_36 = happyIn22 - (Nothing - ) - -happyReduce_37 = happyReduce 4# 14# happyReduction_37 -happyReduction_37 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut25 happy_x_2 of { happy_var_2 -> - case happyOut24 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn23 - (ExportSpecList (happy_var_1 <^^> happy_var_4 <** (happy_var_1:reverse (snd happy_var_2) ++ happy_var_3 ++ [happy_var_4])) (reverse (fst happy_var_2)) - ) `HappyStk` happyRest}}}} - -happyReduce_38 = happySpecReduce_3 14# happyReduction_38 -happyReduction_38 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut24 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn23 - (ExportSpecList (happy_var_1 <^^> happy_var_3 <** (happy_var_1:happy_var_2++[happy_var_3])) [] - )}}} - -happyReduce_39 = happySpecReduce_1 15# happyReduction_39 -happyReduction_39 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Comma) -> - happyIn24 - ([happy_var_1] - )} - -happyReduce_40 = happySpecReduce_0 15# happyReduction_40 -happyReduction_40 = happyIn24 - ([ ] - ) - -happyReduce_41 = happySpecReduce_3 16# happyReduction_41 -happyReduction_41 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut26 happy_x_3 of { happy_var_3 -> - happyIn25 - ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) - )}}} - -happyReduce_42 = happySpecReduce_1 16# happyReduction_42 -happyReduction_42 happy_x_1 - = case happyOut26 happy_x_1 of { happy_var_1 -> - happyIn25 - (([happy_var_1],[]) - )} - -happyReduce_43 = happySpecReduce_1 17# happyReduction_43 -happyReduction_43 happy_x_1 - = case happyOut191 happy_x_1 of { happy_var_1 -> - happyIn26 - (EVar (ann happy_var_1) happy_var_1 - )} - -happyReduce_44 = happySpecReduce_1 17# happyReduction_44 -happyReduction_44 happy_x_1 - = case happyOut222 happy_x_1 of { happy_var_1 -> - happyIn26 - (EAbs (ann happy_var_1) happy_var_1 - )} - -happyReduce_45 = happyReduce 4# 17# happyReduction_45 -happyReduction_45 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DotDot) -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn26 - (EThingAll (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_1 - ) `HappyStk` happyRest}}}} - -happyReduce_46 = happySpecReduce_3 17# happyReduction_46 -happyReduction_46 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn26 - (EThingWith (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]) happy_var_1 [] - )}}} - -happyReduce_47 = happyReduce 4# 17# happyReduction_47 -happyReduction_47 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut38 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn26 - (EThingWith (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) happy_var_1 (reverse (fst happy_var_3)) - ) `HappyStk` happyRest}}}} - -happyReduce_48 = happySpecReduce_2 17# happyReduction_48 -happyReduction_48 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> - case happyOut220 happy_x_2 of { happy_var_2 -> - happyIn26 - (EModuleContents (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_49 = happySpecReduce_3 18# happyReduction_49 -happyReduction_49 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut27 happy_x_1 of { happy_var_1 -> - case happyOut20 happy_x_2 of { happy_var_2 -> - case happyOut28 happy_x_3 of { happy_var_3 -> - happyIn27 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) - )}}} - -happyReduce_50 = happySpecReduce_1 18# happyReduction_50 -happyReduction_50 happy_x_1 - = case happyOut28 happy_x_1 of { happy_var_1 -> - happyIn27 - (([happy_var_1],[]) - )} - -happyReduce_51 = happyReduce 7# 19# happyReduction_51 -happyReduction_51 (happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Import) -> - case happyOut29 happy_x_2 of { happy_var_2 -> - case happyOut30 happy_x_3 of { happy_var_3 -> - case happyOut31 happy_x_4 of { happy_var_4 -> - case happyOut220 happy_x_5 of { happy_var_5 -> - case happyOut32 happy_x_6 of { happy_var_6 -> - case happyOut33 happy_x_7 of { happy_var_7 -> - happyIn28 - (let { (mmn,ss,ml) = happy_var_6 ; - l = nIS happy_var_1 <++> ann happy_var_5 <+?> ml <+?> (fmap ann) happy_var_7 <** (happy_var_1:snd happy_var_2 ++ snd happy_var_3 ++ snd happy_var_4 ++ ss)} - in ImportDecl l happy_var_5 (fst happy_var_3) (fst happy_var_2) (fst happy_var_4) mmn happy_var_7 - ) `HappyStk` happyRest}}}}}}} - -happyReduce_52 = happySpecReduce_2 20# happyReduction_52 -happyReduction_52 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 SOURCE) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> - happyIn29 - ((True,[happy_var_1,happy_var_2]) - )}} - -happyReduce_53 = happySpecReduce_0 20# happyReduction_53 -happyReduction_53 = happyIn29 - ((False,[]) - ) - -happyReduce_54 = happySpecReduce_1 21# happyReduction_54 -happyReduction_54 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> - happyIn30 - ((True,[happy_var_1]) - )} - -happyReduce_55 = happySpecReduce_0 21# happyReduction_55 -happyReduction_55 = happyIn30 - ((False, []) - ) - -happyReduce_56 = happyMonadReduce 1# 22# happyReduction_56 -happyReduction_56 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( do { checkEnabled PackageImports ; - let { Loc l (StringTok (s,_)) = happy_var_1 } ; - return $ (Just s,[l]) })} - ) (\r -> happyReturn (happyIn31 r)) - -happyReduce_57 = happySpecReduce_0 22# happyReduction_57 -happyReduction_57 = happyIn31 - ((Nothing,[]) - ) - -happyReduce_58 = happySpecReduce_2 23# happyReduction_58 -happyReduction_58 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> - case happyOut220 happy_x_2 of { happy_var_2 -> - happyIn32 - ((Just happy_var_2,[happy_var_1],Just (nIS happy_var_1 <++> ann happy_var_2)) - )}} - -happyReduce_59 = happySpecReduce_0 23# happyReduction_59 -happyReduction_59 = happyIn32 - ((Nothing,[],Nothing) - ) - -happyReduce_60 = happySpecReduce_1 24# happyReduction_60 -happyReduction_60 happy_x_1 - = case happyOut34 happy_x_1 of { happy_var_1 -> - happyIn33 - (Just happy_var_1 - )} - -happyReduce_61 = happySpecReduce_0 24# happyReduction_61 -happyReduction_61 = happyIn33 - (Nothing - ) - -happyReduce_62 = happyReduce 5# 25# happyReduction_62 -happyReduction_62 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut35 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut36 happy_x_3 of { happy_var_3 -> - case happyOut24 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> - happyIn34 - (let {(b,ml,s) = happy_var_1 ; - l = (ml <?+> (happy_var_2 <^^> happy_var_5)) <** (s ++ happy_var_2:reverse (snd happy_var_3) ++ happy_var_4 ++ [happy_var_5])} - in ImportSpecList l b (reverse (fst happy_var_3)) - ) `HappyStk` happyRest}}}}} - -happyReduce_63 = happyReduce 4# 25# happyReduction_63 -happyReduction_63 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut35 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut24 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn34 - (let {(b,ml,s) = happy_var_1 ; l = (ml <?+> (happy_var_2 <^^> happy_var_4)) <** (s ++ happy_var_2:happy_var_3 ++ [happy_var_4])} - in ImportSpecList l b [] - ) `HappyStk` happyRest}}}} - -happyReduce_64 = happySpecReduce_1 26# happyReduction_64 -happyReduction_64 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> - happyIn35 - ((True,Just (nIS happy_var_1),[happy_var_1]) - )} - -happyReduce_65 = happySpecReduce_0 26# happyReduction_65 -happyReduction_65 = happyIn35 - ((False,Nothing,[]) - ) - -happyReduce_66 = happySpecReduce_3 27# happyReduction_66 -happyReduction_66 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut36 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut37 happy_x_3 of { happy_var_3 -> - happyIn36 - ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) - )}}} - -happyReduce_67 = happySpecReduce_1 27# happyReduction_67 -happyReduction_67 happy_x_1 - = case happyOut37 happy_x_1 of { happy_var_1 -> - happyIn36 - (([happy_var_1],[]) - )} - -happyReduce_68 = happySpecReduce_1 28# happyReduction_68 -happyReduction_68 happy_x_1 - = case happyOut189 happy_x_1 of { happy_var_1 -> - happyIn37 - (IVar (ann happy_var_1) happy_var_1 - )} - -happyReduce_69 = happySpecReduce_1 28# happyReduction_69 -happyReduction_69 happy_x_1 - = case happyOut221 happy_x_1 of { happy_var_1 -> - happyIn37 - (IAbs (ann happy_var_1) happy_var_1 - )} - -happyReduce_70 = happyReduce 4# 28# happyReduction_70 -happyReduction_70 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut221 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DotDot) -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn37 - (IThingAll (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_1 - ) `HappyStk` happyRest}}}} - -happyReduce_71 = happySpecReduce_3 28# happyReduction_71 -happyReduction_71 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut221 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn37 - (IThingWith (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]) happy_var_1 [] - )}}} - -happyReduce_72 = happyReduce 4# 28# happyReduction_72 -happyReduction_72 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut221 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut38 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn37 - (IThingWith (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) happy_var_1 (reverse (fst happy_var_3)) - ) `HappyStk` happyRest}}}} - -happyReduce_73 = happySpecReduce_3 29# happyReduction_73 -happyReduction_73 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut39 happy_x_3 of { happy_var_3 -> - happyIn38 - ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) - )}}} - -happyReduce_74 = happySpecReduce_1 29# happyReduction_74 -happyReduction_74 happy_x_1 - = case happyOut39 happy_x_1 of { happy_var_1 -> - happyIn38 - (([happy_var_1],[]) - )} - -happyReduce_75 = happySpecReduce_1 30# happyReduction_75 -happyReduction_75 happy_x_1 - = case happyOut189 happy_x_1 of { happy_var_1 -> - happyIn39 - (VarName (ann happy_var_1) happy_var_1 - )} - -happyReduce_76 = happySpecReduce_1 30# happyReduction_76 -happyReduction_76 happy_x_1 - = case happyOut193 happy_x_1 of { happy_var_1 -> - happyIn39 - (ConName (ann happy_var_1) happy_var_1 - )} - -happyReduce_77 = happySpecReduce_3 31# happyReduction_77 -happyReduction_77 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut42 happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_2 of { happy_var_2 -> - case happyOut43 happy_x_3 of { happy_var_3 -> - happyIn40 - (let (ops,ss,l) = happy_var_3 - in InfixDecl (ann happy_var_1 <++> l <** (snd happy_var_2 ++ reverse ss)) happy_var_1 (fst happy_var_2) (reverse ops) - )}}} - -happyReduce_78 = happySpecReduce_0 32# happyReduction_78 -happyReduction_78 = happyIn41 - ((Nothing, []) - ) - -happyReduce_79 = happyMonadReduce 1# 32# happyReduction_79 -happyReduction_79 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( let Loc l (IntTok (i,_)) = happy_var_1 in checkPrec i >>= \i -> return (Just i, [l]))} - ) (\r -> happyReturn (happyIn41 r)) - -happyReduce_80 = happySpecReduce_1 33# happyReduction_80 -happyReduction_80 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Infix) -> - happyIn42 - (AssocNone $ nIS happy_var_1 - )} - -happyReduce_81 = happySpecReduce_1 33# happyReduction_81 -happyReduction_81 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixL) -> - happyIn42 - (AssocLeft $ nIS happy_var_1 - )} - -happyReduce_82 = happySpecReduce_1 33# happyReduction_82 -happyReduction_82 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixR) -> - happyIn42 - (AssocRight $ nIS happy_var_1 - )} - -happyReduce_83 = happySpecReduce_3 34# happyReduction_83 -happyReduction_83 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut43 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut200 happy_x_3 of { happy_var_3 -> - happyIn43 - (let (ops,ss,l) = happy_var_1 in (happy_var_3 : ops, happy_var_2 : ss, l <++> ann happy_var_3) - )}}} - -happyReduce_84 = happySpecReduce_1 34# happyReduction_84 -happyReduction_84 happy_x_1 - = case happyOut200 happy_x_1 of { happy_var_1 -> - happyIn43 - (([happy_var_1],[],ann happy_var_1) - )} - -happyReduce_85 = happyMonadReduce 2# 35# happyReduction_85 -happyReduction_85 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut45 happy_x_1 of { happy_var_1 -> - case happyOut21 happy_x_2 of { happy_var_2 -> - ( checkRevDecls (fst happy_var_1) >>= \ds -> return (ds, snd happy_var_1 ++ reverse happy_var_2))}} - ) (\r -> happyReturn (happyIn44 r)) - -happyReduce_86 = happySpecReduce_3 36# happyReduction_86 -happyReduction_86 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut45 happy_x_1 of { happy_var_1 -> - case happyOut20 happy_x_2 of { happy_var_2 -> - case happyOut46 happy_x_3 of { happy_var_3 -> - happyIn45 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) - )}}} - -happyReduce_87 = happySpecReduce_1 36# happyReduction_87 -happyReduction_87 happy_x_1 - = case happyOut46 happy_x_1 of { happy_var_1 -> - happyIn45 - (([happy_var_1],[]) - )} - -happyReduce_88 = happyMonadReduce 4# 37# happyReduction_88 -happyReduction_88 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOut72 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> - case happyOut82 happy_x_4 of { happy_var_4 -> - ( do { dh <- checkSimpleType happy_var_2; - let {l = nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]}; - return (TypeDecl l dh happy_var_4) })}}}} - ) (\r -> happyReturn (happyIn46 r)) - -happyReduce_89 = happyMonadReduce 4# 37# happyReduction_89 -happyReduction_89 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Family) -> - case happyOut74 happy_x_3 of { happy_var_3 -> - case happyOut117 happy_x_4 of { happy_var_4 -> - ( do { dh <- checkSimpleType happy_var_3; - let {l = nIS happy_var_1 <++> ann happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** (happy_var_1:happy_var_2:snd happy_var_4)}; - return (TypeFamDecl l dh (fst happy_var_4)) })}}}} - ) (\r -> happyReturn (happyIn46 r)) - -happyReduce_90 = happyMonadReduce 5# 37# happyReduction_90 -happyReduction_90 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut71 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 Equals) -> - case happyOut82 happy_x_5 of { happy_var_5 -> - ( do { -- no checkSimpleType happy_var_4 since dtype may contain type patterns - checkEnabled TypeFamilies ; - let {l = nIS happy_var_1 <++> ann happy_var_5 <** [happy_var_1,happy_var_2,happy_var_4]}; - return (TypeInsDecl l happy_var_3 happy_var_5) })}}}}} - ) (\r -> happyReturn (happyIn46 r)) - -happyReduce_91 = happyMonadReduce 4# 37# happyReduction_91 -happyReduction_91 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> - case happyOut83 happy_x_2 of { happy_var_2 -> - case happyOut99 happy_x_3 of { happy_var_3 -> - case happyOut111 happy_x_4 of { happy_var_4 -> - ( do { (cs,dh) <- checkDataHeader happy_var_2; - let { (qds,ss,minf) = happy_var_3; - l = happy_var_1 <> happy_var_2 <+?> minf <+?> fmap ann happy_var_4 <** ss}; - checkDataOrNew happy_var_1 qds; - return (DataDecl l happy_var_1 cs dh (reverse qds) happy_var_4) })}}}} - ) (\r -> happyReturn (happyIn46 r)) - -happyReduce_92 = happyMonadReduce 6# 37# happyReduction_92 -happyReduction_92 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> - case happyOut83 happy_x_2 of { happy_var_2 -> - case happyOut117 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 KW_Where) -> - case happyOut94 happy_x_5 of { happy_var_5 -> - case happyOut111 happy_x_6 of { happy_var_6 -> - ( do { (cs,dh) <- checkDataHeader happy_var_2; - let { (gs,ss,inf) = happy_var_5; - l = ann happy_var_1 <++> inf <+?> fmap ann happy_var_6 <** (snd happy_var_3 ++ happy_var_4:ss)}; - checkDataOrNew happy_var_1 gs; - return (GDataDecl l happy_var_1 cs dh (fst happy_var_3) (reverse gs) happy_var_6) })}}}}}} - ) (\r -> happyReturn (happyIn46 r)) - -happyReduce_93 = happyMonadReduce 4# 37# happyReduction_93 -happyReduction_93 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Family) -> - case happyOut83 happy_x_3 of { happy_var_3 -> - case happyOut117 happy_x_4 of { happy_var_4 -> - ( do { (cs,dh) <- checkDataHeader happy_var_3; - let {l = nIS happy_var_1 <++> ann happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** (happy_var_1:happy_var_2:snd happy_var_4)}; - return (DataFamDecl l cs dh (fst happy_var_4)) })}}}} - ) (\r -> happyReturn (happyIn46 r)) - -happyReduce_94 = happyMonadReduce 5# 37# happyReduction_94 -happyReduction_94 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut82 happy_x_3 of { happy_var_3 -> - case happyOut99 happy_x_4 of { happy_var_4 -> - case happyOut111 happy_x_5 of { happy_var_5 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; - checkEnabled TypeFamilies ; - let { (qds,ss,minf) = happy_var_4 ; - l = happy_var_1 <> happy_var_3 <+?> minf <+?> fmap ann happy_var_5 <** happy_var_2:ss }; - checkDataOrNew happy_var_1 qds; - return (DataInsDecl l happy_var_1 happy_var_3 (reverse qds) happy_var_5) })}}}}} - ) (\r -> happyReturn (happyIn46 r)) - -happyReduce_95 = happyMonadReduce 7# 37# happyReduction_95 -happyReduction_95 (happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut82 happy_x_3 of { happy_var_3 -> - case happyOut117 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Where) -> - case happyOut94 happy_x_6 of { happy_var_6 -> - case happyOut111 happy_x_7 of { happy_var_7 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; - checkEnabled TypeFamilies ; - let {(gs,ss,inf) = happy_var_6; - l = ann happy_var_1 <++> inf <+?> fmap ann happy_var_7 <** (happy_var_2:snd happy_var_4 ++ happy_var_5:ss)}; - checkDataOrNew happy_var_1 gs; - return (GDataInsDecl l happy_var_1 happy_var_3 (fst happy_var_4) (reverse gs) happy_var_7) })}}}}}}} - ) (\r -> happyReturn (happyIn46 r)) - -happyReduce_96 = happyMonadReduce 4# 37# happyReduction_96 -happyReduction_96 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Class) -> - case happyOut83 happy_x_2 of { happy_var_2 -> - case happyOut91 happy_x_3 of { happy_var_3 -> - case happyOut118 happy_x_4 of { happy_var_4 -> - ( do { (cs,dh) <- checkClassHeader happy_var_2; - let {(fds,ss1,minf1) = happy_var_3;(mcs,ss2,minf2) = happy_var_4} ; - let { l = nIS happy_var_1 <++> ann happy_var_2 <+?> minf1 <+?> minf2 <** (happy_var_1:ss1 ++ ss2)} ; - return (ClassDecl l cs dh fds mcs) })}}}} - ) (\r -> happyReturn (happyIn46 r)) - -happyReduce_97 = happyMonadReduce 3# 37# happyReduction_97 -happyReduction_97 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Instance) -> - case happyOut83 happy_x_2 of { happy_var_2 -> - case happyOut123 happy_x_3 of { happy_var_3 -> - ( do { (cs,ih) <- checkInstHeader happy_var_2; - let {(mis,ss,minf) = happy_var_3}; - return (InstDecl (nIS happy_var_1 <++> ann happy_var_2 <+?> minf <** (happy_var_1:ss)) cs ih mis) })}}} - ) (\r -> happyReturn (happyIn46 r)) - -happyReduce_98 = happyMonadReduce 3# 37# happyReduction_98 -happyReduction_98 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut83 happy_x_3 of { happy_var_3 -> - ( do { checkEnabled StandaloneDeriving ; - (cs, ih) <- checkInstHeader happy_var_3; - let {l = nIS happy_var_1 <++> ann happy_var_3 <** [happy_var_1,happy_var_2]}; - return (DerivDecl l cs ih) })}}} - ) (\r -> happyReturn (happyIn46 r)) - -happyReduce_99 = happyReduce 4# 37# happyReduction_99 -happyReduction_99 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Default) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut48 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn46 - (DefaultDecl (happy_var_1 <^^> happy_var_4 <** (happy_var_1:happy_var_2 : snd happy_var_3 ++ [happy_var_4])) (fst happy_var_3) - ) `HappyStk` happyRest}}}} - -happyReduce_100 = happySpecReduce_3 37# happyReduction_100 -happyReduction_100 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THParenEscape) -> - case happyOut135 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn46 - (let l = happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3] in SpliceDecl l $ ParenSplice l happy_var_2 - )}}} - -happyReduce_101 = happyReduce 5# 37# happyReduction_101 -happyReduction_101 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Import) -> - case happyOut58 happy_x_3 of { happy_var_3 -> - case happyOut59 happy_x_4 of { happy_var_4 -> - case happyOut60 happy_x_5 of { happy_var_5 -> - happyIn46 - (let (s,n,t,ss) = happy_var_5 in ForImp (nIS happy_var_1 <++> ann t <** (happy_var_1:happy_var_2:ss)) happy_var_3 happy_var_4 s n t - ) `HappyStk` happyRest}}}}} - -happyReduce_102 = happyReduce 4# 37# happyReduction_102 -happyReduction_102 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Export) -> - case happyOut58 happy_x_3 of { happy_var_3 -> - case happyOut60 happy_x_4 of { happy_var_4 -> - happyIn46 - (let (s,n,t,ss) = happy_var_4 in ForExp (nIS happy_var_1 <++> ann t <** (happy_var_1:happy_var_2:ss)) happy_var_3 s n t - ) `HappyStk` happyRest}}}} - -happyReduce_103 = happySpecReduce_3 37# happyReduction_103 -happyReduction_103 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 RULES) -> - case happyOut61 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn46 - (RulePragmaDecl (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ reverse happy_var_2 - )}}} - -happyReduce_104 = happySpecReduce_3 37# happyReduction_104 -happyReduction_104 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 DEPRECATED) -> - case happyOut67 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn46 - (DeprPragmaDecl (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) $ reverse (fst happy_var_2) - )}}} - -happyReduce_105 = happySpecReduce_3 37# happyReduction_105 -happyReduction_105 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 WARNING) -> - case happyOut67 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - happyIn46 - (WarnPragmaDecl (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) $ reverse (fst happy_var_2) - )}}} - -happyReduce_106 = happySpecReduce_1 37# happyReduction_106 -happyReduction_106 happy_x_1 - = case happyOut51 happy_x_1 of { happy_var_1 -> - happyIn46 - (happy_var_1 - )} - -happyReduce_107 = happySpecReduce_1 38# happyReduction_107 -happyReduction_107 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> - happyIn47 - (DataType $ nIS happy_var_1 - )} - -happyReduce_108 = happySpecReduce_1 38# happyReduction_108 -happyReduction_108 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_NewType) -> - happyIn47 - (NewType $ nIS happy_var_1 - )} - -happyReduce_109 = happyMonadReduce 1# 39# happyReduction_109 -happyReduction_109 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut85 happy_x_1 of { happy_var_1 -> - ( do { ts <- mapM checkType (fst happy_var_1); - return $ (reverse ts, reverse (snd happy_var_1)) })} - ) (\r -> happyReturn (happyIn48 r)) - -happyReduce_110 = happySpecReduce_1 39# happyReduction_110 -happyReduction_110 happy_x_1 - = case happyOut73 happy_x_1 of { happy_var_1 -> - happyIn48 - (([happy_var_1],[]) - )} - -happyReduce_111 = happySpecReduce_0 39# happyReduction_111 -happyReduction_111 = happyIn48 - (([],[]) - ) - -happyReduce_112 = happyMonadReduce 3# 40# happyReduction_112 -happyReduction_112 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut21 happy_x_1 of { happy_var_1 -> - case happyOut50 happy_x_2 of { happy_var_2 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - ( checkRevDecls (fst happy_var_2) >>= \ds -> return (ds, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}} - ) (\r -> happyReturn (happyIn49 r)) - -happyReduce_113 = happySpecReduce_1 40# happyReduction_113 -happyReduction_113 happy_x_1 - = case happyOut21 happy_x_1 of { happy_var_1 -> - happyIn49 - (([],reverse happy_var_1) - )} - -happyReduce_114 = happySpecReduce_3 41# happyReduction_114 -happyReduction_114 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut50 happy_x_1 of { happy_var_1 -> - case happyOut20 happy_x_2 of { happy_var_2 -> - case happyOut51 happy_x_3 of { happy_var_3 -> - happyIn50 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) - )}}} - -happyReduce_115 = happySpecReduce_1 41# happyReduction_115 -happyReduction_115 happy_x_1 - = case happyOut51 happy_x_1 of { happy_var_1 -> - happyIn50 - (([happy_var_1],[]) - )} - -happyReduce_116 = happySpecReduce_1 42# happyReduction_116 -happyReduction_116 happy_x_1 - = case happyOut53 happy_x_1 of { happy_var_1 -> - happyIn51 - (happy_var_1 - )} - -happyReduce_117 = happySpecReduce_1 42# happyReduction_117 -happyReduction_117 happy_x_1 - = case happyOut40 happy_x_1 of { happy_var_1 -> - happyIn51 - (happy_var_1 - )} - -happyReduce_118 = happySpecReduce_1 42# happyReduction_118 -happyReduction_118 happy_x_1 - = case happyOut129 happy_x_1 of { happy_var_1 -> - happyIn51 - (happy_var_1 - )} - -happyReduce_119 = happySpecReduce_3 43# happyReduction_119 -happyReduction_119 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut49 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn52 - (BDecls (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) (fst happy_var_2) - )}}} - -happyReduce_120 = happySpecReduce_3 43# happyReduction_120 -happyReduction_120 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut49 happy_x_2 of { happy_var_2 -> - case happyOut219 happy_x_3 of { happy_var_3 -> - happyIn52 - (BDecls (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) (fst happy_var_2) - )}}} - -happyReduce_121 = happyMonadReduce 3# 44# happyReduction_121 -happyReduction_121 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut139 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut82 happy_x_3 of { happy_var_3 -> - ( do { v <- checkSigVar happy_var_1; - return $ TypeSig (happy_var_1 <> happy_var_3 <** [happy_var_2]) [v] happy_var_3 })}}} - ) (\r -> happyReturn (happyIn53 r)) - -happyReduce_122 = happyMonadReduce 5# 44# happyReduction_122 -happyReduction_122 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut139 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut57 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleColon) -> - case happyOut82 happy_x_5 of { happy_var_5 -> - ( do { v <- checkSigVar happy_var_1; - let {(vs,ss,_) = happy_var_3 ; l = happy_var_1 <> happy_var_5 <** (happy_var_2 : reverse ss ++ [happy_var_4]) } ; - return $ TypeSig l (v : reverse vs) happy_var_5 })}}}}} - ) (\r -> happyReturn (happyIn53 r)) - -happyReduce_123 = happyReduce 4# 44# happyReduction_123 -happyReduction_123 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut63 happy_x_2 of { happy_var_2 -> - case happyOut191 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> - happyIn53 - (let Loc l (INLINE s) = happy_var_1 in InlineSig (l <^^> happy_var_4 <** [l,happy_var_4]) s happy_var_2 happy_var_3 - ) `HappyStk` happyRest}}}} - -happyReduce_124 = happyReduce 5# 44# happyReduction_124 -happyReduction_124 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 SPECIALISE) -> - case happyOut191 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut54 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 PragmaEnd) -> - happyIn53 - (SpecSig (happy_var_1 <^^> happy_var_5 <** (happy_var_1:happy_var_3 : snd happy_var_4 ++ [happy_var_5])) happy_var_2 (fst happy_var_4) - ) `HappyStk` happyRest}}}}} - -happyReduce_125 = happyReduce 6# 44# happyReduction_125 -happyReduction_125 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut63 happy_x_2 of { happy_var_2 -> - case happyOut191 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleColon) -> - case happyOut54 happy_x_5 of { happy_var_5 -> - case happyOutTok happy_x_6 of { (Loc happy_var_6 PragmaEnd) -> - happyIn53 - (let Loc l (SPECIALISE_INLINE s) = happy_var_1 - in SpecInlineSig (l <^^> happy_var_6 <** (l:happy_var_4:snd happy_var_5++[happy_var_6])) s happy_var_2 happy_var_3 (fst happy_var_5) - ) `HappyStk` happyRest}}}}}} - -happyReduce_126 = happyMonadReduce 4# 44# happyReduction_126 -happyReduction_126 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 SPECIALISE) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> - case happyOut83 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> - ( do { (cs,ih) <- checkInstHeader happy_var_3; - let {l = happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_2,happy_var_4]}; - return $ InstSig l cs ih })}}}} - ) (\r -> happyReturn (happyIn53 r)) - -happyReduce_127 = happySpecReduce_1 45# happyReduction_127 -happyReduction_127 happy_x_1 - = case happyOut55 happy_x_1 of { happy_var_1 -> - happyIn54 - (([happy_var_1],[]) - )} - -happyReduce_128 = happySpecReduce_3 45# happyReduction_128 -happyReduction_128 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut55 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut54 happy_x_3 of { happy_var_3 -> - happyIn54 - ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3) - )}}} - -happyReduce_129 = happyMonadReduce 1# 46# happyReduction_129 -happyReduction_129 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut83 happy_x_1 of { happy_var_1 -> - ( checkType $ mkTyForall (ann happy_var_1) Nothing Nothing happy_var_1)} - ) (\r -> happyReturn (happyIn55 r)) - -happyReduce_130 = happySpecReduce_1 47# happyReduction_130 -happyReduction_130 happy_x_1 - = case happyOut52 happy_x_1 of { happy_var_1 -> - happyIn56 - (happy_var_1 - )} - -happyReduce_131 = happySpecReduce_3 47# happyReduction_131 -happyReduction_131 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut185 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn56 - (IPBinds (happy_var_1 <^^> happy_var_3 <** snd happy_var_2) (fst happy_var_2) - )}}} - -happyReduce_132 = happySpecReduce_3 47# happyReduction_132 -happyReduction_132 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut185 happy_x_2 of { happy_var_2 -> - case happyOut219 happy_x_3 of { happy_var_3 -> - happyIn56 - (IPBinds (happy_var_1 <^^> happy_var_3 <** snd happy_var_2) (fst happy_var_2) - )}}} - -happyReduce_133 = happySpecReduce_3 48# happyReduction_133 -happyReduction_133 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut57 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut189 happy_x_3 of { happy_var_3 -> - happyIn57 - (let (ns,ss,l) = happy_var_1 in (happy_var_3 : ns, happy_var_2 : ss, l <++> ann happy_var_3) - )}}} - -happyReduce_134 = happyMonadReduce 1# 48# happyReduction_134 -happyReduction_134 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut191 happy_x_1 of { happy_var_1 -> - ( do { n <- checkUnQual happy_var_1; - return ([n],[],ann n) })} - ) (\r -> happyReturn (happyIn57 r)) - -happyReduce_135 = happySpecReduce_1 49# happyReduction_135 -happyReduction_135 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> - happyIn58 - (StdCall (nIS happy_var_1) - )} - -happyReduce_136 = happySpecReduce_1 49# happyReduction_136 -happyReduction_136 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> - happyIn58 - (CCall (nIS happy_var_1) - )} - -happyReduce_137 = happySpecReduce_1 50# happyReduction_137 -happyReduction_137 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> - happyIn59 - (Just $ PlaySafe (nIS happy_var_1) False - )} - -happyReduce_138 = happySpecReduce_1 50# happyReduction_138 -happyReduction_138 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> - happyIn59 - (Just $ PlayRisky (nIS happy_var_1) - )} - -happyReduce_139 = happySpecReduce_1 50# happyReduction_139 -happyReduction_139 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> - happyIn59 - (Just $ PlaySafe (nIS happy_var_1) True - )} - -happyReduce_140 = happySpecReduce_0 50# happyReduction_140 -happyReduction_140 = happyIn59 - (Nothing - ) - -happyReduce_141 = happyReduce 4# 51# happyReduction_141 -happyReduction_141 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut190 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut71 happy_x_4 of { happy_var_4 -> - happyIn60 - (let Loc l (StringTok (s,_)) = happy_var_1 in (Just s, happy_var_2, happy_var_4, [l,happy_var_3]) - ) `HappyStk` happyRest}}}} - -happyReduce_142 = happySpecReduce_3 51# happyReduction_142 -happyReduction_142 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut190 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut71 happy_x_3 of { happy_var_3 -> - happyIn60 - ((Nothing, happy_var_1, happy_var_3, [happy_var_2]) - )}}} - -happyReduce_143 = happySpecReduce_3 52# happyReduction_143 -happyReduction_143 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut61 happy_x_1 of { happy_var_1 -> - case happyOut62 happy_x_3 of { happy_var_3 -> - happyIn61 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_144 = happySpecReduce_2 52# happyReduction_144 -happyReduction_144 happy_x_2 - happy_x_1 - = case happyOut61 happy_x_1 of { happy_var_1 -> - happyIn61 - (happy_var_1 - )} - -happyReduce_145 = happySpecReduce_1 52# happyReduction_145 -happyReduction_145 happy_x_1 - = case happyOut62 happy_x_1 of { happy_var_1 -> - happyIn61 - ([happy_var_1] - )} - -happyReduce_146 = happySpecReduce_0 52# happyReduction_146 -happyReduction_146 = happyIn61 - ([] - ) - -happyReduce_147 = happyMonadReduce 6# 53# happyReduction_147 -happyReduction_147 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut63 happy_x_2 of { happy_var_2 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - case happyOut137 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 Equals) -> - case happyOut135 happy_x_6 of { happy_var_6 -> - ( do { let {Loc l (StringTok (s,_)) = happy_var_1}; - e <- checkRuleExpr happy_var_4; - return $ Rule (nIS l <++> ann happy_var_6 <** l:snd happy_var_3 ++ [happy_var_5]) s happy_var_2 (fst happy_var_3) e happy_var_6 })}}}}}} - ) (\r -> happyReturn (happyIn62 r)) - -happyReduce_148 = happySpecReduce_0 54# happyReduction_148 -happyReduction_148 = happyIn63 - (Nothing - ) - -happyReduce_149 = happySpecReduce_3 54# happyReduction_149 -happyReduction_149 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> - happyIn63 - (let Loc l (IntTok (i,_)) = happy_var_2 in Just $ ActiveFrom (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) (fromInteger i) - )}}} - -happyReduce_150 = happyReduce 4# 54# happyReduction_150 -happyReduction_150 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> - case happyOutTok happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightSquare) -> - happyIn63 - (let Loc l (IntTok (i,_)) = happy_var_3 in Just $ ActiveUntil (happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_2,l,happy_var_4]) (fromInteger i) - ) `HappyStk` happyRest}}}} - -happyReduce_151 = happySpecReduce_0 55# happyReduction_151 -happyReduction_151 = happyIn64 - ((Nothing,[]) - ) - -happyReduce_152 = happySpecReduce_3 55# happyReduction_152 -happyReduction_152 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> - happyIn64 - ((Just happy_var_2,[happy_var_1,happy_var_3]) - )}}} - -happyReduce_153 = happySpecReduce_1 56# happyReduction_153 -happyReduction_153 happy_x_1 - = case happyOut66 happy_x_1 of { happy_var_1 -> - happyIn65 - ([happy_var_1] - )} - -happyReduce_154 = happySpecReduce_2 56# happyReduction_154 -happyReduction_154 happy_x_2 - happy_x_1 - = case happyOut66 happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - happyIn65 - (happy_var_1 : happy_var_2 - )}} - -happyReduce_155 = happySpecReduce_1 57# happyReduction_155 -happyReduction_155 happy_x_1 - = case happyOut206 happy_x_1 of { happy_var_1 -> - happyIn66 - (RuleVar (ann happy_var_1) happy_var_1 - )} - -happyReduce_156 = happyReduce 5# 57# happyReduction_156 -happyReduction_156 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut206 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut82 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> - happyIn66 - (TypedRuleVar (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}}}} - -happyReduce_157 = happySpecReduce_3 58# happyReduction_157 -happyReduction_157 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut67 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> - case happyOut68 happy_x_3 of { happy_var_3 -> - happyIn67 - ((fst happy_var_3 : fst happy_var_1, snd happy_var_1 ++ (happy_var_2:snd happy_var_3)) - )}}} - -happyReduce_158 = happySpecReduce_2 58# happyReduction_158 -happyReduction_158 happy_x_2 - happy_x_1 - = case happyOut67 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> - happyIn67 - ((fst happy_var_1, snd happy_var_1 ++ [happy_var_2]) - )}} - -happyReduce_159 = happySpecReduce_1 58# happyReduction_159 -happyReduction_159 happy_x_1 - = case happyOut68 happy_x_1 of { happy_var_1 -> - happyIn67 - (([fst happy_var_1],snd happy_var_1) - )} - -happyReduce_160 = happySpecReduce_0 58# happyReduction_160 -happyReduction_160 = happyIn67 - (([],[]) - ) - -happyReduce_161 = happySpecReduce_2 59# happyReduction_161 -happyReduction_161 happy_x_2 - happy_x_1 - = case happyOut69 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { happy_var_2 -> - happyIn68 - (let Loc l (StringTok (s,_)) = happy_var_2 in ((fst happy_var_1,s),snd happy_var_1 ++ [l]) - )}} - -happyReduce_162 = happySpecReduce_1 60# happyReduction_162 -happyReduction_162 happy_x_1 - = case happyOut70 happy_x_1 of { happy_var_1 -> - happyIn69 - (([happy_var_1],[]) - )} - -happyReduce_163 = happySpecReduce_3 60# happyReduction_163 -happyReduction_163 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut70 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut69 happy_x_3 of { happy_var_3 -> - happyIn69 - ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3) - )}}} - -happyReduce_164 = happySpecReduce_1 61# happyReduction_164 -happyReduction_164 happy_x_1 - = case happyOut193 happy_x_1 of { happy_var_1 -> - happyIn70 - (happy_var_1 - )} - -happyReduce_165 = happySpecReduce_1 61# happyReduction_165 -happyReduction_165 happy_x_1 - = case happyOut189 happy_x_1 of { happy_var_1 -> - happyIn70 - (happy_var_1 - )} - -happyReduce_166 = happyMonadReduce 1# 62# happyReduction_166 -happyReduction_166 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut72 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn71 r)) - -happyReduce_167 = happySpecReduce_1 63# happyReduction_167 -happyReduction_167 happy_x_1 - = case happyOut76 happy_x_1 of { happy_var_1 -> - happyIn72 - (happy_var_1 - )} - -happyReduce_168 = happySpecReduce_3 63# happyReduction_168 -happyReduction_168 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut76 happy_x_1 of { happy_var_1 -> - case happyOut81 happy_x_2 of { happy_var_2 -> - case happyOut72 happy_x_3 of { happy_var_3 -> - happyIn72 - (TyInfix (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_169 = happySpecReduce_3 63# happyReduction_169 -happyReduction_169 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut76 happy_x_1 of { happy_var_1 -> - case happyOut224 happy_x_2 of { happy_var_2 -> - case happyOut72 happy_x_3 of { happy_var_3 -> - happyIn72 - (TyInfix (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_170 = happySpecReduce_3 63# happyReduction_170 -happyReduction_170 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut76 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOut83 happy_x_3 of { happy_var_3 -> - happyIn72 - (TyFun (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_171 = happyMonadReduce 3# 63# happyReduction_171 -happyReduction_171 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> - case happyOut76 happy_x_3 of { happy_var_3 -> - ( do { checkEnabled TypeFamilies ; - let {l = happy_var_1 <> happy_var_3 <** [happy_var_2]}; - return $ TyPred l $ EqualP l happy_var_1 happy_var_3 })}}} - ) (\r -> happyReturn (happyIn72 r)) - -happyReduce_172 = happyMonadReduce 1# 64# happyReduction_172 -happyReduction_172 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut74 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn73 r)) - -happyReduce_173 = happySpecReduce_3 65# happyReduction_173 -happyReduction_173 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut192 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut72 happy_x_3 of { happy_var_3 -> - happyIn74 - (let l = (happy_var_1 <> happy_var_3 <** [happy_var_2]) in TyPred l $ IParam l happy_var_1 happy_var_3 - )}}} - -happyReduce_174 = happySpecReduce_1 65# happyReduction_174 -happyReduction_174 happy_x_1 - = case happyOut72 happy_x_1 of { happy_var_1 -> - happyIn74 - (happy_var_1 - )} - -happyReduce_175 = happyMonadReduce 1# 66# happyReduction_175 -happyReduction_175 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn75 r)) - -happyReduce_176 = happySpecReduce_2 67# happyReduction_176 -happyReduction_176 happy_x_2 - happy_x_1 - = case happyOut76 happy_x_1 of { happy_var_1 -> - case happyOut78 happy_x_2 of { happy_var_2 -> - happyIn76 - (TyApp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2 - )}} - -happyReduce_177 = happySpecReduce_1 67# happyReduction_177 -happyReduction_177 happy_x_1 - = case happyOut78 happy_x_1 of { happy_var_1 -> - happyIn76 - (happy_var_1 - )} - -happyReduce_178 = happyMonadReduce 1# 68# happyReduction_178 -happyReduction_178 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut78 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn77 r)) - -happyReduce_179 = happySpecReduce_1 69# happyReduction_179 -happyReduction_179 happy_x_1 - = case happyOut79 happy_x_1 of { happy_var_1 -> - happyIn78 - (TyCon (ann happy_var_1) happy_var_1 - )} - -happyReduce_180 = happySpecReduce_1 69# happyReduction_180 -happyReduction_180 happy_x_1 - = case happyOut223 happy_x_1 of { happy_var_1 -> - happyIn78 - (TyVar (ann happy_var_1) happy_var_1 - )} - -happyReduce_181 = happySpecReduce_3 69# happyReduction_181 -happyReduction_181 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut85 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn78 - (TyTuple (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (happy_var_3:snd happy_var_2))) Boxed (reverse (fst happy_var_2)) - )}}} - -happyReduce_182 = happySpecReduce_3 69# happyReduction_182 -happyReduction_182 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOut86 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> - happyIn78 - (TyTuple (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (happy_var_3:snd happy_var_2))) Unboxed (reverse (fst happy_var_2)) - )}}} - -happyReduce_183 = happySpecReduce_3 69# happyReduction_183 -happyReduction_183 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOut74 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> - happyIn78 - (TyList (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 - )}}} - -happyReduce_184 = happySpecReduce_3 69# happyReduction_184 -happyReduction_184 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut83 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn78 - (TyParen (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 - )}}} - -happyReduce_185 = happyReduce 5# 69# happyReduction_185 -happyReduction_185 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut83 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut114 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> - happyIn78 - (TyKind (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}}}} - -happyReduce_186 = happySpecReduce_1 70# happyReduction_186 -happyReduction_186 happy_x_1 - = case happyOut80 happy_x_1 of { happy_var_1 -> - happyIn79 - (happy_var_1 - )} - -happyReduce_187 = happySpecReduce_2 70# happyReduction_187 -happyReduction_187 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> - happyIn79 - (unit_tycon_name (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) - )}} - -happyReduce_188 = happySpecReduce_3 70# happyReduction_188 -happyReduction_188 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn79 - (fun_tycon_name (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_2,happy_var_3]) - )}}} - -happyReduce_189 = happySpecReduce_2 70# happyReduction_189 -happyReduction_189 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightSquare) -> - happyIn79 - (list_tycon_name (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) - )}} - -happyReduce_190 = happySpecReduce_3 70# happyReduction_190 -happyReduction_190 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut149 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn79 - (tuple_tycon_name (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse happy_var_2 ++ [happy_var_3])) Boxed (length happy_var_2) - )}}} - -happyReduce_191 = happySpecReduce_2 70# happyReduction_191 -happyReduction_191 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightHashParen) -> - happyIn79 - (unboxed_singleton_tycon_name (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) - )}} - -happyReduce_192 = happySpecReduce_3 70# happyReduction_192 -happyReduction_192 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOut149 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> - happyIn79 - (tuple_tycon_name (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse happy_var_2 ++ [happy_var_3])) Unboxed (length happy_var_2) - )}}} - -happyReduce_193 = happySpecReduce_1 71# happyReduction_193 -happyReduction_193 happy_x_1 - = case happyOut208 happy_x_1 of { happy_var_1 -> - happyIn80 - (happy_var_1 - )} - -happyReduce_194 = happySpecReduce_3 71# happyReduction_194 -happyReduction_194 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut203 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn80 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_195 = happySpecReduce_1 72# happyReduction_195 -happyReduction_195 happy_x_1 - = case happyOut199 happy_x_1 of { happy_var_1 -> - happyIn81 - (happy_var_1 - )} - -happyReduce_196 = happyMonadReduce 1# 73# happyReduction_196 -happyReduction_196 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut83 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn82 r)) - -happyReduce_197 = happyReduce 4# 74# happyReduction_197 -happyReduction_197 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> - case happyOut87 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> - case happyOut83 happy_x_4 of { happy_var_4 -> - happyIn83 - (TyForall (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) (Just (reverse (fst happy_var_2))) Nothing happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_198 = happySpecReduce_2 74# happyReduction_198 -happyReduction_198 happy_x_2 - happy_x_1 - = case happyOut84 happy_x_1 of { happy_var_1 -> - case happyOut83 happy_x_2 of { happy_var_2 -> - happyIn83 - (TyForall (happy_var_1 <> happy_var_2) Nothing (Just happy_var_1) happy_var_2 - )}} - -happyReduce_199 = happySpecReduce_1 74# happyReduction_199 -happyReduction_199 happy_x_1 - = case happyOut74 happy_x_1 of { happy_var_1 -> - happyIn83 - (happy_var_1 - )} - -happyReduce_200 = happyMonadReduce 2# 75# happyReduction_200 -happyReduction_200 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleArrow) -> - ( checkPContext $ (amap (\l -> l <++> nIS happy_var_2 <** (srcInfoPoints l ++ [happy_var_2]))) happy_var_1)}} - ) (\r -> happyReturn (happyIn84 r)) - -happyReduce_201 = happyMonadReduce 4# 75# happyReduction_201 -happyReduction_201 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> - case happyOut76 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleArrow) -> - ( do { checkEnabled TypeFamilies; - let {l = happy_var_1 <> happy_var_3 <** [happy_var_2,happy_var_4]}; - checkPContext (TyPred l $ EqualP l happy_var_1 happy_var_3) })}}}} - ) (\r -> happyReturn (happyIn84 r)) - -happyReduce_202 = happySpecReduce_3 76# happyReduction_202 -happyReduction_202 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut86 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut83 happy_x_3 of { happy_var_3 -> - happyIn85 - ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) - )}}} - -happyReduce_203 = happySpecReduce_1 77# happyReduction_203 -happyReduction_203 happy_x_1 - = case happyOut83 happy_x_1 of { happy_var_1 -> - happyIn86 - (([happy_var_1],[]) - )} - -happyReduce_204 = happySpecReduce_3 77# happyReduction_204 -happyReduction_204 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut86 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut83 happy_x_3 of { happy_var_3 -> - happyIn86 - ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) - )}}} - -happyReduce_205 = happySpecReduce_2 78# happyReduction_205 -happyReduction_205 happy_x_2 - happy_x_1 - = case happyOut87 happy_x_1 of { happy_var_1 -> - case happyOut88 happy_x_2 of { happy_var_2 -> - happyIn87 - ((happy_var_2 : fst happy_var_1, Just (snd happy_var_1 <?+> ann happy_var_2)) - )}} - -happyReduce_206 = happySpecReduce_0 78# happyReduction_206 -happyReduction_206 = happyIn87 - (([],Nothing) - ) - -happyReduce_207 = happySpecReduce_1 79# happyReduction_207 -happyReduction_207 happy_x_1 - = case happyOut223 happy_x_1 of { happy_var_1 -> - happyIn88 - (UnkindedVar (ann happy_var_1) happy_var_1 - )} - -happyReduce_208 = happyReduce 5# 79# happyReduction_208 -happyReduction_208 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut223 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> - case happyOut114 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> - happyIn88 - (KindedVar (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}}}} - -happyReduce_209 = happySpecReduce_2 80# happyReduction_209 -happyReduction_209 happy_x_2 - happy_x_1 - = case happyOut89 happy_x_1 of { happy_var_1 -> - case happyOut223 happy_x_2 of { happy_var_2 -> - happyIn89 - ((happy_var_2 : fst happy_var_1, Just (snd happy_var_1 <?+> ann happy_var_2)) - )}} - -happyReduce_210 = happySpecReduce_0 80# happyReduction_210 -happyReduction_210 = happyIn89 - (([], Nothing) - ) - -happyReduce_211 = happySpecReduce_2 81# happyReduction_211 -happyReduction_211 happy_x_2 - happy_x_1 - = case happyOut89 happy_x_1 of { happy_var_1 -> - case happyOut223 happy_x_2 of { happy_var_2 -> - happyIn90 - ((happy_var_2 : fst happy_var_1, snd happy_var_1 <?+> ann happy_var_2) - )}} - -happyReduce_212 = happySpecReduce_0 82# happyReduction_212 -happyReduction_212 = happyIn91 - (([],[], Nothing) - ) - -happyReduce_213 = happyMonadReduce 2# 82# happyReduction_213 -happyReduction_213 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> - case happyOut92 happy_x_2 of { happy_var_2 -> - ( do { checkEnabled FunctionalDependencies ; - let {(fds,ss,l) = happy_var_2} ; - return (reverse fds, happy_var_1 : reverse ss, Just (nIS happy_var_1 <++> l)) })}} - ) (\r -> happyReturn (happyIn91 r)) - -happyReduce_214 = happySpecReduce_3 83# happyReduction_214 -happyReduction_214 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut92 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut93 happy_x_3 of { happy_var_3 -> - happyIn92 - (let (fds,ss,l) = happy_var_1 in (happy_var_3 : fds, happy_var_2 : ss, l <++> ann happy_var_3) - )}}} - -happyReduce_215 = happySpecReduce_1 83# happyReduction_215 -happyReduction_215 happy_x_1 - = case happyOut93 happy_x_1 of { happy_var_1 -> - happyIn92 - (([happy_var_1],[],ann happy_var_1) - )} - -happyReduce_216 = happySpecReduce_3 84# happyReduction_216 -happyReduction_216 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut90 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOut90 happy_x_3 of { happy_var_3 -> - happyIn93 - (FunDep (snd happy_var_1 <++> snd happy_var_3 <** [happy_var_2]) (reverse (fst happy_var_1)) (reverse (fst happy_var_3)) - )}}} - -happyReduce_217 = happyMonadReduce 1# 85# happyReduction_217 -happyReduction_217 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut95 happy_x_1 of { happy_var_1 -> - ( checkEnabled GADTs >> return happy_var_1)} - ) (\r -> happyReturn (happyIn94 r)) - -happyReduce_218 = happySpecReduce_3 86# happyReduction_218 -happyReduction_218 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut96 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn95 - ((fst happy_var_2, happy_var_1 : snd happy_var_2 ++ [happy_var_3], happy_var_1 <^^> happy_var_3) - )}}} - -happyReduce_219 = happySpecReduce_3 86# happyReduction_219 -happyReduction_219 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut96 happy_x_2 of { happy_var_2 -> - case happyOut219 happy_x_3 of { happy_var_3 -> - happyIn95 - ((fst happy_var_2, happy_var_1 : snd happy_var_2 ++ [happy_var_3], happy_var_1 <^^> happy_var_3) - )}}} - -happyReduce_220 = happySpecReduce_3 87# happyReduction_220 -happyReduction_220 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut21 happy_x_1 of { happy_var_1 -> - case happyOut97 happy_x_2 of { happy_var_2 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - happyIn96 - ((fst happy_var_2, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3) - )}}} - -happyReduce_221 = happySpecReduce_3 88# happyReduction_221 -happyReduction_221 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut97 happy_x_1 of { happy_var_1 -> - case happyOut20 happy_x_2 of { happy_var_2 -> - case happyOut98 happy_x_3 of { happy_var_3 -> - happyIn97 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) - )}}} - -happyReduce_222 = happySpecReduce_1 88# happyReduction_222 -happyReduction_222 happy_x_1 - = case happyOut98 happy_x_1 of { happy_var_1 -> - happyIn97 - (([happy_var_1],[]) - )} - -happyReduce_223 = happyMonadReduce 3# 89# happyReduction_223 -happyReduction_223 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut194 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut82 happy_x_3 of { happy_var_3 -> - ( do { c <- checkUnQual happy_var_1; - return $ GadtDecl (happy_var_1 <> happy_var_3 <** [happy_var_2]) c happy_var_3 })}}} - ) (\r -> happyReturn (happyIn98 r)) - -happyReduce_224 = happyMonadReduce 0# 90# happyReduction_224 -happyReduction_224 (happyRest) tk - = happyThen (( checkEnabled EmptyDataDecls >> return ([],[],Nothing)) - ) (\r -> happyReturn (happyIn99 r)) - -happyReduce_225 = happySpecReduce_2 90# happyReduction_225 -happyReduction_225 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> - case happyOut100 happy_x_2 of { happy_var_2 -> - happyIn99 - (let (ds,ss,l) = happy_var_2 in (ds, happy_var_1 : reverse ss, Just $ nIS happy_var_1 <++> l) - )}} - -happyReduce_226 = happySpecReduce_3 91# happyReduction_226 -happyReduction_226 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut100 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut101 happy_x_3 of { happy_var_3 -> - happyIn100 - (let (ds,ss,l) = happy_var_1 in (happy_var_3 : ds, happy_var_2 : ss, l <++> ann happy_var_3) - )}}} - -happyReduce_227 = happySpecReduce_1 91# happyReduction_227 -happyReduction_227 happy_x_1 - = case happyOut101 happy_x_1 of { happy_var_1 -> - happyIn100 - (([happy_var_1],[],ann happy_var_1) - )} - -happyReduce_228 = happyMonadReduce 3# 92# happyReduction_228 -happyReduction_228 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut102 happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { happy_var_2 -> - case happyOut103 happy_x_3 of { happy_var_3 -> - ( do { checkEnabled ExistentialQuantification ; - ctxt <- checkContext (Just happy_var_2) ; - let {(mtvs,ss,ml) = happy_var_1} ; - return $ QualConDecl (ml <?+> ann happy_var_3 <** ss) mtvs ctxt happy_var_3 })}}} - ) (\r -> happyReturn (happyIn101 r)) - -happyReduce_229 = happySpecReduce_2 92# happyReduction_229 -happyReduction_229 happy_x_2 - happy_x_1 - = case happyOut102 happy_x_1 of { happy_var_1 -> - case happyOut103 happy_x_2 of { happy_var_2 -> - happyIn101 - (let (mtvs, ss, ml) = happy_var_1 in QualConDecl (ml <?+> ann happy_var_2 <** ss) mtvs Nothing happy_var_2 - )}} - -happyReduce_230 = happyMonadReduce 3# 93# happyReduction_230 -happyReduction_230 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> - case happyOut87 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> - ( checkEnabled ExistentialQuantification >> return (Just (fst happy_var_2), [happy_var_1,happy_var_3], Just $ happy_var_1 <^^> happy_var_3))}}} - ) (\r -> happyReturn (happyIn102 r)) - -happyReduce_231 = happySpecReduce_0 93# happyReduction_231 -happyReduction_231 = happyIn102 - ((Nothing, [], Nothing) - ) - -happyReduce_232 = happySpecReduce_1 94# happyReduction_232 -happyReduction_232 happy_x_1 - = case happyOut104 happy_x_1 of { happy_var_1 -> - happyIn103 - (let (n,ts,l) = happy_var_1 in ConDecl l n ts - )} - -happyReduce_233 = happySpecReduce_3 94# happyReduction_233 -happyReduction_233 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut107 happy_x_1 of { happy_var_1 -> - case happyOut198 happy_x_2 of { happy_var_2 -> - case happyOut107 happy_x_3 of { happy_var_3 -> - happyIn103 - (InfixConDecl (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_234 = happyMonadReduce 3# 94# happyReduction_234 -happyReduction_234 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut194 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - ( do { c <- checkUnQual happy_var_1; return $ RecDecl (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]) c [] })}}} - ) (\r -> happyReturn (happyIn103 r)) - -happyReduce_235 = happyMonadReduce 4# 94# happyReduction_235 -happyReduction_235 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut194 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOut108 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> - ( do { c <- checkUnQual happy_var_1; - return $ RecDecl (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) c (reverse (fst happy_var_3)) })}}}} - ) (\r -> happyReturn (happyIn103 r)) - -happyReduce_236 = happyMonadReduce 1# 95# happyReduction_236 -happyReduction_236 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> - ( do { (c,ts) <- splitTyConApp happy_var_1; - return (c,map (\t -> UnBangedTy (ann t) t) ts,ann happy_var_1) })} - ) (\r -> happyReturn (happyIn104 r)) - -happyReduce_237 = happySpecReduce_1 95# happyReduction_237 -happyReduction_237 happy_x_1 - = case happyOut105 happy_x_1 of { happy_var_1 -> - happyIn104 - (happy_var_1 - )} - -happyReduce_238 = happyMonadReduce 3# 96# happyReduction_238 -happyReduction_238 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Exclamation) -> - case happyOut77 happy_x_3 of { happy_var_3 -> - ( do { (c,ts) <- splitTyConApp happy_var_1; - return (c,map (\t -> UnBangedTy (ann t) t) ts++ - [BangedTy (nIS happy_var_2 <++> ann happy_var_3 <** [happy_var_2]) happy_var_3], happy_var_1 <> happy_var_3) })}}} - ) (\r -> happyReturn (happyIn105 r)) - -happyReduce_239 = happyMonadReduce 5# 96# happyReduction_239 -happyReduction_239 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 UNPACK) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 Exclamation) -> - case happyOut77 happy_x_5 of { happy_var_5 -> - ( do { (c,ts) <- splitTyConApp happy_var_1; - return (c,map (\t -> UnBangedTy (ann t) t) ts++ - [UnpackedTy (nIS happy_var_2 <++> ann happy_var_5 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_5], happy_var_1 <> happy_var_5) })}}}}} - ) (\r -> happyReturn (happyIn105 r)) - -happyReduce_240 = happySpecReduce_2 96# happyReduction_240 -happyReduction_240 happy_x_2 - happy_x_1 - = case happyOut105 happy_x_1 of { happy_var_1 -> - case happyOut106 happy_x_2 of { happy_var_2 -> - happyIn105 - (let (n,ts,l) = happy_var_1 in (n, ts ++ [happy_var_2],l <++> ann happy_var_2) - )}} - -happyReduce_241 = happySpecReduce_1 97# happyReduction_241 -happyReduction_241 happy_x_1 - = case happyOut77 happy_x_1 of { happy_var_1 -> - happyIn106 - (UnBangedTy (ann happy_var_1) happy_var_1 - )} - -happyReduce_242 = happySpecReduce_2 97# happyReduction_242 -happyReduction_242 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut77 happy_x_2 of { happy_var_2 -> - happyIn106 - (BangedTy (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_243 = happyReduce 4# 97# happyReduction_243 -happyReduction_243 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> - case happyOut77 happy_x_4 of { happy_var_4 -> - happyIn106 - (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_244 = happySpecReduce_1 98# happyReduction_244 -happyReduction_244 happy_x_1 - = case happyOut75 happy_x_1 of { happy_var_1 -> - happyIn107 - (UnBangedTy (ann happy_var_1) happy_var_1 - )} - -happyReduce_245 = happySpecReduce_2 98# happyReduction_245 -happyReduction_245 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut77 happy_x_2 of { happy_var_2 -> - happyIn107 - (BangedTy (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_246 = happyReduce 4# 98# happyReduction_246 -happyReduction_246 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> - case happyOut77 happy_x_4 of { happy_var_4 -> - happyIn107 - (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_247 = happySpecReduce_3 99# happyReduction_247 -happyReduction_247 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut108 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut109 happy_x_3 of { happy_var_3 -> - happyIn108 - ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) - )}}} - -happyReduce_248 = happySpecReduce_1 99# happyReduction_248 -happyReduction_248 happy_x_1 - = case happyOut109 happy_x_1 of { happy_var_1 -> - happyIn108 - (([happy_var_1],[]) - )} - -happyReduce_249 = happySpecReduce_3 100# happyReduction_249 -happyReduction_249 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut57 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut110 happy_x_3 of { happy_var_3 -> - happyIn109 - (let (ns,ss,l) = happy_var_1 in FieldDecl (l <++> ann happy_var_3 <** (reverse ss ++ [happy_var_2])) (reverse ns) happy_var_3 - )}}} - -happyReduce_250 = happySpecReduce_1 101# happyReduction_250 -happyReduction_250 happy_x_1 - = case happyOut82 happy_x_1 of { happy_var_1 -> - happyIn110 - (UnBangedTy (ann happy_var_1) happy_var_1 - )} - -happyReduce_251 = happySpecReduce_2 101# happyReduction_251 -happyReduction_251 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut77 happy_x_2 of { happy_var_2 -> - happyIn110 - (BangedTy (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_252 = happyReduce 4# 101# happyReduction_252 -happyReduction_252 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> - case happyOut77 happy_x_4 of { happy_var_4 -> - happyIn110 - (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_253 = happySpecReduce_0 102# happyReduction_253 -happyReduction_253 = happyIn111 - (Nothing - ) - -happyReduce_254 = happySpecReduce_2 102# happyReduction_254 -happyReduction_254 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - case happyOut113 happy_x_2 of { happy_var_2 -> - happyIn111 - (let l = nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1] in Just $ Deriving l [IHead (ann happy_var_2) happy_var_2 []] - )}} - -happyReduce_255 = happySpecReduce_3 102# happyReduction_255 -happyReduction_255 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn111 - (Just $ Deriving (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_2,happy_var_3]) [] - )}}} - -happyReduce_256 = happyReduce 4# 102# happyReduction_256 -happyReduction_256 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> - case happyOut112 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn111 - (Just $ Deriving (happy_var_1 <^^> happy_var_4 <** happy_var_1:happy_var_2: reverse (snd happy_var_3) ++ [happy_var_4]) (reverse (fst happy_var_3)) - ) `HappyStk` happyRest}}}} - -happyReduce_257 = happyMonadReduce 1# 103# happyReduction_257 -happyReduction_257 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut86 happy_x_1 of { happy_var_1 -> - ( checkDeriving (fst happy_var_1) >>= \ds -> return (ds, snd happy_var_1))} - ) (\r -> happyReturn (happyIn112 r)) - -happyReduce_258 = happySpecReduce_1 104# happyReduction_258 -happyReduction_258 happy_x_1 - = case happyOut208 happy_x_1 of { happy_var_1 -> - happyIn113 - (happy_var_1 - )} - -happyReduce_259 = happyMonadReduce 1# 105# happyReduction_259 -happyReduction_259 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut115 happy_x_1 of { happy_var_1 -> - ( checkEnabled KindSignatures >> return happy_var_1)} - ) (\r -> happyReturn (happyIn114 r)) - -happyReduce_260 = happySpecReduce_1 106# happyReduction_260 -happyReduction_260 happy_x_1 - = case happyOut116 happy_x_1 of { happy_var_1 -> - happyIn115 - (happy_var_1 - )} - -happyReduce_261 = happySpecReduce_3 106# happyReduction_261 -happyReduction_261 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut116 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOut115 happy_x_3 of { happy_var_3 -> - happyIn115 - (KindFn (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_262 = happySpecReduce_1 107# happyReduction_262 -happyReduction_262 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> - happyIn116 - (KindStar (nIS happy_var_1) - )} - -happyReduce_263 = happySpecReduce_1 107# happyReduction_263 -happyReduction_263 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - happyIn116 - (KindBang (nIS happy_var_1) - )} - -happyReduce_264 = happySpecReduce_3 107# happyReduction_264 -happyReduction_264 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut115 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn116 - (KindParen (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 - )}}} - -happyReduce_265 = happySpecReduce_0 108# happyReduction_265 -happyReduction_265 = happyIn117 - ((Nothing,[]) - ) - -happyReduce_266 = happySpecReduce_2 108# happyReduction_266 -happyReduction_266 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> - case happyOut114 happy_x_2 of { happy_var_2 -> - happyIn117 - ((Just happy_var_2,[happy_var_1]) - )}} - -happyReduce_267 = happyMonadReduce 4# 109# happyReduction_267 -happyReduction_267 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOut119 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> - ( checkClassBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}} - ) (\r -> happyReturn (happyIn118 r)) - -happyReduce_268 = happyMonadReduce 4# 109# happyReduction_268 -happyReduction_268 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOut218 happy_x_2 of { happy_var_2 -> - case happyOut119 happy_x_3 of { happy_var_3 -> - case happyOut219 happy_x_4 of { happy_var_4 -> - ( checkClassBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}} - ) (\r -> happyReturn (happyIn118 r)) - -happyReduce_269 = happySpecReduce_0 109# happyReduction_269 -happyReduction_269 = happyIn118 - ((Nothing,[],Nothing) - ) - -happyReduce_270 = happyMonadReduce 3# 110# happyReduction_270 -happyReduction_270 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut21 happy_x_1 of { happy_var_1 -> - case happyOut120 happy_x_2 of { happy_var_2 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - ( checkRevClsDecls (fst happy_var_2) >>= \cs -> return (cs, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}} - ) (\r -> happyReturn (happyIn119 r)) - -happyReduce_271 = happySpecReduce_1 110# happyReduction_271 -happyReduction_271 happy_x_1 - = case happyOut21 happy_x_1 of { happy_var_1 -> - happyIn119 - (([],reverse happy_var_1) - )} - -happyReduce_272 = happySpecReduce_3 111# happyReduction_272 -happyReduction_272 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut120 happy_x_1 of { happy_var_1 -> - case happyOut20 happy_x_2 of { happy_var_2 -> - case happyOut121 happy_x_3 of { happy_var_3 -> - happyIn120 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) - )}}} - -happyReduce_273 = happySpecReduce_1 111# happyReduction_273 -happyReduction_273 happy_x_1 - = case happyOut121 happy_x_1 of { happy_var_1 -> - happyIn120 - (([happy_var_1],[]) - )} - -happyReduce_274 = happySpecReduce_1 112# happyReduction_274 -happyReduction_274 happy_x_1 - = case happyOut51 happy_x_1 of { happy_var_1 -> - happyIn121 - (ClsDecl (ann happy_var_1) happy_var_1 - )} - -happyReduce_275 = happyMonadReduce 1# 112# happyReduction_275 -happyReduction_275 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut122 happy_x_1 of { happy_var_1 -> - ( checkEnabled TypeFamilies >> return happy_var_1)} - ) (\r -> happyReturn (happyIn121 r)) - -happyReduce_276 = happyMonadReduce 3# 113# happyReduction_276 -happyReduction_276 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOut74 happy_x_2 of { happy_var_2 -> - case happyOut117 happy_x_3 of { happy_var_3 -> - ( do { dh <- checkSimpleType happy_var_2; - return (ClsTyFam (nIS happy_var_1 <++> ann happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** happy_var_1:snd happy_var_3) dh (fst happy_var_3)) })}}} - ) (\r -> happyReturn (happyIn122 r)) - -happyReduce_277 = happyReduce 4# 113# happyReduction_277 -happyReduction_277 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOut71 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> - case happyOut82 happy_x_4 of { happy_var_4 -> - happyIn122 - (ClsTyDef (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_278 = happyMonadReduce 3# 113# happyReduction_278 -happyReduction_278 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> - case happyOut83 happy_x_2 of { happy_var_2 -> - case happyOut117 happy_x_3 of { happy_var_3 -> - ( do { (cs,dh) <- checkDataHeader happy_var_2; - return (ClsDataFam (nIS happy_var_1 <++> ann happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** happy_var_1:snd happy_var_3) cs dh (fst happy_var_3)) })}}} - ) (\r -> happyReturn (happyIn122 r)) - -happyReduce_279 = happyMonadReduce 4# 114# happyReduction_279 -happyReduction_279 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOut124 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> - ( checkInstBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}} - ) (\r -> happyReturn (happyIn123 r)) - -happyReduce_280 = happyMonadReduce 4# 114# happyReduction_280 -happyReduction_280 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOut218 happy_x_2 of { happy_var_2 -> - case happyOut124 happy_x_3 of { happy_var_3 -> - case happyOut219 happy_x_4 of { happy_var_4 -> - ( checkInstBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}} - ) (\r -> happyReturn (happyIn123 r)) - -happyReduce_281 = happySpecReduce_0 114# happyReduction_281 -happyReduction_281 = happyIn123 - ((Nothing, [], Nothing) - ) - -happyReduce_282 = happyMonadReduce 3# 115# happyReduction_282 -happyReduction_282 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut21 happy_x_1 of { happy_var_1 -> - case happyOut125 happy_x_2 of { happy_var_2 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - ( checkRevInstDecls (fst happy_var_2) >>= \is -> return (is, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}} - ) (\r -> happyReturn (happyIn124 r)) - -happyReduce_283 = happySpecReduce_1 115# happyReduction_283 -happyReduction_283 happy_x_1 - = case happyOut21 happy_x_1 of { happy_var_1 -> - happyIn124 - (([],reverse happy_var_1) - )} - -happyReduce_284 = happySpecReduce_3 116# happyReduction_284 -happyReduction_284 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut125 happy_x_1 of { happy_var_1 -> - case happyOut20 happy_x_2 of { happy_var_2 -> - case happyOut126 happy_x_3 of { happy_var_3 -> - happyIn125 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) - )}}} - -happyReduce_285 = happySpecReduce_1 116# happyReduction_285 -happyReduction_285 happy_x_1 - = case happyOut126 happy_x_1 of { happy_var_1 -> - happyIn125 - (([happy_var_1],[]) - )} - -happyReduce_286 = happySpecReduce_1 117# happyReduction_286 -happyReduction_286 happy_x_1 - = case happyOut129 happy_x_1 of { happy_var_1 -> - happyIn126 - (InsDecl (ann happy_var_1) happy_var_1 - )} - -happyReduce_287 = happyMonadReduce 1# 117# happyReduction_287 -happyReduction_287 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut128 happy_x_1 of { happy_var_1 -> - ( checkEnabled TypeFamilies >> return happy_var_1)} - ) (\r -> happyReturn (happyIn126 r)) - -happyReduce_288 = happySpecReduce_1 117# happyReduction_288 -happyReduction_288 happy_x_1 - = case happyOut127 happy_x_1 of { happy_var_1 -> - happyIn126 - (happy_var_1 - )} - -happyReduce_289 = happyReduce 4# 118# happyReduction_289 -happyReduction_289 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut63 happy_x_2 of { happy_var_2 -> - case happyOut191 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> - happyIn127 - (let Loc l (INLINE s) = happy_var_1 in InsInline (l <^^> happy_var_4 <** [l,happy_var_4]) s happy_var_2 happy_var_3 - ) `HappyStk` happyRest}}}} - -happyReduce_290 = happyMonadReduce 4# 119# happyReduction_290 -happyReduction_290 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - case happyOut71 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> - case happyOut82 happy_x_4 of { happy_var_4 -> - ( do { -- no checkSimpleType happy_var_4 since dtype may contain type patterns - return (InsType (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4) })}}}} - ) (\r -> happyReturn (happyIn128 r)) - -happyReduce_291 = happyMonadReduce 4# 119# happyReduction_291 -happyReduction_291 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_2 of { happy_var_2 -> - case happyOut99 happy_x_3 of { happy_var_3 -> - case happyOut111 happy_x_4 of { happy_var_4 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; - let {(ds,ss,minf) = happy_var_3}; - checkDataOrNew happy_var_1 ds; - return (InsData (happy_var_1 <> happy_var_2 <+?> minf <+?> fmap ann happy_var_4 <** ss ) happy_var_1 happy_var_2 (reverse ds) happy_var_4) })}}}} - ) (\r -> happyReturn (happyIn128 r)) - -happyReduce_292 = happyMonadReduce 6# 119# happyReduction_292 -happyReduction_292 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_2 of { happy_var_2 -> - case happyOut117 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 KW_Where) -> - case happyOut94 happy_x_5 of { happy_var_5 -> - case happyOut111 happy_x_6 of { happy_var_6 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; - let { (gs,ss,inf) = happy_var_5 } ; - checkDataOrNew happy_var_1 gs; - return $ InsGData (ann happy_var_1 <++> inf <+?> fmap ann happy_var_6 <** (snd happy_var_3 ++ happy_var_4:ss)) happy_var_1 happy_var_2 (fst happy_var_3) (reverse gs) happy_var_6 })}}}}}} - ) (\r -> happyReturn (happyIn128 r)) - -happyReduce_293 = happyMonadReduce 4# 120# happyReduction_293 -happyReduction_293 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut139 happy_x_1 of { happy_var_1 -> - case happyOut131 happy_x_2 of { happy_var_2 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - case happyOut130 happy_x_4 of { happy_var_4 -> - ( checkValDef ((happy_var_1 <> happy_var_3 <+?> (fmap ann) (fst happy_var_4)) <** (snd happy_var_2 ++ snd happy_var_4)) happy_var_1 (fst happy_var_2) happy_var_3 (fst happy_var_4))}}}} - ) (\r -> happyReturn (happyIn129 r)) - -happyReduce_294 = happyMonadReduce 4# 120# happyReduction_294 -happyReduction_294 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut146 happy_x_2 of { happy_var_2 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - case happyOut130 happy_x_4 of { happy_var_4 -> - ( do { checkEnabled BangPatterns ; - let { l = nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1] }; - p <- checkPattern (BangPat l happy_var_2); - return $ PatBind (p <> happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** snd happy_var_4) - p Nothing happy_var_3 (fst happy_var_4) })}}}} - ) (\r -> happyReturn (happyIn129 r)) - -happyReduce_295 = happySpecReduce_2 121# happyReduction_295 -happyReduction_295 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - case happyOut56 happy_x_2 of { happy_var_2 -> - happyIn130 - ((Just happy_var_2, [happy_var_1]) - )}} - -happyReduce_296 = happySpecReduce_0 121# happyReduction_296 -happyReduction_296 = happyIn130 - ((Nothing, []) - ) - -happyReduce_297 = happyMonadReduce 2# 122# happyReduction_297 -happyReduction_297 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> - case happyOut82 happy_x_2 of { happy_var_2 -> - ( checkEnabled ScopedTypeVariables >> return (Just happy_var_2, [happy_var_1]))}} - ) (\r -> happyReturn (happyIn131 r)) - -happyReduce_298 = happySpecReduce_0 122# happyReduction_298 -happyReduction_298 = happyIn131 - ((Nothing,[]) - ) - -happyReduce_299 = happySpecReduce_2 123# happyReduction_299 -happyReduction_299 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> - case happyOut135 happy_x_2 of { happy_var_2 -> - happyIn132 - (UnGuardedRhs (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_300 = happySpecReduce_1 123# happyReduction_300 -happyReduction_300 happy_x_1 - = case happyOut133 happy_x_1 of { happy_var_1 -> - happyIn132 - (GuardedRhss (snd happy_var_1) (reverse $ fst happy_var_1) - )} - -happyReduce_301 = happySpecReduce_2 124# happyReduction_301 -happyReduction_301 happy_x_2 - happy_x_1 - = case happyOut133 happy_x_1 of { happy_var_1 -> - case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn133 - ((happy_var_2 : fst happy_var_1, snd happy_var_1 <++> ann happy_var_2) - )}} - -happyReduce_302 = happySpecReduce_1 124# happyReduction_302 -happyReduction_302 happy_x_1 - = case happyOut134 happy_x_1 of { happy_var_1 -> - happyIn133 - (([happy_var_1],ann happy_var_1) - )} - -happyReduce_303 = happyMonadReduce 4# 125# happyReduction_303 -happyReduction_303 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> - case happyOut169 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> - case happyOut135 happy_x_4 of { happy_var_4 -> - ( do { checkPatternGuards (fst happy_var_2); - return $ GuardedRhs (nIS happy_var_1 <++> ann happy_var_4 <** (happy_var_1:snd happy_var_2 ++ [happy_var_3])) (reverse (fst happy_var_2)) happy_var_4 })}}}} - ) (\r -> happyReturn (happyIn134 r)) - -happyReduce_304 = happyMonadReduce 1# 126# happyReduction_304 -happyReduction_304 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut136 happy_x_1 of { happy_var_1 -> - ( checkExpr happy_var_1)} - ) (\r -> happyReturn (happyIn135 r)) - -happyReduce_305 = happySpecReduce_3 127# happyReduction_305 -happyReduction_305 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut139 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> - case happyOut82 happy_x_3 of { happy_var_3 -> - happyIn136 - (ExpTypeSig (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_306 = happySpecReduce_1 127# happyReduction_306 -happyReduction_306 happy_x_1 - = case happyOut137 happy_x_1 of { happy_var_1 -> - happyIn136 - (happy_var_1 - )} - -happyReduce_307 = happySpecReduce_2 127# happyReduction_307 -happyReduction_307 happy_x_2 - happy_x_1 - = case happyOut139 happy_x_1 of { happy_var_1 -> - case happyOut201 happy_x_2 of { happy_var_2 -> - happyIn136 - (PostOp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2 - )}} - -happyReduce_308 = happySpecReduce_3 127# happyReduction_308 -happyReduction_308 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut139 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrowTail) -> - case happyOut136 happy_x_3 of { happy_var_3 -> - happyIn136 - (LeftArrApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_309 = happySpecReduce_3 127# happyReduction_309 -happyReduction_309 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut139 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrowTail) -> - case happyOut136 happy_x_3 of { happy_var_3 -> - happyIn136 - (RightArrApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_310 = happySpecReduce_3 127# happyReduction_310 -happyReduction_310 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut139 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftDblArrowTail) -> - case happyOut136 happy_x_3 of { happy_var_3 -> - happyIn136 - (LeftArrHighApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_311 = happySpecReduce_3 127# happyReduction_311 -happyReduction_311 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut139 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightDblArrowTail) -> - case happyOut136 happy_x_3 of { happy_var_3 -> - happyIn136 - (RightArrHighApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_312 = happySpecReduce_1 128# happyReduction_312 -happyReduction_312 happy_x_1 - = case happyOut138 happy_x_1 of { happy_var_1 -> - happyIn137 - (happy_var_1 - )} - -happyReduce_313 = happySpecReduce_1 128# happyReduction_313 -happyReduction_313 happy_x_1 - = case happyOut139 happy_x_1 of { happy_var_1 -> - happyIn137 - (happy_var_1 - )} - -happyReduce_314 = happySpecReduce_3 129# happyReduction_314 -happyReduction_314 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut139 happy_x_1 of { happy_var_1 -> - case happyOut201 happy_x_2 of { happy_var_2 -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn138 - (InfixApp (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_315 = happySpecReduce_1 129# happyReduction_315 -happyReduction_315 happy_x_1 - = case happyOut140 happy_x_1 of { happy_var_1 -> - happyIn138 - (happy_var_1 - )} - -happyReduce_316 = happySpecReduce_3 130# happyReduction_316 -happyReduction_316 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut139 happy_x_1 of { happy_var_1 -> - case happyOut201 happy_x_2 of { happy_var_2 -> - case happyOut141 happy_x_3 of { happy_var_3 -> - happyIn139 - (InfixApp (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_317 = happySpecReduce_1 130# happyReduction_317 -happyReduction_317 happy_x_1 - = case happyOut141 happy_x_1 of { happy_var_1 -> - happyIn139 - (happy_var_1 - )} - -happyReduce_318 = happyReduce 4# 131# happyReduction_318 -happyReduction_318 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Backslash) -> - case happyOut144 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> - case happyOut136 happy_x_4 of { happy_var_4 -> - happyIn140 - (Lambda (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) (reverse happy_var_2) happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_319 = happyReduce 4# 131# happyReduction_319 -happyReduction_319 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> - case happyOut56 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_In) -> - case happyOut136 happy_x_4 of { happy_var_4 -> - happyIn140 - (Let (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_320 = happyReduce 6# 131# happyReduction_320 -happyReduction_320 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_If) -> - case happyOut136 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Then) -> - case happyOut136 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Else) -> - case happyOut136 happy_x_6 of { happy_var_6 -> - happyIn140 - (If (nIS happy_var_1 <++> ann happy_var_6 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4 happy_var_6 - ) `HappyStk` happyRest}}}}}} - -happyReduce_321 = happyReduce 4# 131# happyReduction_321 -happyReduction_321 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Proc) -> - case happyOut145 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> - case happyOut136 happy_x_4 of { happy_var_4 -> - happyIn140 - (Proc (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_322 = happySpecReduce_1 131# happyReduction_322 -happyReduction_322 happy_x_1 - = case happyOut142 happy_x_1 of { happy_var_1 -> - happyIn140 - (happy_var_1 - )} - -happyReduce_323 = happyReduce 4# 132# happyReduction_323 -happyReduction_323 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Case) -> - case happyOut136 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Of) -> - case happyOut171 happy_x_4 of { happy_var_4 -> - happyIn141 - (let (als, inf, ss) = happy_var_4 in Case (nIS happy_var_1 <++> inf <** (happy_var_1:happy_var_3:ss)) happy_var_2 als - ) `HappyStk` happyRest}}}} - -happyReduce_324 = happySpecReduce_2 132# happyReduction_324 -happyReduction_324 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Minus) -> - case happyOut143 happy_x_2 of { happy_var_2 -> - happyIn141 - (NegApp (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_325 = happySpecReduce_2 132# happyReduction_325 -happyReduction_325 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Do) -> - case happyOut179 happy_x_2 of { happy_var_2 -> - happyIn141 - (let (sts, inf, ss) = happy_var_2 in Do (nIS happy_var_1 <++> inf <** happy_var_1:ss) sts - )}} - -happyReduce_326 = happySpecReduce_2 132# happyReduction_326 -happyReduction_326 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_MDo) -> - case happyOut179 happy_x_2 of { happy_var_2 -> - happyIn141 - (let (sts, inf, ss) = happy_var_2 in MDo (nIS happy_var_1 <++> inf <** happy_var_1:ss) sts - )}} - -happyReduce_327 = happySpecReduce_1 132# happyReduction_327 -happyReduction_327 happy_x_1 - = case happyOut143 happy_x_1 of { happy_var_1 -> - happyIn141 - (happy_var_1 - )} - -happyReduce_328 = happyReduce 4# 133# happyReduction_328 -happyReduction_328 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 CORE) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - case happyOut136 happy_x_4 of { happy_var_4 -> - happyIn142 - (let Loc l (StringTok (s,_)) = happy_var_2 in CorePragma (nIS happy_var_1 <++> ann happy_var_4 <** [l,happy_var_3]) s happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_329 = happyReduce 4# 133# happyReduction_329 -happyReduction_329 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 SCC) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> - case happyOut136 happy_x_4 of { happy_var_4 -> - happyIn142 - (let Loc l (StringTok (s,_)) = happy_var_2 in SCCPragma (nIS happy_var_1 <++> ann happy_var_4 <** [l,happy_var_3]) s happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_330 = happyReduce 11# 133# happyReduction_330 -happyReduction_330 (happy_x_11 `HappyStk` - happy_x_10 `HappyStk` - happy_x_9 `HappyStk` - happy_x_8 `HappyStk` - happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 GENERATED) -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 Colon) -> - case happyOutTok happy_x_5 of { happy_var_5 -> - case happyOutTok happy_x_6 of { (Loc happy_var_6 Minus) -> - case happyOutTok happy_x_7 of { happy_var_7 -> - case happyOutTok happy_x_8 of { (Loc happy_var_8 Colon) -> - case happyOutTok happy_x_9 of { happy_var_9 -> - case happyOutTok happy_x_10 of { (Loc happy_var_10 PragmaEnd) -> - case happyOut136 happy_x_11 of { happy_var_11 -> - happyIn142 - (let { Loc l0 (StringTok (s,_)) = happy_var_2; - Loc l1 (IntTok (i1,_)) = happy_var_3; - Loc l2 (IntTok (i2,_)) = happy_var_5; - Loc l3 (IntTok (i3,_)) = happy_var_7; - Loc l4 (IntTok (i4,_)) = happy_var_9} - in GenPragma (nIS happy_var_1 <++> ann happy_var_11 <** [happy_var_1,l0,l1,happy_var_4,l2,happy_var_6,l3,happy_var_8,l4,happy_var_10]) - s (fromInteger i1, fromInteger i2) - (fromInteger i3, fromInteger i4) happy_var_11 - ) `HappyStk` happyRest}}}}}}}}}}} - -happyReduce_331 = happySpecReduce_2 134# happyReduction_331 -happyReduction_331 happy_x_2 - happy_x_1 - = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOut146 happy_x_2 of { happy_var_2 -> - happyIn143 - (App (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2 - )}} - -happyReduce_332 = happySpecReduce_1 134# happyReduction_332 -happyReduction_332 happy_x_1 - = case happyOut146 happy_x_1 of { happy_var_1 -> - happyIn143 - (happy_var_1 - )} - -happyReduce_333 = happySpecReduce_2 135# happyReduction_333 -happyReduction_333 happy_x_2 - happy_x_1 - = case happyOut144 happy_x_1 of { happy_var_1 -> - case happyOut145 happy_x_2 of { happy_var_2 -> - happyIn144 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_334 = happySpecReduce_1 135# happyReduction_334 -happyReduction_334 happy_x_1 - = case happyOut145 happy_x_1 of { happy_var_1 -> - happyIn144 - ([happy_var_1] - )} - -happyReduce_335 = happyMonadReduce 1# 136# happyReduction_335 -happyReduction_335 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut146 happy_x_1 of { happy_var_1 -> - ( checkPattern happy_var_1)} - ) (\r -> happyReturn (happyIn145 r)) - -happyReduce_336 = happyMonadReduce 2# 136# happyReduction_336 -happyReduction_336 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut146 happy_x_2 of { happy_var_2 -> - ( checkPattern (BangPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2))}} - ) (\r -> happyReturn (happyIn145 r)) - -happyReduce_337 = happyMonadReduce 3# 137# happyReduction_337 -happyReduction_337 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut191 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 At) -> - case happyOut146 happy_x_3 of { happy_var_3 -> - ( do { n <- checkUnQual happy_var_1; - return (AsPat (happy_var_1 <> happy_var_3 <** [happy_var_2]) n happy_var_3) })}}} - ) (\r -> happyReturn (happyIn146 r)) - -happyReduce_338 = happyMonadReduce 3# 137# happyReduction_338 -happyReduction_338 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut191 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RPCAt) -> - case happyOut146 happy_x_3 of { happy_var_3 -> - ( do { n <- checkUnQual happy_var_1; - return (CAsRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) n happy_var_3) })}}} - ) (\r -> happyReturn (happyIn146 r)) - -happyReduce_339 = happySpecReduce_2 137# happyReduction_339 -happyReduction_339 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Tilde) -> - case happyOut146 happy_x_2 of { happy_var_2 -> - happyIn146 - (IrrPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_340 = happySpecReduce_1 137# happyReduction_340 -happyReduction_340 happy_x_1 - = case happyOut147 happy_x_1 of { happy_var_1 -> - happyIn146 - (happy_var_1 - )} - -happyReduce_341 = happyMonadReduce 3# 138# happyReduction_341 -happyReduction_341 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut147 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - ( liftM (amap (const (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]))) $ mkRecConstrOrUpdate happy_var_1 [])}}} - ) (\r -> happyReturn (happyIn147 r)) - -happyReduce_342 = happyMonadReduce 4# 138# happyReduction_342 -happyReduction_342 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut147 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> - case happyOut183 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> - ( liftM (amap (const (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])))) - $ mkRecConstrOrUpdate happy_var_1 (reverse (fst happy_var_3)))}}}} - ) (\r -> happyReturn (happyIn147 r)) - -happyReduce_343 = happyReduce 4# 138# happyReduction_343 -happyReduction_343 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut191 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurlyBar) -> - case happyOut73 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurlyBar) -> - happyIn147 - (ExplTypeArg (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3 - ) `HappyStk` happyRest}}}} - -happyReduce_344 = happySpecReduce_1 138# happyReduction_344 -happyReduction_344 happy_x_1 - = case happyOut148 happy_x_1 of { happy_var_1 -> - happyIn147 - (happy_var_1 - )} - -happyReduce_345 = happySpecReduce_1 139# happyReduction_345 -happyReduction_345 happy_x_1 - = case happyOut192 happy_x_1 of { happy_var_1 -> - happyIn148 - (IPVar (ann happy_var_1) happy_var_1 - )} - -happyReduce_346 = happySpecReduce_1 139# happyReduction_346 -happyReduction_346 happy_x_1 - = case happyOut191 happy_x_1 of { happy_var_1 -> - happyIn148 - (Var (ann happy_var_1) happy_var_1 - )} - -happyReduce_347 = happySpecReduce_1 139# happyReduction_347 -happyReduction_347 happy_x_1 - = case happyOut188 happy_x_1 of { happy_var_1 -> - happyIn148 - (happy_var_1 - )} - -happyReduce_348 = happySpecReduce_1 139# happyReduction_348 -happyReduction_348 happy_x_1 - = case happyOut217 happy_x_1 of { happy_var_1 -> - happyIn148 - (Lit (ann happy_var_1) happy_var_1 - )} - -happyReduce_349 = happySpecReduce_3 139# happyReduction_349 -happyReduction_349 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut150 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn148 - (Paren (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 - )}}} - -happyReduce_350 = happySpecReduce_3 139# happyReduction_350 -happyReduction_350 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut150 happy_x_2 of { happy_var_2 -> - case happyOut151 happy_x_3 of { happy_var_3 -> - happyIn148 - (TupleSection (happy_var_1 <^^> head (snd happy_var_3) <** happy_var_1:reverse (snd happy_var_3)) (Just happy_var_2 : fst happy_var_3) - )}}} - -happyReduce_351 = happyReduce 4# 139# happyReduction_351 -happyReduction_351 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut149 happy_x_2 of { happy_var_2 -> - case happyOut150 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> - happyIn148 - (TupleSection (happy_var_1 <^^> happy_var_4 <** happy_var_1:reverse (happy_var_4:happy_var_2)) - (replicate (length happy_var_2 - 1) Nothing ++ [Just happy_var_3]) - ) `HappyStk` happyRest}}}} - -happyReduce_352 = happyReduce 4# 139# happyReduction_352 -happyReduction_352 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut149 happy_x_2 of { happy_var_2 -> - case happyOut150 happy_x_3 of { happy_var_3 -> - case happyOut151 happy_x_4 of { happy_var_4 -> - happyIn148 - (TupleSection (happy_var_1 <^^> head (snd happy_var_4) <** happy_var_1:reverse (snd happy_var_4 ++ happy_var_2)) - (replicate (length happy_var_2 - 1) Nothing ++ Just happy_var_3 : fst happy_var_4) - ) `HappyStk` happyRest}}}} - -happyReduce_353 = happySpecReduce_3 139# happyReduction_353 -happyReduction_353 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOut163 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> - happyIn148 - (amap (\l -> l <** [happy_var_3]) $ happy_var_2 (happy_var_1 <^^> happy_var_3 <** [happy_var_1]) - )}}} - -happyReduce_354 = happySpecReduce_1 139# happyReduction_354 -happyReduction_354 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Underscore) -> - happyIn148 - (WildCard (nIS happy_var_1) - )} - -happyReduce_355 = happyMonadReduce 3# 139# happyReduction_355 -happyReduction_355 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut153 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - ( checkEnabled RegularPatterns >> return (Paren (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2))}}} - ) (\r -> happyReturn (happyIn148 r)) - -happyReduce_356 = happySpecReduce_3 139# happyReduction_356 -happyReduction_356 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 RPGuardOpen) -> - case happyOut152 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RPGuardClose) -> - happyIn148 - (SeqRP (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (snd happy_var_2) ++ [happy_var_3])) $ reverse (fst happy_var_2) - )}}} - -happyReduce_357 = happyReduce 5# 139# happyReduction_357 -happyReduction_357 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 RPGuardOpen) -> - case happyOut136 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 Bar) -> - case happyOut169 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 RPGuardClose) -> - happyIn148 - (GuardRP (happy_var_1 <^^> happy_var_5 <** (happy_var_1:happy_var_3 : snd happy_var_4 ++ [happy_var_5])) happy_var_2 $ (reverse $ fst happy_var_4) - ) `HappyStk` happyRest}}}}} - -happyReduce_358 = happySpecReduce_1 139# happyReduction_358 -happyReduction_358 happy_x_1 - = case happyOut154 happy_x_1 of { happy_var_1 -> - happyIn148 - (happy_var_1 - )} - -happyReduce_359 = happySpecReduce_1 139# happyReduction_359 -happyReduction_359 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn148 - (let Loc l (THIdEscape s) = happy_var_1 in SpliceExp (nIS l) $ IdSplice (nIS l) s - )} - -happyReduce_360 = happySpecReduce_3 139# happyReduction_360 -happyReduction_360 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THParenEscape) -> - case happyOut135 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn148 - (SpliceExp (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ ParenSplice (ann happy_var_2) happy_var_2 - )}}} - -happyReduce_361 = happySpecReduce_3 139# happyReduction_361 -happyReduction_361 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THExpQuote) -> - case happyOut135 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> - happyIn148 - (BracketExp (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ ExpBracket (ann happy_var_2) happy_var_2 - )}}} - -happyReduce_362 = happyMonadReduce 3# 139# happyReduction_362 -happyReduction_362 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 THPatQuote) -> - case happyOut137 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> - ( do { p <- checkPattern happy_var_2; - return $ BracketExp (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ PatBracket (ann p) p })}}} - ) (\r -> happyReturn (happyIn148 r)) - -happyReduce_363 = happySpecReduce_3 139# happyReduction_363 -happyReduction_363 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THTypQuote) -> - case happyOut82 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> - happyIn148 - (let l = happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3] in BracketExp l $ TypeBracket l happy_var_2 - )}}} - -happyReduce_364 = happyReduce 5# 139# happyReduction_364 -happyReduction_364 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THDecQuote) -> - case happyOut44 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 THCloseQuote) -> - happyIn148 - (let l = happy_var_1 <^^> happy_var_5 <** (happy_var_1:snd happy_var_3 ++ [happy_var_5]) in BracketExp l $ DeclBracket l (fst happy_var_3) - ) `HappyStk` happyRest}}} - -happyReduce_365 = happySpecReduce_2 139# happyReduction_365 -happyReduction_365 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> - case happyOut191 happy_x_2 of { happy_var_2 -> - happyIn148 - (VarQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_366 = happySpecReduce_2 139# happyReduction_366 -happyReduction_366 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> - case happyOut194 happy_x_2 of { happy_var_2 -> - happyIn148 - (VarQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_367 = happySpecReduce_2 139# happyReduction_367 -happyReduction_367 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THTyQuote) -> - case happyOut223 happy_x_2 of { happy_var_2 -> - happyIn148 - (TypQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) (UnQual (ann happy_var_2) happy_var_2) - )}} - -happyReduce_368 = happySpecReduce_2 139# happyReduction_368 -happyReduction_368 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 THTyQuote) -> - case happyOut79 happy_x_2 of { happy_var_2 -> - happyIn148 - (TypQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_369 = happySpecReduce_1 139# happyReduction_369 -happyReduction_369 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn148 - (let Loc l (THQuasiQuote (n,q)) = happy_var_1 in QuasiQuote (nIS l) n q - )} - -happyReduce_370 = happySpecReduce_2 140# happyReduction_370 -happyReduction_370 happy_x_2 - happy_x_1 - = case happyOut149 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - happyIn149 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_371 = happySpecReduce_1 140# happyReduction_371 -happyReduction_371 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Comma) -> - happyIn149 - ([happy_var_1] - )} - -happyReduce_372 = happySpecReduce_1 141# happyReduction_372 -happyReduction_372 happy_x_1 - = case happyOut136 happy_x_1 of { happy_var_1 -> - happyIn150 - (happy_var_1 - )} - -happyReduce_373 = happySpecReduce_2 141# happyReduction_373 -happyReduction_373 happy_x_2 - happy_x_1 - = case happyOut202 happy_x_1 of { happy_var_1 -> - case happyOut137 happy_x_2 of { happy_var_2 -> - happyIn150 - (PreOp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2 - )}} - -happyReduce_374 = happyMonadReduce 3# 141# happyReduction_374 -happyReduction_374 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut136 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> - case happyOut136 happy_x_3 of { happy_var_3 -> - ( do {checkEnabled ViewPatterns; - return $ ViewPat (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3})}}} - ) (\r -> happyReturn (happyIn150 r)) - -happyReduce_375 = happySpecReduce_3 142# happyReduction_375 -happyReduction_375 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut149 happy_x_1 of { happy_var_1 -> - case happyOut150 happy_x_2 of { happy_var_2 -> - case happyOut151 happy_x_3 of { happy_var_3 -> - happyIn151 - (let (mes, ss) = happy_var_3 in (replicate (length happy_var_1 - 1) Nothing ++ Just happy_var_2 : mes, ss ++ happy_var_1) - )}}} - -happyReduce_376 = happySpecReduce_3 142# happyReduction_376 -happyReduction_376 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut149 happy_x_1 of { happy_var_1 -> - case happyOut150 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn151 - ((replicate (length happy_var_1 - 1) Nothing ++ [Just happy_var_2], happy_var_3 : happy_var_1) - )}}} - -happyReduce_377 = happySpecReduce_2 142# happyReduction_377 -happyReduction_377 happy_x_2 - happy_x_1 - = case happyOut149 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> - happyIn151 - ((replicate (length happy_var_1) Nothing, happy_var_2 : happy_var_1) - )}} - -happyReduce_378 = happySpecReduce_3 143# happyReduction_378 -happyReduction_378 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut152 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut136 happy_x_3 of { happy_var_3 -> - happyIn152 - ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) - )}}} - -happyReduce_379 = happySpecReduce_1 143# happyReduction_379 -happyReduction_379 happy_x_1 - = case happyOut136 happy_x_1 of { happy_var_1 -> - happyIn152 - (([happy_var_1],[]) - )} - -happyReduce_380 = happySpecReduce_3 144# happyReduction_380 -happyReduction_380 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut136 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut153 happy_x_3 of { happy_var_3 -> - happyIn153 - (EitherRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_381 = happySpecReduce_3 144# happyReduction_381 -happyReduction_381 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut136 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut136 happy_x_3 of { happy_var_3 -> - happyIn153 - (EitherRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_382 = happyMonadReduce 9# 145# happyReduction_382 -happyReduction_382 (happy_x_9 `HappyStk` - happy_x_8 `HappyStk` - happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> - case happyOut157 happy_x_2 of { happy_var_2 -> - case happyOut160 happy_x_3 of { happy_var_3 -> - case happyOut162 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 XStdTagClose) -> - case happyOut155 happy_x_6 of { happy_var_6 -> - case happyOutTok happy_x_7 of { (Loc happy_var_7 XCloseTagOpen) -> - case happyOut157 happy_x_8 of { happy_var_8 -> - case happyOutTok happy_x_9 of { (Loc happy_var_9 XStdTagClose) -> - ( do { n <- checkEqNames happy_var_2 happy_var_8; - let { cn = reverse happy_var_6; - as = reverse happy_var_3; - l = happy_var_1 <^^> happy_var_9 <** [happy_var_1,happy_var_5,happy_var_7,srcInfoSpan (ann happy_var_8),happy_var_9] }; - return $ XTag l n as happy_var_4 cn })}}}}}}}}} - ) (\r -> happyReturn (happyIn154 r)) - -happyReduce_383 = happyReduce 5# 145# happyReduction_383 -happyReduction_383 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> - case happyOut157 happy_x_2 of { happy_var_2 -> - case happyOut160 happy_x_3 of { happy_var_3 -> - case happyOut162 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 XEmptyTagClose) -> - happyIn154 - (XETag (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 (reverse happy_var_3) happy_var_4 - ) `HappyStk` happyRest}}}}} - -happyReduce_384 = happySpecReduce_3 145# happyReduction_384 -happyReduction_384 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 XCodeTagOpen) -> - case happyOut136 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 XCodeTagClose) -> - happyIn154 - (XExpTag (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 - )}}} - -happyReduce_385 = happySpecReduce_2 146# happyReduction_385 -happyReduction_385 happy_x_2 - happy_x_1 - = case happyOut155 happy_x_1 of { happy_var_1 -> - case happyOut156 happy_x_2 of { happy_var_2 -> - happyIn155 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_386 = happySpecReduce_0 146# happyReduction_386 -happyReduction_386 = happyIn155 - ([] - ) - -happyReduce_387 = happySpecReduce_1 147# happyReduction_387 -happyReduction_387 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn156 - (let Loc l (XPCDATA pcd) = happy_var_1 in XPcdata (nIS l) pcd - )} - -happyReduce_388 = happySpecReduce_3 147# happyReduction_388 -happyReduction_388 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 XRPatOpen) -> - case happyOut152 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 XRPatClose) -> - happyIn156 - (XRPats (happy_var_1 <^^> happy_var_3 <** (snd happy_var_2 ++ [happy_var_1,happy_var_3])) $ reverse (fst happy_var_2) - )}}} - -happyReduce_389 = happySpecReduce_1 147# happyReduction_389 -happyReduction_389 happy_x_1 - = case happyOut154 happy_x_1 of { happy_var_1 -> - happyIn156 - (happy_var_1 - )} - -happyReduce_390 = happySpecReduce_3 148# happyReduction_390 -happyReduction_390 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut158 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Colon) -> - case happyOut158 happy_x_3 of { happy_var_3 -> - happyIn157 - (let {Loc l1 s1 = happy_var_1; Loc l2 s2 = happy_var_3} - in XDomName (nIS l1 <++> nIS l2 <** [l1,happy_var_2,l2]) s1 s2 - )}}} - -happyReduce_391 = happySpecReduce_1 148# happyReduction_391 -happyReduction_391 happy_x_1 - = case happyOut158 happy_x_1 of { happy_var_1 -> - happyIn157 - (let Loc l str = happy_var_1 in XName (nIS l) str - )} - -happyReduce_392 = happySpecReduce_1 149# happyReduction_392 -happyReduction_392 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn158 - (let Loc l (VarId s) = happy_var_1 in Loc l s - )} - -happyReduce_393 = happySpecReduce_1 149# happyReduction_393 -happyReduction_393 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn158 - (let Loc l (ConId s) = happy_var_1 in Loc l s - )} - -happyReduce_394 = happySpecReduce_1 149# happyReduction_394 -happyReduction_394 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn158 - (let Loc l (DVarId s) = happy_var_1 in Loc l $ mkDVar s - )} - -happyReduce_395 = happySpecReduce_1 149# happyReduction_395 -happyReduction_395 happy_x_1 - = case happyOut159 happy_x_1 of { happy_var_1 -> - happyIn158 - (happy_var_1 - )} - -happyReduce_396 = happySpecReduce_1 150# happyReduction_396 -happyReduction_396 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> - happyIn159 - (Loc happy_var_1 "type" - )} - -happyReduce_397 = happySpecReduce_1 150# happyReduction_397 -happyReduction_397 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Class) -> - happyIn159 - (Loc happy_var_1 "class" - )} - -happyReduce_398 = happySpecReduce_1 150# happyReduction_398 -happyReduction_398 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> - happyIn159 - (Loc happy_var_1 "data" - )} - -happyReduce_399 = happySpecReduce_1 150# happyReduction_399 -happyReduction_399 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> - happyIn159 - (Loc happy_var_1 "foreign" - )} - -happyReduce_400 = happySpecReduce_1 150# happyReduction_400 -happyReduction_400 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Export) -> - happyIn159 - (Loc happy_var_1 "export" - )} - -happyReduce_401 = happySpecReduce_1 150# happyReduction_401 -happyReduction_401 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> - happyIn159 - (Loc happy_var_1 "safe" - )} - -happyReduce_402 = happySpecReduce_1 150# happyReduction_402 -happyReduction_402 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> - happyIn159 - (Loc happy_var_1 "unsafe" - )} - -happyReduce_403 = happySpecReduce_1 150# happyReduction_403 -happyReduction_403 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> - happyIn159 - (Loc happy_var_1 "threadsafe" - )} - -happyReduce_404 = happySpecReduce_1 150# happyReduction_404 -happyReduction_404 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> - happyIn159 - (Loc happy_var_1 "stdcall" - )} - -happyReduce_405 = happySpecReduce_1 150# happyReduction_405 -happyReduction_405 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> - happyIn159 - (Loc happy_var_1 "ccall" - )} - -happyReduce_406 = happySpecReduce_1 150# happyReduction_406 -happyReduction_406 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> - happyIn159 - (Loc happy_var_1 "as" - )} - -happyReduce_407 = happySpecReduce_1 150# happyReduction_407 -happyReduction_407 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_By) -> - happyIn159 - (Loc happy_var_1 "by" - )} - -happyReduce_408 = happySpecReduce_1 150# happyReduction_408 -happyReduction_408 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Case) -> - happyIn159 - (Loc happy_var_1 "case" - )} - -happyReduce_409 = happySpecReduce_1 150# happyReduction_409 -happyReduction_409 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Default) -> - happyIn159 - (Loc happy_var_1 "default" - )} - -happyReduce_410 = happySpecReduce_1 150# happyReduction_410 -happyReduction_410 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> - happyIn159 - (Loc happy_var_1 "deriving" - )} - -happyReduce_411 = happySpecReduce_1 150# happyReduction_411 -happyReduction_411 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Do) -> - happyIn159 - (Loc happy_var_1 "do" - )} - -happyReduce_412 = happySpecReduce_1 150# happyReduction_412 -happyReduction_412 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Else) -> - happyIn159 - (Loc happy_var_1 "else" - )} - -happyReduce_413 = happySpecReduce_1 150# happyReduction_413 -happyReduction_413 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Family) -> - happyIn159 - (Loc happy_var_1 "family" - )} - -happyReduce_414 = happySpecReduce_1 150# happyReduction_414 -happyReduction_414 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> - happyIn159 - (Loc happy_var_1 "forall" - )} - -happyReduce_415 = happySpecReduce_1 150# happyReduction_415 -happyReduction_415 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Group) -> - happyIn159 - (Loc happy_var_1 "group" - )} - -happyReduce_416 = happySpecReduce_1 150# happyReduction_416 -happyReduction_416 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> - happyIn159 - (Loc happy_var_1 "hiding" - )} - -happyReduce_417 = happySpecReduce_1 150# happyReduction_417 -happyReduction_417 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_If) -> - happyIn159 - (Loc happy_var_1 "if" - )} - -happyReduce_418 = happySpecReduce_1 150# happyReduction_418 -happyReduction_418 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Import) -> - happyIn159 - (Loc happy_var_1 "import" - )} - -happyReduce_419 = happySpecReduce_1 150# happyReduction_419 -happyReduction_419 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_In) -> - happyIn159 - (Loc happy_var_1 "in" - )} - -happyReduce_420 = happySpecReduce_1 150# happyReduction_420 -happyReduction_420 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Infix) -> - happyIn159 - (Loc happy_var_1 "infix" - )} - -happyReduce_421 = happySpecReduce_1 150# happyReduction_421 -happyReduction_421 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixL) -> - happyIn159 - (Loc happy_var_1 "infixl" - )} - -happyReduce_422 = happySpecReduce_1 150# happyReduction_422 -happyReduction_422 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixR) -> - happyIn159 - (Loc happy_var_1 "infixr" - )} - -happyReduce_423 = happySpecReduce_1 150# happyReduction_423 -happyReduction_423 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Instance) -> - happyIn159 - (Loc happy_var_1 "instance" - )} - -happyReduce_424 = happySpecReduce_1 150# happyReduction_424 -happyReduction_424 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> - happyIn159 - (Loc happy_var_1 "let" - )} - -happyReduce_425 = happySpecReduce_1 150# happyReduction_425 -happyReduction_425 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_MDo) -> - happyIn159 - (Loc happy_var_1 "mdo" - )} - -happyReduce_426 = happySpecReduce_1 150# happyReduction_426 -happyReduction_426 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> - happyIn159 - (Loc happy_var_1 "module" - )} - -happyReduce_427 = happySpecReduce_1 150# happyReduction_427 -happyReduction_427 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_NewType) -> - happyIn159 - (Loc happy_var_1 "newtype" - )} - -happyReduce_428 = happySpecReduce_1 150# happyReduction_428 -happyReduction_428 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Of) -> - happyIn159 - (Loc happy_var_1 "of" - )} - -happyReduce_429 = happySpecReduce_1 150# happyReduction_429 -happyReduction_429 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Proc) -> - happyIn159 - (Loc happy_var_1 "proc" - )} - -happyReduce_430 = happySpecReduce_1 150# happyReduction_430 -happyReduction_430 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Rec) -> - happyIn159 - (Loc happy_var_1 "rec" - )} - -happyReduce_431 = happySpecReduce_1 150# happyReduction_431 -happyReduction_431 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - happyIn159 - (Loc happy_var_1 "then" - )} - -happyReduce_432 = happySpecReduce_1 150# happyReduction_432 -happyReduction_432 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Using) -> - happyIn159 - (Loc happy_var_1 "using" - )} - -happyReduce_433 = happySpecReduce_1 150# happyReduction_433 -happyReduction_433 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> - happyIn159 - (Loc happy_var_1 "where" - )} - -happyReduce_434 = happySpecReduce_1 150# happyReduction_434 -happyReduction_434 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> - happyIn159 - (Loc happy_var_1 "qualified" - )} - -happyReduce_435 = happySpecReduce_2 151# happyReduction_435 -happyReduction_435 happy_x_2 - happy_x_1 - = case happyOut160 happy_x_1 of { happy_var_1 -> - case happyOut161 happy_x_2 of { happy_var_2 -> - happyIn160 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_436 = happySpecReduce_0 151# happyReduction_436 -happyReduction_436 = happyIn160 - ([] - ) - -happyReduce_437 = happySpecReduce_3 152# happyReduction_437 -happyReduction_437 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut157 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> - case happyOut146 happy_x_3 of { happy_var_3 -> - happyIn161 - (XAttr (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_438 = happySpecReduce_1 153# happyReduction_438 -happyReduction_438 happy_x_1 - = case happyOut146 happy_x_1 of { happy_var_1 -> - happyIn162 - (Just happy_var_1 - )} - -happyReduce_439 = happySpecReduce_0 153# happyReduction_439 -happyReduction_439 = happyIn162 - (Nothing - ) - -happyReduce_440 = happySpecReduce_1 154# happyReduction_440 -happyReduction_440 happy_x_1 - = case happyOut150 happy_x_1 of { happy_var_1 -> - happyIn163 - (\l -> List l [happy_var_1] - )} - -happyReduce_441 = happySpecReduce_1 154# happyReduction_441 -happyReduction_441 happy_x_1 - = case happyOut164 happy_x_1 of { happy_var_1 -> - happyIn163 - (\l -> let (ps,ss) = happy_var_1 in List (l <** reverse ss) (reverse ps) - )} - -happyReduce_442 = happySpecReduce_2 154# happyReduction_442 -happyReduction_442 happy_x_2 - happy_x_1 - = case happyOut150 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DotDot) -> - happyIn163 - (\l -> EnumFrom (l <** [happy_var_2]) happy_var_1 - )}} - -happyReduce_443 = happyReduce 4# 154# happyReduction_443 -happyReduction_443 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut150 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut136 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DotDot) -> - happyIn163 - (\l -> EnumFromThen (l <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3 - ) `HappyStk` happyRest}}}} - -happyReduce_444 = happySpecReduce_3 154# happyReduction_444 -happyReduction_444 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut150 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 DotDot) -> - case happyOut136 happy_x_3 of { happy_var_3 -> - happyIn163 - (\l -> EnumFromTo (l <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_445 = happyReduce 5# 154# happyReduction_445 -happyReduction_445 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut150 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut136 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { (Loc happy_var_4 DotDot) -> - case happyOut136 happy_x_5 of { happy_var_5 -> - happyIn163 - (\l -> EnumFromThenTo (l <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3 happy_var_5 - ) `HappyStk` happyRest}}}}} - -happyReduce_446 = happySpecReduce_3 154# happyReduction_446 -happyReduction_446 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut150 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut165 happy_x_3 of { happy_var_3 -> - happyIn163 - (\l -> let (stss, ss) = happy_var_3 in ParComp (l <** (happy_var_2:ss)) happy_var_1 (reverse stss) - )}}} - -happyReduce_447 = happySpecReduce_3 155# happyReduction_447 -happyReduction_447 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut164 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut150 happy_x_3 of { happy_var_3 -> - happyIn164 - (let (es, ss) = happy_var_1 in (happy_var_3 : es, happy_var_2 : ss) - )}}} - -happyReduce_448 = happySpecReduce_3 155# happyReduction_448 -happyReduction_448 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut150 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut150 happy_x_3 of { happy_var_3 -> - happyIn164 - (([happy_var_3,happy_var_1], [happy_var_2]) - )}}} - -happyReduce_449 = happySpecReduce_3 156# happyReduction_449 -happyReduction_449 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut165 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> - case happyOut166 happy_x_3 of { happy_var_3 -> - happyIn165 - (let { (stss, ss1) = happy_var_1; - (sts, ss2) = happy_var_3 } - in (reverse sts : stss, ss1 ++ [happy_var_2] ++ reverse ss2) - )}}} - -happyReduce_450 = happySpecReduce_1 156# happyReduction_450 -happyReduction_450 happy_x_1 - = case happyOut166 happy_x_1 of { happy_var_1 -> - happyIn165 - (let (sts, ss) = happy_var_1 in ([reverse sts], reverse ss) - )} - -happyReduce_451 = happySpecReduce_3 157# happyReduction_451 -happyReduction_451 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut166 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut167 happy_x_3 of { happy_var_3 -> - happyIn166 - (let (sts, ss) = happy_var_1 in (happy_var_3 : sts, happy_var_2 : ss) - )}}} - -happyReduce_452 = happySpecReduce_1 157# happyReduction_452 -happyReduction_452 happy_x_1 - = case happyOut167 happy_x_1 of { happy_var_1 -> - happyIn166 - (([happy_var_1],[]) - )} - -happyReduce_453 = happySpecReduce_1 158# happyReduction_453 -happyReduction_453 happy_x_1 - = case happyOut168 happy_x_1 of { happy_var_1 -> - happyIn167 - (happy_var_1 - )} - -happyReduce_454 = happySpecReduce_1 158# happyReduction_454 -happyReduction_454 happy_x_1 - = case happyOut170 happy_x_1 of { happy_var_1 -> - happyIn167 - (QualStmt (ann happy_var_1) happy_var_1 - )} - -happyReduce_455 = happySpecReduce_2 159# happyReduction_455 -happyReduction_455 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOut135 happy_x_2 of { happy_var_2 -> - happyIn168 - (ThenTrans (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_456 = happyReduce 4# 159# happyReduction_456 -happyReduction_456 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOut135 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> - case happyOut135 happy_x_4 of { happy_var_4 -> - happyIn168 - (ThenBy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_457 = happyReduce 4# 159# happyReduction_457 -happyReduction_457 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> - case happyOut135 happy_x_4 of { happy_var_4 -> - happyIn168 - (GroupBy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_458 = happyReduce 4# 159# happyReduction_458 -happyReduction_458 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Using) -> - case happyOut135 happy_x_4 of { happy_var_4 -> - happyIn168 - (GroupUsing (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_459 = happyReduce 6# 159# happyReduction_459 -happyReduction_459 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> - case happyOut135 happy_x_4 of { happy_var_4 -> - case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Using) -> - case happyOut135 happy_x_6 of { happy_var_6 -> - happyIn168 - (GroupByUsing (nIS happy_var_1 <++> ann happy_var_6 <** [happy_var_1,happy_var_2,happy_var_3,happy_var_5]) happy_var_4 happy_var_6 - ) `HappyStk` happyRest}}}}}} - -happyReduce_460 = happySpecReduce_3 160# happyReduction_460 -happyReduction_460 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut169 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut170 happy_x_3 of { happy_var_3 -> - happyIn169 - (let (sts, ss) = happy_var_1 in (happy_var_3 : sts, happy_var_2 : ss) - )}}} - -happyReduce_461 = happySpecReduce_1 160# happyReduction_461 -happyReduction_461 happy_x_1 - = case happyOut170 happy_x_1 of { happy_var_1 -> - happyIn169 - (([happy_var_1],[]) - )} - -happyReduce_462 = happySpecReduce_3 161# happyReduction_462 -happyReduction_462 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut178 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrow) -> - case happyOut135 happy_x_3 of { happy_var_3 -> - happyIn170 - (Generator (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_463 = happySpecReduce_1 161# happyReduction_463 -happyReduction_463 happy_x_1 - = case happyOut135 happy_x_1 of { happy_var_1 -> - happyIn170 - (Qualifier (ann happy_var_1) happy_var_1 - )} - -happyReduce_464 = happySpecReduce_2 161# happyReduction_464 -happyReduction_464 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> - case happyOut56 happy_x_2 of { happy_var_2 -> - happyIn170 - (LetStmt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_465 = happySpecReduce_3 162# happyReduction_465 -happyReduction_465 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut172 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn171 - ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3]) - )}}} - -happyReduce_466 = happySpecReduce_3 162# happyReduction_466 -happyReduction_466 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut172 happy_x_2 of { happy_var_2 -> - case happyOut219 happy_x_3 of { happy_var_3 -> - happyIn171 - ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3]) - )}}} - -happyReduce_467 = happySpecReduce_3 163# happyReduction_467 -happyReduction_467 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut21 happy_x_1 of { happy_var_1 -> - case happyOut173 happy_x_2 of { happy_var_2 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - happyIn172 - ((reverse $ fst happy_var_2, happy_var_1 ++ snd happy_var_2 ++ happy_var_3) - )}}} - -happyReduce_468 = happySpecReduce_3 164# happyReduction_468 -happyReduction_468 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut173 happy_x_1 of { happy_var_1 -> - case happyOut20 happy_x_2 of { happy_var_2 -> - case happyOut174 happy_x_3 of { happy_var_3 -> - happyIn173 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ happy_var_2) - )}}} - -happyReduce_469 = happySpecReduce_1 164# happyReduction_469 -happyReduction_469 happy_x_1 - = case happyOut174 happy_x_1 of { happy_var_1 -> - happyIn173 - (([happy_var_1],[]) - )} - -happyReduce_470 = happySpecReduce_3 165# happyReduction_470 -happyReduction_470 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut178 happy_x_1 of { happy_var_1 -> - case happyOut175 happy_x_2 of { happy_var_2 -> - case happyOut130 happy_x_3 of { happy_var_3 -> - happyIn174 - (Alt (happy_var_1 <> happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** snd happy_var_3) happy_var_1 happy_var_2 (fst happy_var_3) - )}}} - -happyReduce_471 = happySpecReduce_2 166# happyReduction_471 -happyReduction_471 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 RightArrow) -> - case happyOut135 happy_x_2 of { happy_var_2 -> - happyIn175 - (UnGuardedAlt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_472 = happySpecReduce_1 166# happyReduction_472 -happyReduction_472 happy_x_1 - = case happyOut176 happy_x_1 of { happy_var_1 -> - happyIn175 - (GuardedAlts (snd happy_var_1) (reverse $ fst happy_var_1) - )} - -happyReduce_473 = happySpecReduce_2 167# happyReduction_473 -happyReduction_473 happy_x_2 - happy_x_1 - = case happyOut176 happy_x_1 of { happy_var_1 -> - case happyOut177 happy_x_2 of { happy_var_2 -> - happyIn176 - ((happy_var_2 : fst happy_var_1, snd happy_var_1 <++> ann happy_var_2) - )}} - -happyReduce_474 = happySpecReduce_1 167# happyReduction_474 -happyReduction_474 happy_x_1 - = case happyOut177 happy_x_1 of { happy_var_1 -> - happyIn176 - (([happy_var_1], ann happy_var_1) - )} - -happyReduce_475 = happyMonadReduce 4# 168# happyReduction_475 -happyReduction_475 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> - case happyOut169 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> - case happyOut135 happy_x_4 of { happy_var_4 -> - ( do { checkPatternGuards (fst happy_var_2); - let {l = nIS happy_var_1 <++> ann happy_var_4 <** (happy_var_1:snd happy_var_2 ++ [happy_var_3])}; - return (GuardedAlt l (reverse (fst happy_var_2)) happy_var_4) })}}}} - ) (\r -> happyReturn (happyIn177 r)) - -happyReduce_476 = happyMonadReduce 1# 169# happyReduction_476 -happyReduction_476 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut136 happy_x_1 of { happy_var_1 -> - ( checkPattern happy_var_1)} - ) (\r -> happyReturn (happyIn178 r)) - -happyReduce_477 = happyMonadReduce 2# 169# happyReduction_477 -happyReduction_477 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - case happyOut146 happy_x_2 of { happy_var_2 -> - ( checkPattern (BangPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2))}} - ) (\r -> happyReturn (happyIn178 r)) - -happyReduce_478 = happySpecReduce_3 170# happyReduction_478 -happyReduction_478 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> - case happyOut180 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> - happyIn179 - ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3]) - )}}} - -happyReduce_479 = happySpecReduce_3 170# happyReduction_479 -happyReduction_479 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut180 happy_x_2 of { happy_var_2 -> - case happyOut219 happy_x_3 of { happy_var_3 -> - happyIn179 - ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3]) - )}}} - -happyReduce_480 = happySpecReduce_2 171# happyReduction_480 -happyReduction_480 happy_x_2 - happy_x_1 - = case happyOut182 happy_x_1 of { happy_var_1 -> - case happyOut181 happy_x_2 of { happy_var_2 -> - happyIn180 - ((happy_var_1 : fst happy_var_2, snd happy_var_2) - )}} - -happyReduce_481 = happySpecReduce_2 171# happyReduction_481 -happyReduction_481 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 SemiColon) -> - case happyOut180 happy_x_2 of { happy_var_2 -> - happyIn180 - ((fst happy_var_2, happy_var_1 : snd happy_var_2) - )}} - -happyReduce_482 = happySpecReduce_0 171# happyReduction_482 -happyReduction_482 = happyIn180 - (([],[]) - ) - -happyReduce_483 = happySpecReduce_2 172# happyReduction_483 -happyReduction_483 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 SemiColon) -> - case happyOut180 happy_x_2 of { happy_var_2 -> - happyIn181 - ((fst happy_var_2, happy_var_1 : snd happy_var_2) - )}} - -happyReduce_484 = happySpecReduce_0 172# happyReduction_484 -happyReduction_484 = happyIn181 - (([],[]) - ) - -happyReduce_485 = happySpecReduce_2 173# happyReduction_485 -happyReduction_485 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> - case happyOut56 happy_x_2 of { happy_var_2 -> - happyIn182 - (LetStmt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 - )}} - -happyReduce_486 = happySpecReduce_3 173# happyReduction_486 -happyReduction_486 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut178 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrow) -> - case happyOut135 happy_x_3 of { happy_var_3 -> - happyIn182 - (Generator (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_487 = happySpecReduce_1 173# happyReduction_487 -happyReduction_487 happy_x_1 - = case happyOut135 happy_x_1 of { happy_var_1 -> - happyIn182 - (Qualifier (ann happy_var_1) happy_var_1 - )} - -happyReduce_488 = happySpecReduce_2 173# happyReduction_488 -happyReduction_488 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Rec) -> - case happyOut179 happy_x_2 of { happy_var_2 -> - happyIn182 - (let (stms,inf,ss) = happy_var_2 in RecStmt (nIS happy_var_1 <++> inf <** happy_var_1:ss) stms - )}} - -happyReduce_489 = happySpecReduce_3 174# happyReduction_489 -happyReduction_489 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut183 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> - case happyOut184 happy_x_3 of { happy_var_3 -> - happyIn183 - (let (fbs, ss) = happy_var_1 in (happy_var_3 : fbs, happy_var_2 : ss) - )}}} - -happyReduce_490 = happySpecReduce_1 174# happyReduction_490 -happyReduction_490 happy_x_1 - = case happyOut184 happy_x_1 of { happy_var_1 -> - happyIn183 - (([happy_var_1],[]) - )} - -happyReduce_491 = happySpecReduce_3 175# happyReduction_491 -happyReduction_491 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut191 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> - case happyOut136 happy_x_3 of { happy_var_3 -> - happyIn184 - (FieldUpdate (happy_var_1 <>happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_492 = happyMonadReduce 1# 175# happyReduction_492 -happyReduction_492 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut191 happy_x_1 of { happy_var_1 -> - ( checkEnabled NamedFieldPuns >> checkUnQual happy_var_1 >>= return . FieldPun (ann happy_var_1))} - ) (\r -> happyReturn (happyIn184 r)) - -happyReduce_493 = happyMonadReduce 1# 175# happyReduction_493 -happyReduction_493 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 DotDot) -> - ( checkEnabled RecordWildCards >> return (FieldWildcard (nIS happy_var_1)))} - ) (\r -> happyReturn (happyIn184 r)) - -happyReduce_494 = happySpecReduce_3 176# happyReduction_494 -happyReduction_494 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut21 happy_x_1 of { happy_var_1 -> - case happyOut186 happy_x_2 of { happy_var_2 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - happyIn185 - ((reverse (fst happy_var_2), reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3) - )}}} - -happyReduce_495 = happySpecReduce_3 177# happyReduction_495 -happyReduction_495 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut186 happy_x_1 of { happy_var_1 -> - case happyOut20 happy_x_2 of { happy_var_2 -> - case happyOut187 happy_x_3 of { happy_var_3 -> - happyIn186 - ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) - )}}} - -happyReduce_496 = happySpecReduce_1 177# happyReduction_496 -happyReduction_496 happy_x_1 - = case happyOut187 happy_x_1 of { happy_var_1 -> - happyIn186 - (([happy_var_1],[]) - )} - -happyReduce_497 = happySpecReduce_3 178# happyReduction_497 -happyReduction_497 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut192 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> - case happyOut135 happy_x_3 of { happy_var_3 -> - happyIn187 - (IPBind (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 - )}}} - -happyReduce_498 = happySpecReduce_2 179# happyReduction_498 -happyReduction_498 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> - happyIn188 - (p_unit_con (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) - )}} - -happyReduce_499 = happySpecReduce_2 179# happyReduction_499 -happyReduction_499 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightSquare) -> - happyIn188 - (List (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) [] - )}} - -happyReduce_500 = happySpecReduce_3 179# happyReduction_500 -happyReduction_500 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut149 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn188 - (p_tuple_con (happy_var_1 <^^> happy_var_3 <** happy_var_1:reverse (happy_var_3:happy_var_2)) Boxed (length happy_var_2) - )}}} - -happyReduce_501 = happySpecReduce_2 179# happyReduction_501 -happyReduction_501 happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOutTok happy_x_2 of { (Loc happy_var_2 RightHashParen) -> - happyIn188 - (p_unboxed_singleton_con (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) - )}} - -happyReduce_502 = happySpecReduce_3 179# happyReduction_502 -happyReduction_502 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> - case happyOut149 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> - happyIn188 - (p_tuple_con (happy_var_1 <^^> happy_var_3 <** happy_var_1:reverse (happy_var_3:happy_var_2)) Unboxed (length happy_var_2) - )}}} - -happyReduce_503 = happySpecReduce_1 179# happyReduction_503 -happyReduction_503 happy_x_1 - = case happyOut194 happy_x_1 of { happy_var_1 -> - happyIn188 - (Con (ann happy_var_1) happy_var_1 - )} - -happyReduce_504 = happySpecReduce_1 180# happyReduction_504 -happyReduction_504 happy_x_1 - = case happyOut206 happy_x_1 of { happy_var_1 -> - happyIn189 - (happy_var_1 - )} - -happyReduce_505 = happySpecReduce_3 180# happyReduction_505 -happyReduction_505 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut214 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn189 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_506 = happySpecReduce_1 181# happyReduction_506 -happyReduction_506 happy_x_1 - = case happyOut205 happy_x_1 of { happy_var_1 -> - happyIn190 - (happy_var_1 - )} - -happyReduce_507 = happySpecReduce_3 181# happyReduction_507 -happyReduction_507 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut214 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn190 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_508 = happySpecReduce_1 182# happyReduction_508 -happyReduction_508 happy_x_1 - = case happyOut204 happy_x_1 of { happy_var_1 -> - happyIn191 - (happy_var_1 - )} - -happyReduce_509 = happySpecReduce_3 182# happyReduction_509 -happyReduction_509 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut212 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn191 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_510 = happySpecReduce_1 183# happyReduction_510 -happyReduction_510 happy_x_1 - = case happyOut207 happy_x_1 of { happy_var_1 -> - happyIn192 - (happy_var_1 - )} - -happyReduce_511 = happySpecReduce_1 184# happyReduction_511 -happyReduction_511 happy_x_1 - = case happyOut209 happy_x_1 of { happy_var_1 -> - happyIn193 - (happy_var_1 - )} - -happyReduce_512 = happySpecReduce_3 184# happyReduction_512 -happyReduction_512 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut211 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn193 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_513 = happySpecReduce_1 185# happyReduction_513 -happyReduction_513 happy_x_1 - = case happyOut208 happy_x_1 of { happy_var_1 -> - happyIn194 - (happy_var_1 - )} - -happyReduce_514 = happySpecReduce_3 185# happyReduction_514 -happyReduction_514 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> - case happyOut203 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> - happyIn194 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_515 = happySpecReduce_1 186# happyReduction_515 -happyReduction_515 happy_x_1 - = case happyOut214 happy_x_1 of { happy_var_1 -> - happyIn195 - (happy_var_1 - )} - -happyReduce_516 = happySpecReduce_3 186# happyReduction_516 -happyReduction_516 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut206 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn195 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_517 = happySpecReduce_1 187# happyReduction_517 -happyReduction_517 happy_x_1 - = case happyOut212 happy_x_1 of { happy_var_1 -> - happyIn196 - (happy_var_1 - )} - -happyReduce_518 = happySpecReduce_3 187# happyReduction_518 -happyReduction_518 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut204 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn196 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_519 = happySpecReduce_1 188# happyReduction_519 -happyReduction_519 happy_x_1 - = case happyOut213 happy_x_1 of { happy_var_1 -> - happyIn197 - (happy_var_1 - )} - -happyReduce_520 = happySpecReduce_3 188# happyReduction_520 -happyReduction_520 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut204 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn197 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_521 = happySpecReduce_1 189# happyReduction_521 -happyReduction_521 happy_x_1 - = case happyOut211 happy_x_1 of { happy_var_1 -> - happyIn198 - (happy_var_1 - )} - -happyReduce_522 = happySpecReduce_3 189# happyReduction_522 -happyReduction_522 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut209 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn198 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_523 = happySpecReduce_1 190# happyReduction_523 -happyReduction_523 happy_x_1 - = case happyOut203 happy_x_1 of { happy_var_1 -> - happyIn199 - (happy_var_1 - )} - -happyReduce_524 = happySpecReduce_3 190# happyReduction_524 -happyReduction_524 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut208 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn199 - (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 - )}}} - -happyReduce_525 = happySpecReduce_1 191# happyReduction_525 -happyReduction_525 happy_x_1 - = case happyOut195 happy_x_1 of { happy_var_1 -> - happyIn200 - (VarOp (ann happy_var_1) happy_var_1 - )} - -happyReduce_526 = happySpecReduce_1 191# happyReduction_526 -happyReduction_526 happy_x_1 - = case happyOut198 happy_x_1 of { happy_var_1 -> - happyIn200 - (ConOp (ann happy_var_1) happy_var_1 - )} - -happyReduce_527 = happySpecReduce_1 192# happyReduction_527 -happyReduction_527 happy_x_1 - = case happyOut196 happy_x_1 of { happy_var_1 -> - happyIn201 - (QVarOp (ann happy_var_1) happy_var_1 - )} - -happyReduce_528 = happySpecReduce_1 192# happyReduction_528 -happyReduction_528 happy_x_1 - = case happyOut199 happy_x_1 of { happy_var_1 -> - happyIn201 - (QConOp (ann happy_var_1) happy_var_1 - )} - -happyReduce_529 = happySpecReduce_1 193# happyReduction_529 -happyReduction_529 happy_x_1 - = case happyOut197 happy_x_1 of { happy_var_1 -> - happyIn202 - (QVarOp (ann happy_var_1) happy_var_1 - )} - -happyReduce_530 = happySpecReduce_1 193# happyReduction_530 -happyReduction_530 happy_x_1 - = case happyOut199 happy_x_1 of { happy_var_1 -> - happyIn202 - (QConOp (ann happy_var_1) happy_var_1 - )} - -happyReduce_531 = happySpecReduce_1 194# happyReduction_531 -happyReduction_531 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Colon) -> - happyIn203 - (list_cons_name (nIS happy_var_1) - )} - -happyReduce_532 = happySpecReduce_1 194# happyReduction_532 -happyReduction_532 happy_x_1 - = case happyOut210 happy_x_1 of { happy_var_1 -> - happyIn203 - (happy_var_1 - )} - -happyReduce_533 = happySpecReduce_1 195# happyReduction_533 -happyReduction_533 happy_x_1 - = case happyOut206 happy_x_1 of { happy_var_1 -> - happyIn204 - (UnQual (ann happy_var_1) happy_var_1 - )} - -happyReduce_534 = happySpecReduce_1 195# happyReduction_534 -happyReduction_534 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn204 - (let {Loc l (QVarId q) = happy_var_1; nis = nIS l} - in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) - )} - -happyReduce_535 = happySpecReduce_1 196# happyReduction_535 -happyReduction_535 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn205 - (let Loc l (VarId v) = happy_var_1 in Ident (nIS l) v - )} - -happyReduce_536 = happySpecReduce_1 196# happyReduction_536 -happyReduction_536 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> - happyIn205 - (as_name (nIS happy_var_1) - )} - -happyReduce_537 = happySpecReduce_1 196# happyReduction_537 -happyReduction_537 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> - happyIn205 - (qualified_name (nIS happy_var_1) - )} - -happyReduce_538 = happySpecReduce_1 196# happyReduction_538 -happyReduction_538 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> - happyIn205 - (hiding_name (nIS happy_var_1) - )} - -happyReduce_539 = happySpecReduce_1 196# happyReduction_539 -happyReduction_539 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Export) -> - happyIn205 - (export_name (nIS happy_var_1) - )} - -happyReduce_540 = happySpecReduce_1 196# happyReduction_540 -happyReduction_540 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> - happyIn205 - (stdcall_name (nIS happy_var_1) - )} - -happyReduce_541 = happySpecReduce_1 196# happyReduction_541 -happyReduction_541 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> - happyIn205 - (ccall_name (nIS happy_var_1) - )} - -happyReduce_542 = happySpecReduce_1 197# happyReduction_542 -happyReduction_542 happy_x_1 - = case happyOut205 happy_x_1 of { happy_var_1 -> - happyIn206 - (happy_var_1 - )} - -happyReduce_543 = happySpecReduce_1 197# happyReduction_543 -happyReduction_543 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> - happyIn206 - (safe_name (nIS happy_var_1) - )} - -happyReduce_544 = happySpecReduce_1 197# happyReduction_544 -happyReduction_544 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> - happyIn206 - (unsafe_name (nIS happy_var_1) - )} - -happyReduce_545 = happySpecReduce_1 197# happyReduction_545 -happyReduction_545 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> - happyIn206 - (threadsafe_name (nIS happy_var_1) - )} - -happyReduce_546 = happySpecReduce_1 198# happyReduction_546 -happyReduction_546 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn207 - (let Loc l (IDupVarId i) = happy_var_1 in IPDup (nIS l) i - )} - -happyReduce_547 = happySpecReduce_1 198# happyReduction_547 -happyReduction_547 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn207 - (let Loc l (ILinVarId i) = happy_var_1 in IPLin (nIS l) i - )} - -happyReduce_548 = happySpecReduce_1 199# happyReduction_548 -happyReduction_548 happy_x_1 - = case happyOut209 happy_x_1 of { happy_var_1 -> - happyIn208 - (UnQual (ann happy_var_1) happy_var_1 - )} - -happyReduce_549 = happySpecReduce_1 199# happyReduction_549 -happyReduction_549 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn208 - (let {Loc l (QConId q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) - )} - -happyReduce_550 = happySpecReduce_1 200# happyReduction_550 -happyReduction_550 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn209 - (let Loc l (ConId c) = happy_var_1 in Ident (nIS l) c - )} - -happyReduce_551 = happySpecReduce_1 201# happyReduction_551 -happyReduction_551 happy_x_1 - = case happyOut211 happy_x_1 of { happy_var_1 -> - happyIn210 - (UnQual (ann happy_var_1) happy_var_1 - )} - -happyReduce_552 = happySpecReduce_1 201# happyReduction_552 -happyReduction_552 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn210 - (let {Loc l (QConSym q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) - )} - -happyReduce_553 = happySpecReduce_1 202# happyReduction_553 -happyReduction_553 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn211 - (let Loc l (ConSym c) = happy_var_1 in Symbol (nIS l) c - )} - -happyReduce_554 = happySpecReduce_1 203# happyReduction_554 -happyReduction_554 happy_x_1 - = case happyOut214 happy_x_1 of { happy_var_1 -> - happyIn212 - (UnQual (ann happy_var_1) happy_var_1 - )} - -happyReduce_555 = happySpecReduce_1 203# happyReduction_555 -happyReduction_555 happy_x_1 - = case happyOut216 happy_x_1 of { happy_var_1 -> - happyIn212 - (happy_var_1 - )} - -happyReduce_556 = happySpecReduce_1 204# happyReduction_556 -happyReduction_556 happy_x_1 - = case happyOut215 happy_x_1 of { happy_var_1 -> - happyIn213 - (UnQual (ann happy_var_1) happy_var_1 - )} - -happyReduce_557 = happySpecReduce_1 204# happyReduction_557 -happyReduction_557 happy_x_1 - = case happyOut216 happy_x_1 of { happy_var_1 -> - happyIn213 - (happy_var_1 - )} - -happyReduce_558 = happySpecReduce_1 205# happyReduction_558 -happyReduction_558 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn214 - (let Loc l (VarSym v) = happy_var_1 in Symbol (nIS l) v - )} - -happyReduce_559 = happySpecReduce_1 205# happyReduction_559 -happyReduction_559 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Minus) -> - happyIn214 - (minus_name (nIS happy_var_1) - )} - -happyReduce_560 = happySpecReduce_1 205# happyReduction_560 -happyReduction_560 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - happyIn214 - (bang_name (nIS happy_var_1) - )} - -happyReduce_561 = happySpecReduce_1 205# happyReduction_561 -happyReduction_561 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Dot) -> - happyIn214 - (dot_name (nIS happy_var_1) - )} - -happyReduce_562 = happySpecReduce_1 205# happyReduction_562 -happyReduction_562 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> - happyIn214 - (star_name (nIS happy_var_1) - )} - -happyReduce_563 = happySpecReduce_1 206# happyReduction_563 -happyReduction_563 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn215 - (let Loc l (VarSym v) = happy_var_1 in Symbol (nIS l) v - )} - -happyReduce_564 = happySpecReduce_1 206# happyReduction_564 -happyReduction_564 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> - happyIn215 - (bang_name (nIS happy_var_1) - )} - -happyReduce_565 = happySpecReduce_1 206# happyReduction_565 -happyReduction_565 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Dot) -> - happyIn215 - (dot_name (nIS happy_var_1) - )} - -happyReduce_566 = happySpecReduce_1 206# happyReduction_566 -happyReduction_566 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> - happyIn215 - (star_name (nIS happy_var_1) - )} - -happyReduce_567 = happySpecReduce_1 207# happyReduction_567 -happyReduction_567 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn216 - (let {Loc l (QVarSym q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) - )} - -happyReduce_568 = happySpecReduce_1 208# happyReduction_568 -happyReduction_568 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn217 - (let Loc l (IntTok (i,raw)) = happy_var_1 in Int (nIS l) i raw - )} - -happyReduce_569 = happySpecReduce_1 208# happyReduction_569 -happyReduction_569 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn217 - (let Loc l (Character (c,raw)) = happy_var_1 in Char (nIS l) c raw - )} - -happyReduce_570 = happySpecReduce_1 208# happyReduction_570 -happyReduction_570 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn217 - (let Loc l (FloatTok (r,raw)) = happy_var_1 in Frac (nIS l) r raw - )} - -happyReduce_571 = happySpecReduce_1 208# happyReduction_571 -happyReduction_571 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn217 - (let Loc l (StringTok (s,raw)) = happy_var_1 in String (nIS l) s raw - )} - -happyReduce_572 = happySpecReduce_1 208# happyReduction_572 -happyReduction_572 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn217 - (let Loc l (IntTokHash (i,raw)) = happy_var_1 in PrimInt (nIS l) i raw - )} - -happyReduce_573 = happySpecReduce_1 208# happyReduction_573 -happyReduction_573 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn217 - (let Loc l (WordTokHash (w,raw)) = happy_var_1 in PrimWord (nIS l) w raw - )} - -happyReduce_574 = happySpecReduce_1 208# happyReduction_574 -happyReduction_574 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn217 - (let Loc l (FloatTokHash (f,raw)) = happy_var_1 in PrimFloat (nIS l) f raw - )} - -happyReduce_575 = happySpecReduce_1 208# happyReduction_575 -happyReduction_575 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn217 - (let Loc l (DoubleTokHash (d,raw)) = happy_var_1 in PrimDouble (nIS l) d raw - )} - -happyReduce_576 = happySpecReduce_1 208# happyReduction_576 -happyReduction_576 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn217 - (let Loc l (CharacterHash (c,raw)) = happy_var_1 in PrimChar (nIS l) c raw - )} - -happyReduce_577 = happySpecReduce_1 208# happyReduction_577 -happyReduction_577 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn217 - (let Loc l (StringHash (s,raw)) = happy_var_1 in PrimString (nIS l) s raw - )} - -happyReduce_578 = happyMonadReduce 0# 209# happyReduction_578 -happyReduction_578 (happyRest) tk - = happyThen (( pushCurrentContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x) (return x) -}) - ) (\r -> happyReturn (happyIn218 r)) - -happyReduce_579 = happySpecReduce_1 210# happyReduction_579 -happyReduction_579 happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 VRightCurly) -> - happyIn219 - (happy_var_1 {- >>= \x -> trace (show x ++ show x ++ show x) (return x) -} - )} - -happyReduce_580 = happyMonadReduce 1# 210# happyReduction_580 -happyReduction_580 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (( popContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x ++ show x) (return x) -}) - ) (\r -> happyReturn (happyIn219 r)) - -happyReduce_581 = happySpecReduce_1 211# happyReduction_581 -happyReduction_581 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn220 - (let Loc l (ConId n) = happy_var_1 in ModuleName (nIS l) n - )} - -happyReduce_582 = happySpecReduce_1 211# happyReduction_582 -happyReduction_582 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn220 - (let Loc l (QConId n) = happy_var_1 in ModuleName (nIS l) (fst n ++ '.':snd n) - )} - -happyReduce_583 = happySpecReduce_1 212# happyReduction_583 -happyReduction_583 happy_x_1 - = case happyOut193 happy_x_1 of { happy_var_1 -> - happyIn221 - (happy_var_1 - )} - -happyReduce_584 = happySpecReduce_1 213# happyReduction_584 -happyReduction_584 happy_x_1 - = case happyOut194 happy_x_1 of { happy_var_1 -> - happyIn222 - (happy_var_1 - )} - -happyReduce_585 = happySpecReduce_1 214# happyReduction_585 -happyReduction_585 happy_x_1 - = case happyOut206 happy_x_1 of { happy_var_1 -> - happyIn223 - (happy_var_1 - )} - -happyReduce_586 = happySpecReduce_3 215# happyReduction_586 -happyReduction_586 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> - case happyOut223 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> - happyIn224 - (UnQual (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3]) happy_var_2 - )}}} - -happyReduce_587 = happySpecReduce_1 215# happyReduction_587 -happyReduction_587 happy_x_1 - = case happyOut225 happy_x_1 of { happy_var_1 -> - happyIn224 - (UnQual (ann happy_var_1) happy_var_1 - )} - -happyReduce_588 = happySpecReduce_1 216# happyReduction_588 -happyReduction_588 happy_x_1 - = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn225 - (let Loc l (VarSym x) = happy_var_1 in Symbol (nIS l) x - )} - -happyNewToken action sts stk - = lexer(\tk -> - let cont i = happyDoAction i tk action sts stk in - case tk of { - Loc _ EOF -> happyDoAction 133# tk action sts stk; - Loc _ (VarId _) -> cont 1#; - Loc _ (QVarId _) -> cont 2#; - Loc _ (IDupVarId _) -> cont 3#; - Loc _ (ILinVarId _) -> cont 4#; - Loc _ (ConId _) -> cont 5#; - Loc _ (QConId _) -> cont 6#; - Loc _ (DVarId _) -> cont 7#; - Loc _ (VarSym _) -> cont 8#; - Loc _ (ConSym _) -> cont 9#; - Loc _ (QVarSym _) -> cont 10#; - Loc _ (QConSym _) -> cont 11#; - Loc _ (IntTok _) -> cont 12#; - Loc _ (FloatTok _) -> cont 13#; - Loc _ (Character _) -> cont 14#; - Loc _ (StringTok _) -> cont 15#; - Loc _ (IntTokHash _) -> cont 16#; - Loc _ (WordTokHash _) -> cont 17#; - Loc _ (FloatTokHash _) -> cont 18#; - Loc _ (DoubleTokHash _) -> cont 19#; - Loc _ (CharacterHash _) -> cont 20#; - Loc _ (StringHash _) -> cont 21#; - Loc happy_dollar_dollar LeftParen -> cont 22#; - Loc happy_dollar_dollar RightParen -> cont 23#; - Loc happy_dollar_dollar LeftHashParen -> cont 24#; - Loc happy_dollar_dollar RightHashParen -> cont 25#; - Loc happy_dollar_dollar LeftCurlyBar -> cont 26#; - Loc happy_dollar_dollar RightCurlyBar -> cont 27#; - Loc happy_dollar_dollar SemiColon -> cont 28#; - Loc happy_dollar_dollar LeftCurly -> cont 29#; - Loc happy_dollar_dollar RightCurly -> cont 30#; - Loc happy_dollar_dollar VRightCurly -> cont 31#; - Loc happy_dollar_dollar LeftSquare -> cont 32#; - Loc happy_dollar_dollar RightSquare -> cont 33#; - Loc happy_dollar_dollar Comma -> cont 34#; - Loc happy_dollar_dollar Underscore -> cont 35#; - Loc happy_dollar_dollar BackQuote -> cont 36#; - Loc happy_dollar_dollar Dot -> cont 37#; - Loc happy_dollar_dollar DotDot -> cont 38#; - Loc happy_dollar_dollar Colon -> cont 39#; - Loc happy_dollar_dollar DoubleColon -> cont 40#; - Loc happy_dollar_dollar Equals -> cont 41#; - Loc happy_dollar_dollar Backslash -> cont 42#; - Loc happy_dollar_dollar Bar -> cont 43#; - Loc happy_dollar_dollar LeftArrow -> cont 44#; - Loc happy_dollar_dollar RightArrow -> cont 45#; - Loc happy_dollar_dollar At -> cont 46#; - Loc happy_dollar_dollar Tilde -> cont 47#; - Loc happy_dollar_dollar DoubleArrow -> cont 48#; - Loc happy_dollar_dollar Minus -> cont 49#; - Loc happy_dollar_dollar Exclamation -> cont 50#; - Loc happy_dollar_dollar Star -> cont 51#; - Loc happy_dollar_dollar LeftArrowTail -> cont 52#; - Loc happy_dollar_dollar RightArrowTail -> cont 53#; - Loc happy_dollar_dollar LeftDblArrowTail -> cont 54#; - Loc happy_dollar_dollar RightDblArrowTail -> cont 55#; - Loc happy_dollar_dollar RPGuardOpen -> cont 56#; - Loc happy_dollar_dollar RPGuardClose -> cont 57#; - Loc happy_dollar_dollar RPCAt -> cont 58#; - Loc _ (THIdEscape _) -> cont 59#; - Loc happy_dollar_dollar THParenEscape -> cont 60#; - Loc happy_dollar_dollar THExpQuote -> cont 61#; - Loc happy_dollar_dollar THPatQuote -> cont 62#; - Loc happy_dollar_dollar THTypQuote -> cont 63#; - Loc happy_dollar_dollar THDecQuote -> cont 64#; - Loc happy_dollar_dollar THCloseQuote -> cont 65#; - Loc happy_dollar_dollar THVarQuote -> cont 66#; - Loc happy_dollar_dollar THTyQuote -> cont 67#; - Loc _ (THQuasiQuote _) -> cont 68#; - Loc _ (XPCDATA _) -> cont 69#; - Loc happy_dollar_dollar XStdTagOpen -> cont 70#; - Loc happy_dollar_dollar XCloseTagOpen -> cont 71#; - Loc happy_dollar_dollar XCodeTagOpen -> cont 72#; - Loc happy_dollar_dollar XStdTagClose -> cont 73#; - Loc happy_dollar_dollar XEmptyTagClose -> cont 74#; - Loc happy_dollar_dollar XCodeTagClose -> cont 75#; - Loc happy_dollar_dollar XRPatOpen -> cont 76#; - Loc happy_dollar_dollar XRPatClose -> cont 77#; - Loc happy_dollar_dollar KW_Foreign -> cont 78#; - Loc happy_dollar_dollar KW_Export -> cont 79#; - Loc happy_dollar_dollar KW_Safe -> cont 80#; - Loc happy_dollar_dollar KW_Unsafe -> cont 81#; - Loc happy_dollar_dollar KW_Threadsafe -> cont 82#; - Loc happy_dollar_dollar KW_StdCall -> cont 83#; - Loc happy_dollar_dollar KW_CCall -> cont 84#; - Loc happy_dollar_dollar KW_As -> cont 85#; - Loc happy_dollar_dollar KW_By -> cont 86#; - Loc happy_dollar_dollar KW_Case -> cont 87#; - Loc happy_dollar_dollar KW_Class -> cont 88#; - Loc happy_dollar_dollar KW_Data -> cont 89#; - Loc happy_dollar_dollar KW_Default -> cont 90#; - Loc happy_dollar_dollar KW_Deriving -> cont 91#; - Loc happy_dollar_dollar KW_Do -> cont 92#; - Loc happy_dollar_dollar KW_Else -> cont 93#; - Loc happy_dollar_dollar KW_Family -> cont 94#; - Loc happy_dollar_dollar KW_Forall -> cont 95#; - Loc happy_dollar_dollar KW_Group -> cont 96#; - Loc happy_dollar_dollar KW_Hiding -> cont 97#; - Loc happy_dollar_dollar KW_If -> cont 98#; - Loc happy_dollar_dollar KW_Import -> cont 99#; - Loc happy_dollar_dollar KW_In -> cont 100#; - Loc happy_dollar_dollar KW_Infix -> cont 101#; - Loc happy_dollar_dollar KW_InfixL -> cont 102#; - Loc happy_dollar_dollar KW_InfixR -> cont 103#; - Loc happy_dollar_dollar KW_Instance -> cont 104#; - Loc happy_dollar_dollar KW_Let -> cont 105#; - Loc happy_dollar_dollar KW_MDo -> cont 106#; - Loc happy_dollar_dollar KW_Module -> cont 107#; - Loc happy_dollar_dollar KW_NewType -> cont 108#; - Loc happy_dollar_dollar KW_Of -> cont 109#; - Loc happy_dollar_dollar KW_Proc -> cont 110#; - Loc happy_dollar_dollar KW_Rec -> cont 111#; - Loc happy_dollar_dollar KW_Then -> cont 112#; - Loc happy_dollar_dollar KW_Type -> cont 113#; - Loc happy_dollar_dollar KW_Using -> cont 114#; - Loc happy_dollar_dollar KW_Where -> cont 115#; - Loc happy_dollar_dollar KW_Qualified -> cont 116#; - Loc _ (INLINE _) -> cont 117#; - Loc happy_dollar_dollar SPECIALISE -> cont 118#; - Loc _ (SPECIALISE_INLINE _) -> cont 119#; - Loc happy_dollar_dollar SOURCE -> cont 120#; - Loc happy_dollar_dollar RULES -> cont 121#; - Loc happy_dollar_dollar CORE -> cont 122#; - Loc happy_dollar_dollar SCC -> cont 123#; - Loc happy_dollar_dollar GENERATED -> cont 124#; - Loc happy_dollar_dollar DEPRECATED -> cont 125#; - Loc happy_dollar_dollar WARNING -> cont 126#; - Loc happy_dollar_dollar UNPACK -> cont 127#; - Loc _ (OPTIONS _) -> cont 128#; - Loc _ (CFILES _) -> cont 129#; - Loc _ (INCLUDE _) -> cont 130#; - Loc happy_dollar_dollar LANGUAGE -> cont 131#; - Loc happy_dollar_dollar PragmaEnd -> cont 132#; - _ -> happyError' tk - }) - -happyError_ tk = happyError' tk - -happyThen :: () => P a -> (a -> P b) -> P b -happyThen = (>>=) -happyReturn :: () => a -> P a -happyReturn = (return) -happyThen1 = happyThen -happyReturn1 :: () => a -> P a -happyReturn1 = happyReturn -happyError' :: () => (Loc Token) -> P a -happyError' tk = parseError tk - -mparseModule = happySomeParser where - happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut9 x)) - -mparseExp = happySomeParser where - happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut135 x)) - -mparsePat = happySomeParser where - happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut178 x)) - -mparseDecl = happySomeParser where - happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut46 x)) - -mparseType = happySomeParser where - happySomeParser = happyThen (happyParse 4#) (\x -> happyReturn (happyOut82 x)) - -mfindOptPragmas = happySomeParser where - happySomeParser = happyThen (happyParse 5#) (\x -> happyReturn (happyOut11 x)) - -happySeq = happyDontSeq - - -type L = SrcSpanInfo -- just for convenience -type S = SrcSpan - -parseError :: Loc Token -> P a -parseError t = fail $ "Parse error: " ++ show t - -(<>) :: (Annotated a, Annotated b) => a SrcSpanInfo -> b SrcSpanInfo -> SrcSpanInfo -a <> b = ann a <++> ann b -infixl 6 <> - --- | Class to reuse the parse function at many different types. -class Parseable ast where - -- | Parse a string with default mode. - parse :: String -> ParseResult ast - -- | Parse a string with an explicit mode. - parseWithMode :: ParseMode -> String -> ParseResult ast - -- | Parse a string with an explicit mode, returning all comments along the AST - parseWithComments :: ParseMode -> String -> ParseResult (ast, [Comment]) - -instance SrcInfo loc => Parseable (Module loc) where - parse = fmap (fmap fromSrcInfo) . parseModule - parseWithMode md = fmap (fmap fromSrcInfo) . parseModuleWithMode md - parseWithComments md s = parseModuleWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) -instance SrcInfo loc => Parseable (Exp loc) where - parse = fmap (fmap fromSrcInfo) . parseExp - parseWithMode md = fmap (fmap fromSrcInfo) . parseExpWithMode md - parseWithComments md s = parseExpWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) -instance SrcInfo loc => Parseable (Pat loc) where - parse = fmap (fmap fromSrcInfo) . parsePat - parseWithMode md = fmap (fmap fromSrcInfo) . parsePatWithMode md - parseWithComments md s = parsePatWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) -instance SrcInfo loc => Parseable (Decl loc) where - parse = fmap (fmap fromSrcInfo) . parseDecl - parseWithMode md = fmap (fmap fromSrcInfo) . parseDeclWithMode md - parseWithComments md s = parseDeclWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) -instance SrcInfo loc => Parseable (Type loc) where - parse = fmap (fmap fromSrcInfo) . parseType - parseWithMode md = fmap (fmap fromSrcInfo) . parseTypeWithMode md - parseWithComments md s = parseTypeWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) - --- | Parse of a string, which should contain a complete Haskell module. -parseModule :: String -> ParseResult (Module L) -parseModule = simpleParse mparseModule - --- | Parse of a string containing a complete Haskell module, using an explicit mode. -parseModuleWithMode :: ParseMode -> String -> ParseResult (Module L) -parseModuleWithMode = modeParse mparseModule - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseModuleWithComments :: ParseMode -> String -> ParseResult (Module L, [Comment]) -parseModuleWithComments = commentParse mparseModule - --- | Parse of a string containing a Haskell expression. -parseExp :: String -> ParseResult (Exp L) -parseExp = simpleParse mparseExp - --- | Parse of a string containing a Haskell expression, using an explicit mode. -parseExpWithMode :: ParseMode -> String -> ParseResult (Exp L) -parseExpWithMode = modeParse mparseExp - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseExpWithComments :: ParseMode -> String -> ParseResult (Exp L, [Comment]) -parseExpWithComments = commentParse mparseExp - --- | Parse of a string containing a Haskell pattern. -parsePat :: String -> ParseResult (Pat L) -parsePat = simpleParse mparsePat - --- | Parse of a string containing a Haskell pattern, using an explicit mode. -parsePatWithMode :: ParseMode -> String -> ParseResult (Pat L) -parsePatWithMode = modeParse mparsePat - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parsePatWithComments :: ParseMode -> String -> ParseResult (Pat L, [Comment]) -parsePatWithComments = commentParse mparsePat - --- | Parse of a string containing a Haskell top-level declaration. -parseDecl :: String -> ParseResult (Decl L) -parseDecl = simpleParse mparseDecl - --- | Parse of a string containing a Haskell top-level declaration, using an explicit mode. -parseDeclWithMode :: ParseMode -> String -> ParseResult (Decl L) -parseDeclWithMode = modeParse mparseDecl - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl L, [Comment]) -parseDeclWithComments = commentParse mparseDecl - --- | Parse of a string containing a Haskell type. -parseType :: String -> ParseResult (Type L) -parseType = runParser mparseType - --- | Parse of a string containing a Haskell type, using an explicit mode. -parseTypeWithMode :: ParseMode -> String -> ParseResult (Type L) -parseTypeWithMode mode = runParserWithMode mode mparseType - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseTypeWithComments :: ParseMode -> String -> ParseResult (Type L, [Comment]) -parseTypeWithComments mode str = runParserWithModeComments mode mparseType str - - -simpleParse :: AppFixity a => P (a L) -> String -> ParseResult (a L) -simpleParse p = fmap (applyFixities preludeFixities) . runParser p - -modeParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L) -modeParse p mode = fmap (applyFixities (fixities mode)) . runParserWithMode mode p - -commentParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L, [Comment]) -commentParse p mode str = runParserWithModeComments mode p str - >>= \(ast, cs) -> return (applyFixities (fixities mode) ast, cs) - --- | Partial parse of a string starting with a series of top-level option pragmas. -getTopPragmas :: String -> ParseResult [OptionPragma L] -getTopPragmas = runParser (mfindOptPragmas >>= \(ps,_,_) -> return ps) -{-# LINE 1 "templates\GenericTemplate.hs" #-} -{-# LINE 1 "templates\\GenericTemplate.hs" #-} -{-# LINE 1 "<built-in>" #-} -{-# LINE 1 "<command line>" #-} -{-# LINE 1 "templates\\GenericTemplate.hs" #-} --- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp - -{-# LINE 28 "templates\\GenericTemplate.hs" #-} - - -data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList - - - - - -{-# LINE 49 "templates\\GenericTemplate.hs" #-} - -{-# LINE 59 "templates\\GenericTemplate.hs" #-} - -{-# LINE 68 "templates\\GenericTemplate.hs" #-} - -infixr 9 `HappyStk` -data HappyStk a = HappyStk a (HappyStk a) - ------------------------------------------------------------------------------ --- starting the parse - -happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll - ------------------------------------------------------------------------------ --- Accepting the parse - --- If the current token is 0#, it means we've just accepted a partial --- parse (a %partial parser). We must ignore the saved token on the top of --- the stack in this case. -happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) = - happyReturn1 ans -happyAccept j tk st sts (HappyStk ans _) = - (happyTcHack j (happyTcHack st)) (happyReturn1 ans) - ------------------------------------------------------------------------------ --- Arrays only: do the next action - - - -happyDoAction i tk st - = {- nothing -} - - - case action of - 0# -> {- nothing -} - happyFail i tk st - -1# -> {- nothing -} - happyAccept i tk st - n | (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#)) -> {- nothing -} - - (happyReduceArr Happy_Data_Array.! rule) i tk st - where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#)))))) - n -> {- nothing -} - - - happyShift new_state i tk st - where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) - where off = indexShortOffAddr happyActOffsets st - off_i = (off Happy_GHC_Exts.+# i) - check = if (off_i Happy_GHC_Exts.>=# (0# :: Happy_GHC_Exts.Int#)) - then (indexShortOffAddr happyCheck off_i Happy_GHC_Exts.==# i) - else False - action | check = indexShortOffAddr happyTable off_i - | otherwise = indexShortOffAddr happyDefActions st - -{-# LINE 127 "templates\\GenericTemplate.hs" #-} - - -indexShortOffAddr (HappyA# arr) off = -#if __GLASGOW_HASKELL__ > 500 - Happy_GHC_Exts.narrow16Int# i -#elif __GLASGOW_HASKELL__ == 500 - Happy_GHC_Exts.intToInt16# i -#else - Happy_GHC_Exts.iShiftRA# (Happy_GHC_Exts.iShiftL# i 16#) 16# -#endif - where -#if __GLASGOW_HASKELL__ >= 503 - i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low) -#else - i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.shiftL# high 8#) low) -#endif - high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#))) - low = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off')) - off' = off Happy_GHC_Exts.*# 2# - - - - - -data HappyAddr = HappyA# Happy_GHC_Exts.Addr# - - - - ------------------------------------------------------------------------------ --- HappyState data type (not arrays) - -{-# LINE 170 "templates\\GenericTemplate.hs" #-} - ------------------------------------------------------------------------------ --- Shifting a token - -happyShift new_state 0# tk st sts stk@(x `HappyStk` _) = - let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in --- trace "shifting the error token" $ - happyDoAction i tk new_state (HappyCons (st) (sts)) (stk) - -happyShift new_state i tk st sts stk = - happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk) - --- happyReduce is specialised for the common cases. - -happySpecReduce_0 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_0 nt fn j tk st@((action)) sts stk - = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk) - -happySpecReduce_1 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk') - = let r = fn v1 in - happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) - -happySpecReduce_2 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk') - = let r = fn v1 v2 in - happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) - -happySpecReduce_3 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk') - = let r = fn v1 v2 v3 in - happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) - -happyReduce k i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happyReduce k nt fn j tk st sts stk - = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of - sts1@((HappyCons (st1@(action)) (_))) -> - let r = fn stk in -- it doesn't hurt to always seq here... - happyDoSeq r (happyGoto nt j tk st1 sts1 r) - -happyMonadReduce k nt fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happyMonadReduce k nt fn j tk st sts stk = - happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk)) - where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) - drop_stk = happyDropStk k stk - -happyMonad2Reduce k nt fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happyMonad2Reduce k nt fn j tk st sts stk = - happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk)) - where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) - drop_stk = happyDropStk k stk - - off = indexShortOffAddr happyGotoOffsets st1 - off_i = (off Happy_GHC_Exts.+# nt) - new_state = indexShortOffAddr happyTable off_i - - - - -happyDrop 0# l = l -happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t - -happyDropStk 0# l = l -happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs - ------------------------------------------------------------------------------ --- Moving to a new state after a reduction - - -happyGoto nt j tk st = - {- nothing -} - happyDoAction j tk new_state - where off = indexShortOffAddr happyGotoOffsets st - off_i = (off Happy_GHC_Exts.+# nt) - new_state = indexShortOffAddr happyTable off_i - - - - ------------------------------------------------------------------------------ --- Error recovery (0# is the error token) - --- parse error if we are in recovery and we fail again -happyFail 0# tk old_st _ stk = --- trace "failing" $ - happyError_ tk - -{- We don't need state discarding for our restricted implementation of - "error". In fact, it can cause some bogus parses, so I've disabled it - for now --SDM - --- discard a state -happyFail 0# tk old_st (HappyCons ((action)) (sts)) - (saved_tok `HappyStk` _ `HappyStk` stk) = --- trace ("discarding state, depth " ++ show (length stk)) $ - happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk)) --} - --- Enter error recovery: generate an error token, --- save the old token and carry on. -happyFail i tk (action) sts stk = --- trace "entering error recovery" $ - happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk) - --- Internal happy errors: - -notHappyAtAll = error "Internal Happy error\n" - ------------------------------------------------------------------------------ --- Hack to get the typechecker to accept our action functions - - -happyTcHack :: Happy_GHC_Exts.Int# -> a -> a -happyTcHack x y = y -{-# INLINE happyTcHack #-} - - ------------------------------------------------------------------------------ --- Seq-ing. If the --strict flag is given, then Happy emits --- happySeq = happyDoSeq --- otherwise it emits --- happySeq = happyDontSeq - -happyDoSeq, happyDontSeq :: a -> b -> b -happyDoSeq a b = a `seq` b -happyDontSeq a b = b - ------------------------------------------------------------------------------ --- Don't inline any functions from the template. GHC has a nasty habit --- of deciding to inline happyGoto everywhere, which increases the size of --- the generated parser quite a bit. - - -{-# NOINLINE happyDoAction #-} -{-# NOINLINE happyTable #-} -{-# NOINLINE happyCheck #-} -{-# NOINLINE happyActOffsets #-} -{-# NOINLINE happyGotoOffsets #-} -{-# NOINLINE happyDefActions #-} - -{-# NOINLINE happyShift #-} -{-# NOINLINE happySpecReduce_0 #-} -{-# NOINLINE happySpecReduce_1 #-} -{-# NOINLINE happySpecReduce_2 #-} -{-# NOINLINE happySpecReduce_3 #-} -{-# NOINLINE happyReduce #-} -{-# NOINLINE happyMonadReduce #-} -{-# NOINLINE happyGoto #-} -{-# NOINLINE happyFail #-} - --- end of Happy Template.
+ dist/build/Language/Haskell/Exts/InternalParser.hs view
@@ -0,0 +1,7941 @@+{-# OPTIONS_GHC -fno-warn-overlapping-patterns #-} +{-# OPTIONS -fglasgow-exts -cpp #-} +{-# OPTIONS_HADDOCK hide #-} +----------------------------------------------------------------------------- +-- | +-- Module : Language.Haskell.Exts.Annotated.Parser +-- Copyright : (c) Niklas Broberg 2004-2009, +-- Original (c) Simon Marlow, Sven Panne 1997-2000 +-- License : BSD-style (see the file LICENSE.txt) +-- +-- Maintainer : Niklas Broberg, d00nibro@chalmers.se +-- Stability : stable +-- Portability : portable +-- +-- +----------------------------------------------------------------------------- +module Language.Haskell.Exts.InternalParser ( + -- * General parsing + ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult, + -- * Parsing of specific AST elements + -- ** Modules + parseModule, parseModuleWithMode, parseModuleWithComments, + -- ** Expressions + parseExp, parseExpWithMode, parseExpWithComments, + -- ** Patterns + parsePat, parsePatWithMode, parsePatWithComments, + -- ** Declarations + parseDecl, parseDeclWithMode, parseDeclWithComments, + -- ** Types + parseType, parseTypeWithMode, parseTypeWithComments, + -- ** Option pragmas + getTopPragmas + ) where +import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Exp(..), Asst(..), XAttr(..), FieldUpdate(..) ) +import Language.Haskell.Exts.Annotated.Syntax ( Type, Exp, Asst ) +import Language.Haskell.Exts.ParseMonad +import Language.Haskell.Exts.Lexer +import Language.Haskell.Exts.ParseUtils +import Language.Haskell.Exts.Annotated.Fixity +import Language.Haskell.Exts.SrcLoc +import Language.Haskell.Exts.Comments ( Comment ) +import Language.Haskell.Exts.Extension + +import Control.Monad ( liftM ) +#if __GLASGOW_HASKELL__ >= 503 +import qualified Data.Array as Happy_Data_Array +#else +import qualified Array as Happy_Data_Array +#endif +#if __GLASGOW_HASKELL__ >= 503 +import qualified GHC.Exts as Happy_GHC_Exts +#else +import qualified GlaExts as Happy_GHC_Exts +#endif + +-- parser produced by Happy Version 1.18.4 + +newtype HappyAbsSyn = HappyAbsSyn HappyAny +#if __GLASGOW_HASKELL__ >= 607 +type HappyAny = Happy_GHC_Exts.Any +#else +type HappyAny = forall a . a +#endif +happyIn9 :: (Module L) -> (HappyAbsSyn ) +happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn9 #-} +happyOut9 :: (HappyAbsSyn ) -> (Module L) +happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut9 #-} +happyIn10 :: (PExp L) -> (HappyAbsSyn ) +happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn10 #-} +happyOut10 :: (HappyAbsSyn ) -> (PExp L) +happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut10 #-} +happyIn11 :: (([OptionPragma L],[S],L)) -> (HappyAbsSyn ) +happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn11 #-} +happyOut11 :: (HappyAbsSyn ) -> (([OptionPragma L],[S],L)) +happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut11 #-} +happyIn12 :: (([OptionPragma L],[S],Maybe L)) -> (HappyAbsSyn ) +happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn12 #-} +happyOut12 :: (HappyAbsSyn ) -> (([OptionPragma L],[S],Maybe L)) +happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut12 #-} +happyIn13 :: (OptionPragma L) -> (HappyAbsSyn ) +happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn13 #-} +happyOut13 :: (HappyAbsSyn ) -> (OptionPragma L) +happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut13 #-} +happyIn14 :: (([Name L],[S])) -> (HappyAbsSyn ) +happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn14 #-} +happyOut14 :: (HappyAbsSyn ) -> (([Name L],[S])) +happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut14 #-} +happyIn15 :: ([OptionPragma L] -> [S] -> L -> Module L) -> (HappyAbsSyn ) +happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn15 #-} +happyOut15 :: (HappyAbsSyn ) -> ([OptionPragma L] -> [S] -> L -> Module L) +happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut15 #-} +happyIn16 :: (Maybe (ModuleHead L)) -> (HappyAbsSyn ) +happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn16 #-} +happyOut16 :: (HappyAbsSyn ) -> (Maybe (ModuleHead L)) +happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut16 #-} +happyIn17 :: (Maybe (WarningText L)) -> (HappyAbsSyn ) +happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn17 #-} +happyOut17 :: (HappyAbsSyn ) -> (Maybe (WarningText L)) +happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut17 #-} +happyIn18 :: (([ImportDecl L],[Decl L],[S],L)) -> (HappyAbsSyn ) +happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn18 #-} +happyOut18 :: (HappyAbsSyn ) -> (([ImportDecl L],[Decl L],[S],L)) +happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut18 #-} +happyIn19 :: (([ImportDecl L],[Decl L],[S])) -> (HappyAbsSyn ) +happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn19 #-} +happyOut19 :: (HappyAbsSyn ) -> (([ImportDecl L],[Decl L],[S])) +happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut19 #-} +happyIn20 :: ([S]) -> (HappyAbsSyn ) +happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn20 #-} +happyOut20 :: (HappyAbsSyn ) -> ([S]) +happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut20 #-} +happyIn21 :: ([S]) -> (HappyAbsSyn ) +happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn21 #-} +happyOut21 :: (HappyAbsSyn ) -> ([S]) +happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut21 #-} +happyIn22 :: (Maybe (ExportSpecList L)) -> (HappyAbsSyn ) +happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn22 #-} +happyOut22 :: (HappyAbsSyn ) -> (Maybe (ExportSpecList L)) +happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut22 #-} +happyIn23 :: (ExportSpecList L) -> (HappyAbsSyn ) +happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn23 #-} +happyOut23 :: (HappyAbsSyn ) -> (ExportSpecList L) +happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut23 #-} +happyIn24 :: ([S]) -> (HappyAbsSyn ) +happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn24 #-} +happyOut24 :: (HappyAbsSyn ) -> ([S]) +happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut24 #-} +happyIn25 :: (([ExportSpec L],[S])) -> (HappyAbsSyn ) +happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn25 #-} +happyOut25 :: (HappyAbsSyn ) -> (([ExportSpec L],[S])) +happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut25 #-} +happyIn26 :: (ExportSpec L) -> (HappyAbsSyn ) +happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn26 #-} +happyOut26 :: (HappyAbsSyn ) -> (ExportSpec L) +happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut26 #-} +happyIn27 :: (([ImportDecl L],[S])) -> (HappyAbsSyn ) +happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn27 #-} +happyOut27 :: (HappyAbsSyn ) -> (([ImportDecl L],[S])) +happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut27 #-} +happyIn28 :: (ImportDecl L) -> (HappyAbsSyn ) +happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn28 #-} +happyOut28 :: (HappyAbsSyn ) -> (ImportDecl L) +happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut28 #-} +happyIn29 :: ((Bool,[S])) -> (HappyAbsSyn ) +happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn29 #-} +happyOut29 :: (HappyAbsSyn ) -> ((Bool,[S])) +happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut29 #-} +happyIn30 :: ((Bool,[S])) -> (HappyAbsSyn ) +happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn30 #-} +happyOut30 :: (HappyAbsSyn ) -> ((Bool,[S])) +happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut30 #-} +happyIn31 :: ((Maybe String,[S])) -> (HappyAbsSyn ) +happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn31 #-} +happyOut31 :: (HappyAbsSyn ) -> ((Maybe String,[S])) +happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut31 #-} +happyIn32 :: ((Maybe (ModuleName L),[S],Maybe L)) -> (HappyAbsSyn ) +happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn32 #-} +happyOut32 :: (HappyAbsSyn ) -> ((Maybe (ModuleName L),[S],Maybe L)) +happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut32 #-} +happyIn33 :: (Maybe (ImportSpecList L)) -> (HappyAbsSyn ) +happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn33 #-} +happyOut33 :: (HappyAbsSyn ) -> (Maybe (ImportSpecList L)) +happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut33 #-} +happyIn34 :: (ImportSpecList L) -> (HappyAbsSyn ) +happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn34 #-} +happyOut34 :: (HappyAbsSyn ) -> (ImportSpecList L) +happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut34 #-} +happyIn35 :: ((Bool, Maybe L,[S])) -> (HappyAbsSyn ) +happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn35 #-} +happyOut35 :: (HappyAbsSyn ) -> ((Bool, Maybe L,[S])) +happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut35 #-} +happyIn36 :: (([ImportSpec L],[S])) -> (HappyAbsSyn ) +happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn36 #-} +happyOut36 :: (HappyAbsSyn ) -> (([ImportSpec L],[S])) +happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut36 #-} +happyIn37 :: (ImportSpec L) -> (HappyAbsSyn ) +happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn37 #-} +happyOut37 :: (HappyAbsSyn ) -> (ImportSpec L) +happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut37 #-} +happyIn38 :: (([CName L],[S])) -> (HappyAbsSyn ) +happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn38 #-} +happyOut38 :: (HappyAbsSyn ) -> (([CName L],[S])) +happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut38 #-} +happyIn39 :: (CName L) -> (HappyAbsSyn ) +happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn39 #-} +happyOut39 :: (HappyAbsSyn ) -> (CName L) +happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut39 #-} +happyIn40 :: (Decl L) -> (HappyAbsSyn ) +happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn40 #-} +happyOut40 :: (HappyAbsSyn ) -> (Decl L) +happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut40 #-} +happyIn41 :: ((Maybe Int, [S])) -> (HappyAbsSyn ) +happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn41 #-} +happyOut41 :: (HappyAbsSyn ) -> ((Maybe Int, [S])) +happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut41 #-} +happyIn42 :: (Assoc L) -> (HappyAbsSyn ) +happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn42 #-} +happyOut42 :: (HappyAbsSyn ) -> (Assoc L) +happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut42 #-} +happyIn43 :: (([Op L],[S],L)) -> (HappyAbsSyn ) +happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn43 #-} +happyOut43 :: (HappyAbsSyn ) -> (([Op L],[S],L)) +happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut43 #-} +happyIn44 :: (([Decl L],[S])) -> (HappyAbsSyn ) +happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn44 #-} +happyOut44 :: (HappyAbsSyn ) -> (([Decl L],[S])) +happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut44 #-} +happyIn45 :: (([Decl L],[S])) -> (HappyAbsSyn ) +happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn45 #-} +happyOut45 :: (HappyAbsSyn ) -> (([Decl L],[S])) +happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut45 #-} +happyIn46 :: (Decl L) -> (HappyAbsSyn ) +happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn46 #-} +happyOut46 :: (HappyAbsSyn ) -> (Decl L) +happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut46 #-} +happyIn47 :: (DataOrNew L) -> (HappyAbsSyn ) +happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn47 #-} +happyOut47 :: (HappyAbsSyn ) -> (DataOrNew L) +happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut47 #-} +happyIn48 :: (([Type L],[S])) -> (HappyAbsSyn ) +happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn48 #-} +happyOut48 :: (HappyAbsSyn ) -> (([Type L],[S])) +happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut48 #-} +happyIn49 :: (([Decl L],[S])) -> (HappyAbsSyn ) +happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn49 #-} +happyOut49 :: (HappyAbsSyn ) -> (([Decl L],[S])) +happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut49 #-} +happyIn50 :: (([Decl L],[S])) -> (HappyAbsSyn ) +happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn50 #-} +happyOut50 :: (HappyAbsSyn ) -> (([Decl L],[S])) +happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut50 #-} +happyIn51 :: (Decl L) -> (HappyAbsSyn ) +happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn51 #-} +happyOut51 :: (HappyAbsSyn ) -> (Decl L) +happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut51 #-} +happyIn52 :: (Binds L) -> (HappyAbsSyn ) +happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn52 #-} +happyOut52 :: (HappyAbsSyn ) -> (Binds L) +happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut52 #-} +happyIn53 :: (Decl L) -> (HappyAbsSyn ) +happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn53 #-} +happyOut53 :: (HappyAbsSyn ) -> (Decl L) +happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut53 #-} +happyIn54 :: (([Type L],[S])) -> (HappyAbsSyn ) +happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn54 #-} +happyOut54 :: (HappyAbsSyn ) -> (([Type L],[S])) +happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut54 #-} +happyIn55 :: (Type L) -> (HappyAbsSyn ) +happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn55 #-} +happyOut55 :: (HappyAbsSyn ) -> (Type L) +happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut55 #-} +happyIn56 :: (Binds L) -> (HappyAbsSyn ) +happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn56 #-} +happyOut56 :: (HappyAbsSyn ) -> (Binds L) +happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut56 #-} +happyIn57 :: (([Name L],[S],L)) -> (HappyAbsSyn ) +happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn57 #-} +happyOut57 :: (HappyAbsSyn ) -> (([Name L],[S],L)) +happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut57 #-} +happyIn58 :: (CallConv L) -> (HappyAbsSyn ) +happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn58 #-} +happyOut58 :: (HappyAbsSyn ) -> (CallConv L) +happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut58 #-} +happyIn59 :: (Maybe (Safety L)) -> (HappyAbsSyn ) +happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn59 #-} +happyOut59 :: (HappyAbsSyn ) -> (Maybe (Safety L)) +happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut59 #-} +happyIn60 :: ((Maybe String, Name L, Type L, [S])) -> (HappyAbsSyn ) +happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn60 #-} +happyOut60 :: (HappyAbsSyn ) -> ((Maybe String, Name L, Type L, [S])) +happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut60 #-} +happyIn61 :: ([Rule L]) -> (HappyAbsSyn ) +happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn61 #-} +happyOut61 :: (HappyAbsSyn ) -> ([Rule L]) +happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut61 #-} +happyIn62 :: (Rule L) -> (HappyAbsSyn ) +happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn62 #-} +happyOut62 :: (HappyAbsSyn ) -> (Rule L) +happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut62 #-} +happyIn63 :: (Maybe (Activation L)) -> (HappyAbsSyn ) +happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn63 #-} +happyOut63 :: (HappyAbsSyn ) -> (Maybe (Activation L)) +happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut63 #-} +happyIn64 :: ((Maybe [RuleVar L],[S])) -> (HappyAbsSyn ) +happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn64 #-} +happyOut64 :: (HappyAbsSyn ) -> ((Maybe [RuleVar L],[S])) +happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut64 #-} +happyIn65 :: ([RuleVar L]) -> (HappyAbsSyn ) +happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn65 #-} +happyOut65 :: (HappyAbsSyn ) -> ([RuleVar L]) +happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut65 #-} +happyIn66 :: (RuleVar L) -> (HappyAbsSyn ) +happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn66 #-} +happyOut66 :: (HappyAbsSyn ) -> (RuleVar L) +happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut66 #-} +happyIn67 :: (([([Name L],String)],[S])) -> (HappyAbsSyn ) +happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn67 #-} +happyOut67 :: (HappyAbsSyn ) -> (([([Name L],String)],[S])) +happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut67 #-} +happyIn68 :: ((([Name L], String),[S])) -> (HappyAbsSyn ) +happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn68 #-} +happyOut68 :: (HappyAbsSyn ) -> ((([Name L], String),[S])) +happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut68 #-} +happyIn69 :: (([Name L],[S])) -> (HappyAbsSyn ) +happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn69 #-} +happyOut69 :: (HappyAbsSyn ) -> (([Name L],[S])) +happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut69 #-} +happyIn70 :: (Name L) -> (HappyAbsSyn ) +happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn70 #-} +happyOut70 :: (HappyAbsSyn ) -> (Name L) +happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut70 #-} +happyIn71 :: (Type L) -> (HappyAbsSyn ) +happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn71 #-} +happyOut71 :: (HappyAbsSyn ) -> (Type L) +happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut71 #-} +happyIn72 :: (PType L) -> (HappyAbsSyn ) +happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn72 #-} +happyOut72 :: (HappyAbsSyn ) -> (PType L) +happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut72 #-} +happyIn73 :: (Type L) -> (HappyAbsSyn ) +happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn73 #-} +happyOut73 :: (HappyAbsSyn ) -> (Type L) +happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut73 #-} +happyIn74 :: (PType L) -> (HappyAbsSyn ) +happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn74 #-} +happyOut74 :: (HappyAbsSyn ) -> (PType L) +happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut74 #-} +happyIn75 :: (Type L) -> (HappyAbsSyn ) +happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn75 #-} +happyOut75 :: (HappyAbsSyn ) -> (Type L) +happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut75 #-} +happyIn76 :: (PType L) -> (HappyAbsSyn ) +happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn76 #-} +happyOut76 :: (HappyAbsSyn ) -> (PType L) +happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut76 #-} +happyIn77 :: (Type L) -> (HappyAbsSyn ) +happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn77 #-} +happyOut77 :: (HappyAbsSyn ) -> (Type L) +happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut77 #-} +happyIn78 :: (PType L) -> (HappyAbsSyn ) +happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn78 #-} +happyOut78 :: (HappyAbsSyn ) -> (PType L) +happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut78 #-} +happyIn79 :: (QName L) -> (HappyAbsSyn ) +happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn79 #-} +happyOut79 :: (HappyAbsSyn ) -> (QName L) +happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut79 #-} +happyIn80 :: (QName L) -> (HappyAbsSyn ) +happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn80 #-} +happyOut80 :: (HappyAbsSyn ) -> (QName L) +happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut80 #-} +happyIn81 :: (QName L) -> (HappyAbsSyn ) +happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn81 #-} +happyOut81 :: (HappyAbsSyn ) -> (QName L) +happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut81 #-} +happyIn82 :: (Type L) -> (HappyAbsSyn ) +happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn82 #-} +happyOut82 :: (HappyAbsSyn ) -> (Type L) +happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut82 #-} +happyIn83 :: (PType L) -> (HappyAbsSyn ) +happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn83 #-} +happyOut83 :: (HappyAbsSyn ) -> (PType L) +happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut83 #-} +happyIn84 :: (PContext L) -> (HappyAbsSyn ) +happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn84 #-} +happyOut84 :: (HappyAbsSyn ) -> (PContext L) +happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut84 #-} +happyIn85 :: (([PType L],[S])) -> (HappyAbsSyn ) +happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn85 #-} +happyOut85 :: (HappyAbsSyn ) -> (([PType L],[S])) +happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut85 #-} +happyIn86 :: (([PType L],[S])) -> (HappyAbsSyn ) +happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn86 #-} +happyOut86 :: (HappyAbsSyn ) -> (([PType L],[S])) +happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut86 #-} +happyIn87 :: (([TyVarBind L],Maybe L)) -> (HappyAbsSyn ) +happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn87 #-} +happyOut87 :: (HappyAbsSyn ) -> (([TyVarBind L],Maybe L)) +happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut87 #-} +happyIn88 :: (TyVarBind L) -> (HappyAbsSyn ) +happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn88 #-} +happyOut88 :: (HappyAbsSyn ) -> (TyVarBind L) +happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut88 #-} +happyIn89 :: (([Name L],Maybe L)) -> (HappyAbsSyn ) +happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn89 #-} +happyOut89 :: (HappyAbsSyn ) -> (([Name L],Maybe L)) +happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut89 #-} +happyIn90 :: (([Name L],L)) -> (HappyAbsSyn ) +happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn90 #-} +happyOut90 :: (HappyAbsSyn ) -> (([Name L],L)) +happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut90 #-} +happyIn91 :: (([FunDep L],[S],Maybe L)) -> (HappyAbsSyn ) +happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn91 #-} +happyOut91 :: (HappyAbsSyn ) -> (([FunDep L],[S],Maybe L)) +happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut91 #-} +happyIn92 :: (([FunDep L],[S],L)) -> (HappyAbsSyn ) +happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn92 #-} +happyOut92 :: (HappyAbsSyn ) -> (([FunDep L],[S],L)) +happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut92 #-} +happyIn93 :: (FunDep L) -> (HappyAbsSyn ) +happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn93 #-} +happyOut93 :: (HappyAbsSyn ) -> (FunDep L) +happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut93 #-} +happyIn94 :: (([GadtDecl L],[S],Maybe L)) -> (HappyAbsSyn ) +happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn94 #-} +happyOut94 :: (HappyAbsSyn ) -> (([GadtDecl L],[S],Maybe L)) +happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut94 #-} +happyIn95 :: (([GadtDecl L],[S])) -> (HappyAbsSyn ) +happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn95 #-} +happyOut95 :: (HappyAbsSyn ) -> (([GadtDecl L],[S])) +happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut95 #-} +happyIn96 :: (([GadtDecl L],[S])) -> (HappyAbsSyn ) +happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn96 #-} +happyOut96 :: (HappyAbsSyn ) -> (([GadtDecl L],[S])) +happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut96 #-} +happyIn97 :: (GadtDecl L) -> (HappyAbsSyn ) +happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn97 #-} +happyOut97 :: (HappyAbsSyn ) -> (GadtDecl L) +happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut97 #-} +happyIn98 :: (([QualConDecl L],[S],Maybe L)) -> (HappyAbsSyn ) +happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn98 #-} +happyOut98 :: (HappyAbsSyn ) -> (([QualConDecl L],[S],Maybe L)) +happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut98 #-} +happyIn99 :: (([QualConDecl L],[S],L)) -> (HappyAbsSyn ) +happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn99 #-} +happyOut99 :: (HappyAbsSyn ) -> (([QualConDecl L],[S],L)) +happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut99 #-} +happyIn100 :: (QualConDecl L) -> (HappyAbsSyn ) +happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn100 #-} +happyOut100 :: (HappyAbsSyn ) -> (QualConDecl L) +happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut100 #-} +happyIn101 :: ((Maybe [TyVarBind L], [S], Maybe L)) -> (HappyAbsSyn ) +happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn101 #-} +happyOut101 :: (HappyAbsSyn ) -> ((Maybe [TyVarBind L], [S], Maybe L)) +happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut101 #-} +happyIn102 :: (ConDecl L) -> (HappyAbsSyn ) +happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn102 #-} +happyOut102 :: (HappyAbsSyn ) -> (ConDecl L) +happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut102 #-} +happyIn103 :: ((Name L, [BangType L], L)) -> (HappyAbsSyn ) +happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn103 #-} +happyOut103 :: (HappyAbsSyn ) -> ((Name L, [BangType L], L)) +happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut103 #-} +happyIn104 :: ((Name L, [BangType L],L)) -> (HappyAbsSyn ) +happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn104 #-} +happyOut104 :: (HappyAbsSyn ) -> ((Name L, [BangType L],L)) +happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut104 #-} +happyIn105 :: (BangType L) -> (HappyAbsSyn ) +happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn105 #-} +happyOut105 :: (HappyAbsSyn ) -> (BangType L) +happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut105 #-} +happyIn106 :: (BangType L) -> (HappyAbsSyn ) +happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn106 #-} +happyOut106 :: (HappyAbsSyn ) -> (BangType L) +happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut106 #-} +happyIn107 :: (([FieldDecl L],[S])) -> (HappyAbsSyn ) +happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn107 #-} +happyOut107 :: (HappyAbsSyn ) -> (([FieldDecl L],[S])) +happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut107 #-} +happyIn108 :: (FieldDecl L) -> (HappyAbsSyn ) +happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn108 #-} +happyOut108 :: (HappyAbsSyn ) -> (FieldDecl L) +happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut108 #-} +happyIn109 :: (BangType L) -> (HappyAbsSyn ) +happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn109 #-} +happyOut109 :: (HappyAbsSyn ) -> (BangType L) +happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut109 #-} +happyIn110 :: (Maybe (Deriving L)) -> (HappyAbsSyn ) +happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn110 #-} +happyOut110 :: (HappyAbsSyn ) -> (Maybe (Deriving L)) +happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut110 #-} +happyIn111 :: (([InstHead L],[S])) -> (HappyAbsSyn ) +happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn111 #-} +happyOut111 :: (HappyAbsSyn ) -> (([InstHead L],[S])) +happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut111 #-} +happyIn112 :: (QName L) -> (HappyAbsSyn ) +happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn112 #-} +happyOut112 :: (HappyAbsSyn ) -> (QName L) +happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut112 #-} +happyIn113 :: (Kind L) -> (HappyAbsSyn ) +happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn113 #-} +happyOut113 :: (HappyAbsSyn ) -> (Kind L) +happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut113 #-} +happyIn114 :: (Kind L) -> (HappyAbsSyn ) +happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn114 #-} +happyOut114 :: (HappyAbsSyn ) -> (Kind L) +happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut114 #-} +happyIn115 :: (Kind L) -> (HappyAbsSyn ) +happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn115 #-} +happyOut115 :: (HappyAbsSyn ) -> (Kind L) +happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut115 #-} +happyIn116 :: ((Maybe (Kind L), [S])) -> (HappyAbsSyn ) +happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn116 #-} +happyOut116 :: (HappyAbsSyn ) -> ((Maybe (Kind L), [S])) +happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut116 #-} +happyIn117 :: ((Maybe [ClassDecl L],[S],Maybe L)) -> (HappyAbsSyn ) +happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn117 #-} +happyOut117 :: (HappyAbsSyn ) -> ((Maybe [ClassDecl L],[S],Maybe L)) +happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut117 #-} +happyIn118 :: (([ClassDecl L],[S])) -> (HappyAbsSyn ) +happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn118 #-} +happyOut118 :: (HappyAbsSyn ) -> (([ClassDecl L],[S])) +happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut118 #-} +happyIn119 :: (([ClassDecl L],[S])) -> (HappyAbsSyn ) +happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn119 #-} +happyOut119 :: (HappyAbsSyn ) -> (([ClassDecl L],[S])) +happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut119 #-} +happyIn120 :: (ClassDecl L) -> (HappyAbsSyn ) +happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn120 #-} +happyOut120 :: (HappyAbsSyn ) -> (ClassDecl L) +happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut120 #-} +happyIn121 :: (ClassDecl L) -> (HappyAbsSyn ) +happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn121 #-} +happyOut121 :: (HappyAbsSyn ) -> (ClassDecl L) +happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut121 #-} +happyIn122 :: ((Maybe [InstDecl L],[S],Maybe L)) -> (HappyAbsSyn ) +happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn122 #-} +happyOut122 :: (HappyAbsSyn ) -> ((Maybe [InstDecl L],[S],Maybe L)) +happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut122 #-} +happyIn123 :: (([InstDecl L],[S])) -> (HappyAbsSyn ) +happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn123 #-} +happyOut123 :: (HappyAbsSyn ) -> (([InstDecl L],[S])) +happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut123 #-} +happyIn124 :: (([InstDecl L],[S])) -> (HappyAbsSyn ) +happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn124 #-} +happyOut124 :: (HappyAbsSyn ) -> (([InstDecl L],[S])) +happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut124 #-} +happyIn125 :: (InstDecl L) -> (HappyAbsSyn ) +happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn125 #-} +happyOut125 :: (HappyAbsSyn ) -> (InstDecl L) +happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut125 #-} +happyIn126 :: (InstDecl L) -> (HappyAbsSyn ) +happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn126 #-} +happyOut126 :: (HappyAbsSyn ) -> (InstDecl L) +happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut126 #-} +happyIn127 :: (InstDecl L) -> (HappyAbsSyn ) +happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn127 #-} +happyOut127 :: (HappyAbsSyn ) -> (InstDecl L) +happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut127 #-} +happyIn128 :: (Decl L) -> (HappyAbsSyn ) +happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn128 #-} +happyOut128 :: (HappyAbsSyn ) -> (Decl L) +happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut128 #-} +happyIn129 :: ((Maybe (Binds L),[S])) -> (HappyAbsSyn ) +happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn129 #-} +happyOut129 :: (HappyAbsSyn ) -> ((Maybe (Binds L),[S])) +happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut129 #-} +happyIn130 :: ((Maybe (Type L),[S])) -> (HappyAbsSyn ) +happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn130 #-} +happyOut130 :: (HappyAbsSyn ) -> ((Maybe (Type L),[S])) +happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut130 #-} +happyIn131 :: (Rhs L) -> (HappyAbsSyn ) +happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn131 #-} +happyOut131 :: (HappyAbsSyn ) -> (Rhs L) +happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut131 #-} +happyIn132 :: (([GuardedRhs L],L)) -> (HappyAbsSyn ) +happyIn132 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn132 #-} +happyOut132 :: (HappyAbsSyn ) -> (([GuardedRhs L],L)) +happyOut132 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut132 #-} +happyIn133 :: (GuardedRhs L) -> (HappyAbsSyn ) +happyIn133 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn133 #-} +happyOut133 :: (HappyAbsSyn ) -> (GuardedRhs L) +happyOut133 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut133 #-} +happyIn134 :: (Exp L) -> (HappyAbsSyn ) +happyIn134 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn134 #-} +happyOut134 :: (HappyAbsSyn ) -> (Exp L) +happyOut134 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut134 #-} +happyIn135 :: (PExp L) -> (HappyAbsSyn ) +happyIn135 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn135 #-} +happyOut135 :: (HappyAbsSyn ) -> (PExp L) +happyOut135 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut135 #-} +happyIn136 :: (PExp L) -> (HappyAbsSyn ) +happyIn136 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn136 #-} +happyOut136 :: (HappyAbsSyn ) -> (PExp L) +happyOut136 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut136 #-} +happyIn137 :: (PExp L) -> (HappyAbsSyn ) +happyIn137 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn137 #-} +happyOut137 :: (HappyAbsSyn ) -> (PExp L) +happyOut137 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut137 #-} +happyIn138 :: (PExp L) -> (HappyAbsSyn ) +happyIn138 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn138 #-} +happyOut138 :: (HappyAbsSyn ) -> (PExp L) +happyOut138 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut138 #-} +happyIn139 :: (PExp L) -> (HappyAbsSyn ) +happyIn139 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn139 #-} +happyOut139 :: (HappyAbsSyn ) -> (PExp L) +happyOut139 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut139 #-} +happyIn140 :: (PExp L) -> (HappyAbsSyn ) +happyIn140 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn140 #-} +happyOut140 :: (HappyAbsSyn ) -> (PExp L) +happyOut140 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut140 #-} +happyIn141 :: (PExp L) -> (HappyAbsSyn ) +happyIn141 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn141 #-} +happyOut141 :: (HappyAbsSyn ) -> (PExp L) +happyOut141 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut141 #-} +happyIn142 :: (PExp L) -> (HappyAbsSyn ) +happyIn142 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn142 #-} +happyOut142 :: (HappyAbsSyn ) -> (PExp L) +happyOut142 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut142 #-} +happyIn143 :: ([Pat L]) -> (HappyAbsSyn ) +happyIn143 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn143 #-} +happyOut143 :: (HappyAbsSyn ) -> ([Pat L]) +happyOut143 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut143 #-} +happyIn144 :: (Pat L) -> (HappyAbsSyn ) +happyIn144 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn144 #-} +happyOut144 :: (HappyAbsSyn ) -> (Pat L) +happyOut144 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut144 #-} +happyIn145 :: (PExp L) -> (HappyAbsSyn ) +happyIn145 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn145 #-} +happyOut145 :: (HappyAbsSyn ) -> (PExp L) +happyOut145 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut145 #-} +happyIn146 :: (PExp L) -> (HappyAbsSyn ) +happyIn146 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn146 #-} +happyOut146 :: (HappyAbsSyn ) -> (PExp L) +happyOut146 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut146 #-} +happyIn147 :: (PExp L) -> (HappyAbsSyn ) +happyIn147 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn147 #-} +happyOut147 :: (HappyAbsSyn ) -> (PExp L) +happyOut147 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut147 #-} +happyIn148 :: ([S]) -> (HappyAbsSyn ) +happyIn148 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn148 #-} +happyOut148 :: (HappyAbsSyn ) -> ([S]) +happyOut148 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut148 #-} +happyIn149 :: (PExp L) -> (HappyAbsSyn ) +happyIn149 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn149 #-} +happyOut149 :: (HappyAbsSyn ) -> (PExp L) +happyOut149 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut149 #-} +happyIn150 :: (([Maybe (PExp L)],[S])) -> (HappyAbsSyn ) +happyIn150 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn150 #-} +happyOut150 :: (HappyAbsSyn ) -> (([Maybe (PExp L)],[S])) +happyOut150 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut150 #-} +happyIn151 :: (([PExp L],[S])) -> (HappyAbsSyn ) +happyIn151 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn151 #-} +happyOut151 :: (HappyAbsSyn ) -> (([PExp L],[S])) +happyOut151 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut151 #-} +happyIn152 :: (PExp L) -> (HappyAbsSyn ) +happyIn152 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn152 #-} +happyOut152 :: (HappyAbsSyn ) -> (PExp L) +happyOut152 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut152 #-} +happyIn153 :: (PExp L) -> (HappyAbsSyn ) +happyIn153 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn153 #-} +happyOut153 :: (HappyAbsSyn ) -> (PExp L) +happyOut153 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut153 #-} +happyIn154 :: ([PExp L]) -> (HappyAbsSyn ) +happyIn154 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn154 #-} +happyOut154 :: (HappyAbsSyn ) -> ([PExp L]) +happyOut154 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut154 #-} +happyIn155 :: (PExp L) -> (HappyAbsSyn ) +happyIn155 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn155 #-} +happyOut155 :: (HappyAbsSyn ) -> (PExp L) +happyOut155 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut155 #-} +happyIn156 :: (XName L) -> (HappyAbsSyn ) +happyIn156 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn156 #-} +happyOut156 :: (HappyAbsSyn ) -> (XName L) +happyOut156 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut156 #-} +happyIn157 :: (Loc String) -> (HappyAbsSyn ) +happyIn157 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn157 #-} +happyOut157 :: (HappyAbsSyn ) -> (Loc String) +happyOut157 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut157 #-} +happyIn158 :: (Loc String) -> (HappyAbsSyn ) +happyIn158 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn158 #-} +happyOut158 :: (HappyAbsSyn ) -> (Loc String) +happyOut158 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut158 #-} +happyIn159 :: ([ParseXAttr L]) -> (HappyAbsSyn ) +happyIn159 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn159 #-} +happyOut159 :: (HappyAbsSyn ) -> ([ParseXAttr L]) +happyOut159 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut159 #-} +happyIn160 :: (ParseXAttr L) -> (HappyAbsSyn ) +happyIn160 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn160 #-} +happyOut160 :: (HappyAbsSyn ) -> (ParseXAttr L) +happyOut160 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut160 #-} +happyIn161 :: (Maybe (PExp L)) -> (HappyAbsSyn ) +happyIn161 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn161 #-} +happyOut161 :: (HappyAbsSyn ) -> (Maybe (PExp L)) +happyOut161 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut161 #-} +happyIn162 :: (L -> PExp L) -> (HappyAbsSyn ) +happyIn162 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn162 #-} +happyOut162 :: (HappyAbsSyn ) -> (L -> PExp L) +happyOut162 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut162 #-} +happyIn163 :: (([PExp L],[S])) -> (HappyAbsSyn ) +happyIn163 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn163 #-} +happyOut163 :: (HappyAbsSyn ) -> (([PExp L],[S])) +happyOut163 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut163 #-} +happyIn164 :: (([[QualStmt L]],[S])) -> (HappyAbsSyn ) +happyIn164 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn164 #-} +happyOut164 :: (HappyAbsSyn ) -> (([[QualStmt L]],[S])) +happyOut164 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut164 #-} +happyIn165 :: (([QualStmt L],[S])) -> (HappyAbsSyn ) +happyIn165 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn165 #-} +happyOut165 :: (HappyAbsSyn ) -> (([QualStmt L],[S])) +happyOut165 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut165 #-} +happyIn166 :: (QualStmt L) -> (HappyAbsSyn ) +happyIn166 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn166 #-} +happyOut166 :: (HappyAbsSyn ) -> (QualStmt L) +happyOut166 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut166 #-} +happyIn167 :: (QualStmt L) -> (HappyAbsSyn ) +happyIn167 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn167 #-} +happyOut167 :: (HappyAbsSyn ) -> (QualStmt L) +happyOut167 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut167 #-} +happyIn168 :: (([Stmt L],[S])) -> (HappyAbsSyn ) +happyIn168 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn168 #-} +happyOut168 :: (HappyAbsSyn ) -> (([Stmt L],[S])) +happyOut168 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut168 #-} +happyIn169 :: (Stmt L) -> (HappyAbsSyn ) +happyIn169 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn169 #-} +happyOut169 :: (HappyAbsSyn ) -> (Stmt L) +happyOut169 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut169 #-} +happyIn170 :: (([Alt L],L,[S])) -> (HappyAbsSyn ) +happyIn170 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn170 #-} +happyOut170 :: (HappyAbsSyn ) -> (([Alt L],L,[S])) +happyOut170 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut170 #-} +happyIn171 :: (([Alt L],[S])) -> (HappyAbsSyn ) +happyIn171 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn171 #-} +happyOut171 :: (HappyAbsSyn ) -> (([Alt L],[S])) +happyOut171 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut171 #-} +happyIn172 :: (([Alt L],[S])) -> (HappyAbsSyn ) +happyIn172 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn172 #-} +happyOut172 :: (HappyAbsSyn ) -> (([Alt L],[S])) +happyOut172 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut172 #-} +happyIn173 :: (Alt L) -> (HappyAbsSyn ) +happyIn173 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn173 #-} +happyOut173 :: (HappyAbsSyn ) -> (Alt L) +happyOut173 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut173 #-} +happyIn174 :: (GuardedAlts L) -> (HappyAbsSyn ) +happyIn174 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn174 #-} +happyOut174 :: (HappyAbsSyn ) -> (GuardedAlts L) +happyOut174 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut174 #-} +happyIn175 :: (([GuardedAlt L],L)) -> (HappyAbsSyn ) +happyIn175 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn175 #-} +happyOut175 :: (HappyAbsSyn ) -> (([GuardedAlt L],L)) +happyOut175 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut175 #-} +happyIn176 :: (GuardedAlt L) -> (HappyAbsSyn ) +happyIn176 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn176 #-} +happyOut176 :: (HappyAbsSyn ) -> (GuardedAlt L) +happyOut176 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut176 #-} +happyIn177 :: (Pat L) -> (HappyAbsSyn ) +happyIn177 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn177 #-} +happyOut177 :: (HappyAbsSyn ) -> (Pat L) +happyOut177 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut177 #-} +happyIn178 :: (([Stmt L],L,[S])) -> (HappyAbsSyn ) +happyIn178 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn178 #-} +happyOut178 :: (HappyAbsSyn ) -> (([Stmt L],L,[S])) +happyOut178 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut178 #-} +happyIn179 :: (([Stmt L],[S])) -> (HappyAbsSyn ) +happyIn179 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn179 #-} +happyOut179 :: (HappyAbsSyn ) -> (([Stmt L],[S])) +happyOut179 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut179 #-} +happyIn180 :: (([Stmt L],[S])) -> (HappyAbsSyn ) +happyIn180 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn180 #-} +happyOut180 :: (HappyAbsSyn ) -> (([Stmt L],[S])) +happyOut180 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut180 #-} +happyIn181 :: (Stmt L) -> (HappyAbsSyn ) +happyIn181 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn181 #-} +happyOut181 :: (HappyAbsSyn ) -> (Stmt L) +happyOut181 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut181 #-} +happyIn182 :: (([PFieldUpdate L],[S])) -> (HappyAbsSyn ) +happyIn182 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn182 #-} +happyOut182 :: (HappyAbsSyn ) -> (([PFieldUpdate L],[S])) +happyOut182 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut182 #-} +happyIn183 :: (PFieldUpdate L) -> (HappyAbsSyn ) +happyIn183 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn183 #-} +happyOut183 :: (HappyAbsSyn ) -> (PFieldUpdate L) +happyOut183 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut183 #-} +happyIn184 :: (([IPBind L],[S])) -> (HappyAbsSyn ) +happyIn184 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn184 #-} +happyOut184 :: (HappyAbsSyn ) -> (([IPBind L],[S])) +happyOut184 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut184 #-} +happyIn185 :: (([IPBind L],[S])) -> (HappyAbsSyn ) +happyIn185 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn185 #-} +happyOut185 :: (HappyAbsSyn ) -> (([IPBind L],[S])) +happyOut185 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut185 #-} +happyIn186 :: (IPBind L) -> (HappyAbsSyn ) +happyIn186 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn186 #-} +happyOut186 :: (HappyAbsSyn ) -> (IPBind L) +happyOut186 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut186 #-} +happyIn187 :: (PExp L) -> (HappyAbsSyn ) +happyIn187 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn187 #-} +happyOut187 :: (HappyAbsSyn ) -> (PExp L) +happyOut187 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut187 #-} +happyIn188 :: (Name L) -> (HappyAbsSyn ) +happyIn188 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn188 #-} +happyOut188 :: (HappyAbsSyn ) -> (Name L) +happyOut188 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut188 #-} +happyIn189 :: (Name L) -> (HappyAbsSyn ) +happyIn189 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn189 #-} +happyOut189 :: (HappyAbsSyn ) -> (Name L) +happyOut189 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut189 #-} +happyIn190 :: (QName L) -> (HappyAbsSyn ) +happyIn190 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn190 #-} +happyOut190 :: (HappyAbsSyn ) -> (QName L) +happyOut190 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut190 #-} +happyIn191 :: (IPName L) -> (HappyAbsSyn ) +happyIn191 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn191 #-} +happyOut191 :: (HappyAbsSyn ) -> (IPName L) +happyOut191 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut191 #-} +happyIn192 :: (Name L) -> (HappyAbsSyn ) +happyIn192 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn192 #-} +happyOut192 :: (HappyAbsSyn ) -> (Name L) +happyOut192 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut192 #-} +happyIn193 :: (QName L) -> (HappyAbsSyn ) +happyIn193 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn193 #-} +happyOut193 :: (HappyAbsSyn ) -> (QName L) +happyOut193 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut193 #-} +happyIn194 :: (Name L) -> (HappyAbsSyn ) +happyIn194 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn194 #-} +happyOut194 :: (HappyAbsSyn ) -> (Name L) +happyOut194 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut194 #-} +happyIn195 :: (QName L) -> (HappyAbsSyn ) +happyIn195 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn195 #-} +happyOut195 :: (HappyAbsSyn ) -> (QName L) +happyOut195 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut195 #-} +happyIn196 :: (QName L) -> (HappyAbsSyn ) +happyIn196 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn196 #-} +happyOut196 :: (HappyAbsSyn ) -> (QName L) +happyOut196 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut196 #-} +happyIn197 :: (Name L) -> (HappyAbsSyn ) +happyIn197 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn197 #-} +happyOut197 :: (HappyAbsSyn ) -> (Name L) +happyOut197 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut197 #-} +happyIn198 :: (QName L) -> (HappyAbsSyn ) +happyIn198 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn198 #-} +happyOut198 :: (HappyAbsSyn ) -> (QName L) +happyOut198 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut198 #-} +happyIn199 :: (Op L) -> (HappyAbsSyn ) +happyIn199 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn199 #-} +happyOut199 :: (HappyAbsSyn ) -> (Op L) +happyOut199 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut199 #-} +happyIn200 :: (QOp L) -> (HappyAbsSyn ) +happyIn200 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn200 #-} +happyOut200 :: (HappyAbsSyn ) -> (QOp L) +happyOut200 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut200 #-} +happyIn201 :: (QOp L) -> (HappyAbsSyn ) +happyIn201 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn201 #-} +happyOut201 :: (HappyAbsSyn ) -> (QOp L) +happyOut201 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut201 #-} +happyIn202 :: (QName L) -> (HappyAbsSyn ) +happyIn202 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn202 #-} +happyOut202 :: (HappyAbsSyn ) -> (QName L) +happyOut202 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut202 #-} +happyIn203 :: (QName L) -> (HappyAbsSyn ) +happyIn203 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn203 #-} +happyOut203 :: (HappyAbsSyn ) -> (QName L) +happyOut203 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut203 #-} +happyIn204 :: (Name L) -> (HappyAbsSyn ) +happyIn204 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn204 #-} +happyOut204 :: (HappyAbsSyn ) -> (Name L) +happyOut204 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut204 #-} +happyIn205 :: (Name L) -> (HappyAbsSyn ) +happyIn205 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn205 #-} +happyOut205 :: (HappyAbsSyn ) -> (Name L) +happyOut205 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut205 #-} +happyIn206 :: (IPName L) -> (HappyAbsSyn ) +happyIn206 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn206 #-} +happyOut206 :: (HappyAbsSyn ) -> (IPName L) +happyOut206 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut206 #-} +happyIn207 :: (QName L) -> (HappyAbsSyn ) +happyIn207 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn207 #-} +happyOut207 :: (HappyAbsSyn ) -> (QName L) +happyOut207 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut207 #-} +happyIn208 :: (Name L) -> (HappyAbsSyn ) +happyIn208 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn208 #-} +happyOut208 :: (HappyAbsSyn ) -> (Name L) +happyOut208 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut208 #-} +happyIn209 :: (QName L) -> (HappyAbsSyn ) +happyIn209 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn209 #-} +happyOut209 :: (HappyAbsSyn ) -> (QName L) +happyOut209 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut209 #-} +happyIn210 :: (Name L) -> (HappyAbsSyn ) +happyIn210 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn210 #-} +happyOut210 :: (HappyAbsSyn ) -> (Name L) +happyOut210 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut210 #-} +happyIn211 :: (QName L) -> (HappyAbsSyn ) +happyIn211 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn211 #-} +happyOut211 :: (HappyAbsSyn ) -> (QName L) +happyOut211 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut211 #-} +happyIn212 :: (QName L) -> (HappyAbsSyn ) +happyIn212 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn212 #-} +happyOut212 :: (HappyAbsSyn ) -> (QName L) +happyOut212 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut212 #-} +happyIn213 :: (Name L) -> (HappyAbsSyn ) +happyIn213 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn213 #-} +happyOut213 :: (HappyAbsSyn ) -> (Name L) +happyOut213 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut213 #-} +happyIn214 :: (Name L) -> (HappyAbsSyn ) +happyIn214 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn214 #-} +happyOut214 :: (HappyAbsSyn ) -> (Name L) +happyOut214 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut214 #-} +happyIn215 :: (QName L) -> (HappyAbsSyn ) +happyIn215 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn215 #-} +happyOut215 :: (HappyAbsSyn ) -> (QName L) +happyOut215 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut215 #-} +happyIn216 :: (Literal L) -> (HappyAbsSyn ) +happyIn216 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn216 #-} +happyOut216 :: (HappyAbsSyn ) -> (Literal L) +happyOut216 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut216 #-} +happyIn217 :: (S) -> (HappyAbsSyn ) +happyIn217 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn217 #-} +happyOut217 :: (HappyAbsSyn ) -> (S) +happyOut217 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut217 #-} +happyIn218 :: (S) -> (HappyAbsSyn ) +happyIn218 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn218 #-} +happyOut218 :: (HappyAbsSyn ) -> (S) +happyOut218 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut218 #-} +happyIn219 :: (ModuleName L) -> (HappyAbsSyn ) +happyIn219 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn219 #-} +happyOut219 :: (HappyAbsSyn ) -> (ModuleName L) +happyOut219 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut219 #-} +happyIn220 :: (Name L) -> (HappyAbsSyn ) +happyIn220 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn220 #-} +happyOut220 :: (HappyAbsSyn ) -> (Name L) +happyOut220 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut220 #-} +happyIn221 :: (QName L) -> (HappyAbsSyn ) +happyIn221 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn221 #-} +happyOut221 :: (HappyAbsSyn ) -> (QName L) +happyOut221 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut221 #-} +happyIn222 :: (Name L) -> (HappyAbsSyn ) +happyIn222 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn222 #-} +happyOut222 :: (HappyAbsSyn ) -> (Name L) +happyOut222 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut222 #-} +happyIn223 :: (QName L) -> (HappyAbsSyn ) +happyIn223 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn223 #-} +happyOut223 :: (HappyAbsSyn ) -> (QName L) +happyOut223 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut223 #-} +happyIn224 :: (Name L) -> (HappyAbsSyn ) +happyIn224 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyIn224 #-} +happyOut224 :: (HappyAbsSyn ) -> (Name L) +happyOut224 x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOut224 #-} +happyInTok :: (Loc Token) -> (HappyAbsSyn ) +happyInTok x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyInTok #-} +happyOutTok :: (HappyAbsSyn ) -> (Loc Token) +happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x +{-# INLINE happyOutTok #-} + + +happyActOffsets :: HappyAddr +happyActOffsets = HappyA# "\x00\x00\x1c\x11\xa0\x10\x52\x0a\x4b\x19\x00\x00\x00\x00\xf8\x07\x0b\x03\x34\x08\x00\x00\x00\x00\x73\x18\x00\x00\x00\x00\x00\x00\xb1\x07\x00\x00\x4b\x19\x0d\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x18\xcb\x18\x71\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x08\xa4\x07\x0b\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x1b\x00\x00\x00\x00\x00\x00\xe8\x17\x00\x00\x15\x08\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x0b\x30\x02\x44\x0c\x00\x00\x7c\x15\xe8\x17\xe8\x17\xe8\x17\x1c\x11\x00\x00\x1c\x11\x1c\x11\x1c\x11\x33\x19\x00\x00\x17\x08\x68\x1a\x00\x00\x74\x17\x1c\x11\x79\x00\x1c\x11\x33\x19\xc7\x07\x0c\x08\xb9\x07\x09\x08\x1c\x11\x00\x00\x00\x00\x00\x00\x33\x19\x07\x08\x06\x08\x00\x00\x7c\x15\x8b\x19\x00\x08\x97\x1a\x00\x08\x10\x08\x08\x08\x05\x08\x04\x08\xf2\x1a\xf2\x1a\x00\x00\x00\x00\x7e\x1b\x91\x07\x4d\x17\x91\x07\x00\x00\x91\x07\xfe\xff\x00\x00\x00\x00\xf5\x07\xd9\x16\xa6\x07\x95\x06\x00\x00\x00\x00\x00\x00\x1c\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x07\x00\x00\x00\x00\x33\x19\x00\x00\x00\x00\x00\x00\x1c\x11\x1c\x11\x1c\x11\x1c\x11\x2d\x00\x00\x00\xfe\x07\xea\x07\x00\x00\x00\x00\x00\x00\x00\x00\x76\x03\x25\x00\xfd\x07\x8b\x07\x87\x07\x22\x00\x00\x00\xdd\x07\xcc\x1a\x23\x00\xd3\x07\x2e\x00\x33\x19\xcc\x1a\xd1\x07\xb3\x18\x73\x19\x50\x1a\xcc\x07\x00\x00\xb2\x16\x00\x00\x3c\x0d\x3c\x0d\x00\x00\x98\x07\x00\x00\x00\x00\x85\x07\x7b\x07\x00\x00\x33\x19\x33\x19\x33\x19\xc1\x07\x7d\x07\x34\x06\x34\x06\xa5\x07\x00\x00\xba\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\x02\x2b\x02\xbf\x07\x00\x00\x00\x00\x9c\x08\x52\x0a\xa1\x07\x9c\x07\x32\x1b\x99\x07\xc0\x07\xad\x07\x59\x00\x50\x04\xb2\x16\x00\x00\x26\x15\x00\x00\x9f\x07\xed\x01\xb0\x07\xb4\x07\x00\x00\x00\x00\x1c\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x07\x00\x00\x00\x00\x00\x00\x12\x02\x00\x00\x00\x00\x14\x04\x4c\x0b\xf4\x01\xb2\x07\xaf\x07\xae\x07\xac\x07\xab\x07\x00\x00\xaa\x07\xb2\x16\xa0\x07\x9d\x07\x73\x19\xb2\x16\xb2\x16\xa8\x13\x00\x00\x0d\x04\x1c\x11\xcc\x1a\x33\x19\x4c\x06\x33\x19\x43\x01\x00\x00\xca\x12\x8d\x07\x00\x00\x00\x00\xd7\x01\xae\x01\x00\x00\x33\x01\x96\x07\x83\x07\xf0\x01\x95\x07\x00\x00\x8f\x07\x50\x1a\x00\x00\x00\x00\x50\x1a\x00\x00\x50\x1a\x00\x00\x00\x00\xfb\x19\x33\x19\x50\x1a\x00\x00\x39\x00\x88\x07\x00\x00\x00\x00\x00\x00\x97\x07\x00\x00\x76\x07\x00\x00\x20\x00\x1b\x00\x19\x00\x0b\x03\x00\x00\x00\x00\x00\x00\xf3\x19\x00\x00\x6b\x07\x67\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x19\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x33\x19\x00\x00\x00\x00\x00\x00\x33\x18\x33\x19\x68\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x1b\x4c\x06\x2e\x07\x10\x07\x1d\x00\x29\x07\xc7\x03\xe8\x00\x00\x00\x00\x00\x00\x00\x05\x07\x48\x07\x00\x00\x1c\x11\x24\x10\xcb\x02\x00\x00\x37\x07\x00\x00\x00\x00\x00\x00\x00\x00\x54\x07\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\xdf\x01\x00\x00\x1c\x11\x1c\x11\x00\x00\x42\x07\x00\x00\xc0\x0c\x00\x00\xc0\x0c\x1c\x11\x34\x0e\x00\x00\x1c\x11\xf9\x06\x1c\x11\x00\x00\x24\x10\x00\x00\x00\x00\x00\x00\x00\x00\x39\x00\x00\x00\x00\x00\x45\x07\x3e\x16\x48\x14\x00\x00\xdb\x04\x00\x00\x00\x00\xb0\x08\x3c\x07\xe5\x06\x00\x00\x2f\x07\x3a\x07\x00\x00\x26\x07\x00\x00\x00\x00\x1c\x11\x00\x00\x27\x07\x86\x12\x25\x07\x24\x07\x39\x00\x39\x00\x1c\x11\x00\x00\x0f\x07\x0d\x07\x1a\x07\x1b\x07\x3c\x0d\x16\x07\x0c\x07\x39\x00\x00\x00\x1c\x11\x06\x07\x00\x00\x00\x07\x50\x1a\x33\x19\xa2\x06\xa1\x06\x33\x19\x03\x07\x17\x07\xf6\x06\xbc\x06\x0b\x07\x00\x00\x1c\x11\x1c\x11\xf5\x06\xc5\x1a\x00\x00\xfc\x06\xf7\x06\xc5\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x06\xe4\x05\x00\x00\x00\x00\xc7\x06\x00\x00\x00\x00\x00\x00\x00\x00\xed\x06\x56\x09\x39\x00\x48\x14\xc1\x06\xf4\x06\xf1\x06\xec\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x06\x00\x00\x00\x00\x00\x00\x1c\x11\x21\x1b\x33\x19\xd8\x06\x00\x00\x73\x06\xd2\x06\x00\x00\x00\x00\x00\x00\x00\x00\x50\x1a\x00\x00\x33\x19\x00\x00\x00\x00\x00\x00\x89\x06\x00\x00\x00\x00\x3c\x0d\x00\x00\x1c\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x18\x00\x00\x00\x00\xc3\x06\x00\x00\x00\x00\x00\x00\x8b\x06\x00\x00\x00\x00\x33\x18\xb9\x06\xbf\x06\x00\x00\x00\x00\xbb\x06\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x06\x00\x00\x25\x0b\x2f\x01\xb0\x08\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x06\x00\x00\x05\x06\xf8\x03\xe0\x03\xa5\x03\x8e\x03\x4f\x03\x47\x03\x43\x03\x2f\x03\xfa\x02\xf4\x02\xe8\x02\x00\x00\x52\x0a\xb5\x06\x87\x06\x00\x00\x43\x00\x00\x00\x9b\x06\xa6\x06\x00\x00\x00\x00\xa6\x06\x00\x00\x97\x06\x98\x06\x00\x00\x00\x00\x00\x00\xa8\x0f\x00\x00\x16\x02\x00\x00\x00\x00\x00\x00\x00\x00\x93\x06\x00\x00\x00\x00\x00\x00\xd6\x01\x00\x00\x00\x00\x1c\x11\x00\x00\x5b\x12\xd1\x01\x00\x00\x00\x00\x00\x00\x0d\x1b\x33\x19\x84\x06\x00\x00\xde\x08\x00\x00\x00\x00\x00\x00\x83\x06\x1d\x00\x00\x00\x00\x00\x50\x06\x82\x06\x00\x00\xde\x01\x45\x06\x36\x06\x72\x06\x6e\x06\x43\x01\x00\x00\x5b\x06\x00\x00\x6a\x06\x4e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x06\x0d\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x02\x06\x00\x00\x00\x00\x00\x00\xf3\x18\x00\x00\x00\x00\x00\x00\x44\x06\x1d\x00\xe5\x11\x00\x00\x41\x08\xde\x08\x00\x00\x00\x00\xd7\x08\x48\x00\x2d\x06\x2b\x06\x3d\x18\x50\x1a\xb1\x05\xd2\x05\x00\x00\x00\x00\x2f\x01\x2c\x0f\x1c\x11\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x11\xcc\x05\xf2\xff\x34\x0e\x34\x0e\x00\x00\xbc\x05\x1c\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x16\x00\x00\xf6\x05\xe1\x05\x50\x1a\xb8\x0d\xdc\x05\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x17\x1c\x11\x5e\x13\xda\x05\x39\x00\x1c\x11\x3b\x06\xcf\x05\xbc\x14\xf2\x12\xcf\x05\x00\x00\x00\x00\x00\x00\x33\x19\x00\x00\x00\x00\x63\x05\xc0\x05\xf9\x1a\x00\x00\x91\x14\xaf\x05\xa1\x05\x50\x05\x41\x05\x4e\x05\x00\x00\xcb\x19\x00\x00\xf0\x05\x00\x00\x00\x00\x00\x00\x00\x00\x47\x05\x00\x00\x38\x05\x19\x05\xd4\x09\x94\x05\x00\x00\x00\x00\x91\x05\x75\x05\x00\x00\x00\x00\x00\x00\x83\x05\x00\x00\x21\x06\x00\x00\x00\x00\x00\x00\x7c\x05\x1c\x11\x66\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x05\x00\x00\x00\x00\x00\x00\x33\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x03\x00\x00\x50\x1a\x64\x05\x00\x00\x00\x00\x00\x00\x98\x11\x60\x05\x39\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x02\x00\x00\x50\x1a\x00\x00\x00\x00\x08\x03\x00\x00\x53\x05\x00\x00\x1c\x11\x1c\x11\x1c\x11\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x05\x00\x00\x00\x00\x56\x05\x1d\x14\x81\x08\x59\x05\x00\x00\x00\x00\x50\x1a\xeb\x04\x97\x08\x00\x00\x50\x1a\x50\x1a\xde\x04\x00\x00\x00\x00\x00\x00\x72\x01\x31\x05\x39\x00\x3a\x05\x34\x05\x00\x00\x00\x00\x32\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x05\x77\x00\x06\x05\x00\x00\xb3\x19\x04\x05\x00\x00\x50\x1a\x00\x00\x4d\x00\xa2\x02\x00\x00\x00\x00\x0a\x05\x50\x1a\x00\x00\x00\x00\xb1\x04\x00\x00\x00\x00\x00\x00\xa3\x15\x1c\x11\x00\x00\xac\x04\xe9\x04\x00\x00\x2c\x0f\x1c\x11\xb0\x0e\xf2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x19\x73\x19\xb1\x1a\xe3\x04\x33\x19\xd3\x13\xee\x04\xee\x05\x33\x19\x00\x00\xcf\x04\x00\x00\x80\x1a\xd9\x04\x28\x1a\x00\x00\xf1\x02\x00\x00\x00\x00\x00\x00\xdd\x04\x00\x00\x0c\x06\x00\x00\xa3\x15\x00\x00\x00\x00\xd5\x01\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x04\xda\x04\xc9\x04\x7a\x04\x71\x04\x00\x00\x00\x00\x33\x19\x55\x04\xaa\x04\xa6\x04\x98\x04\x98\x04\x0f\x12\xae\x04\x00\x00\x00\x00\x7d\x01\x00\x00\x00\x00\x00\x00\x0c\x00\x79\x04\x1c\x11\x00\x00\x00\x00\xb1\x1a\x2b\x08\x10\x1a\x10\x1a\x33\x19\xc7\x01\xa2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x1a\x33\x04\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x11\x00\x00\x00\x00\x00\x00\x33\x19\x00\x00\x00\x00\x61\x04\x00\x00\x00\x00\x2f\x04\x00\x00\x00\x00\x3c\x1a\x66\x04\x58\x04\x2a\x00\x0c\x06\x00\x00\x00\x00\x1c\x11\x00\x00\x00\x00\x00\x00\x77\x04\x00\x00\x10\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x04\x00\x00\xfc\x14\x00\x00\x84\x04\x69\x04\x00\x00\x00\x00\x00\x00\x6d\x04\x59\x18\x5e\x04\x3c\x1a\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x56\x04\x00\x00\x00\x00\x00\x00"# + +happyGotoOffsets :: HappyAddr +happyGotoOffsets = HappyA# "\x01\x00\x94\x21\x1e\x24\xa5\x01\xa3\x05\x03\x00\x02\x00\x62\x04\xfb\x05\x00\x00\x00\x00\x00\x00\xda\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\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\xdf\x03\x7e\x04\xb7\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x04\x00\x00\x00\x00\x00\x00\x39\x04\x00\x00\x7a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x08\x00\x00\x00\x00\x00\x00\xa1\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x21\xcb\x03\x06\x22\x00\x00\x47\x16\x86\x2a\xac\x15\x70\x2a\x08\x24\x00\x00\x7e\x21\x2b\x21\xd6\x28\x90\x05\x7b\x03\x10\x01\x36\x02\x00\x00\x88\x04\x2e\x28\x00\x00\x18\x28\x67\x06\x00\x00\x00\x00\x00\x00\x92\xff\xc6\x27\x00\x00\x00\x00\x00\x00\x52\x06\xf5\xff\x8b\xff\x00\x00\x4a\x29\xca\x06\x0f\x04\x3f\x03\x03\x04\x81\x05\x00\x00\x00\x00\x00\x00\x77\x02\x69\x02\x00\x00\x00\x00\xaf\x09\x00\x00\x55\x2a\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\xf9\xff\x85\x04\x86\x05\x63\x03\x00\x00\x00\x00\x00\x00\xec\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x04\x00\x00\x00\x00\x7d\x05\x00\x00\x00\x00\x00\x00\xb0\x27\x5e\x27\x48\x27\xf6\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x03\x33\x03\x00\x00\x00\x00\x35\x02\x3f\x06\x46\x02\x00\x00\xda\x06\x9b\x01\xa8\x03\x00\x00\x00\x00\x2e\x2a\x00\x00\xf9\x1d\xa6\x1d\x00\x00\x00\x00\x1f\x00\x04\x00\xb2\x03\x00\x00\x00\x00\x2c\x06\x3f\x01\x19\x06\xc8\x03\x00\x00\xe6\x03\xdc\x03\x00\x00\x62\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xff\x68\x03\x00\x00\x00\x00\x00\x00\xc1\x01\x23\x01\x00\x00\x00\x00\x31\x09\x00\x00\x00\x00\x00\x00\x00\x00\x89\x04\x13\x2a\x00\x00\xe2\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x22\x3d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x15\x00\x00\x00\x00\xa4\x06\xfd\x29\xe2\x29\x3c\x03\x00\x00\x7f\x04\xec\x28\x7d\x00\x68\x05\xfe\x00\x55\x05\xec\xff\x00\x00\xcc\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\x31\x04\x00\x00\x00\x00\x80\x03\x00\x00\xac\x00\x00\x00\x00\x00\xa7\x00\x06\x06\x2b\x07\x00\x00\x11\x03\x00\x00\x71\x05\x6f\x05\xfc\x04\x06\x00\xf1\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\x04\x00\x00\x00\x00\x00\x00\x6d\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x05\x00\x00\x00\x00\x64\x04\x00\x00\x00\x00\xde\x05\x00\x00\x00\x00\x00\x00\xdd\x00\xc9\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x02\xc8\x00\x73\x03\x66\x03\x51\x04\x3c\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x03\x48\x03\x00\x00\x15\x21\x53\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x22\x00\x00\x00\x00\xfa\x01\x00\x00\xb6\x23\xe0\x26\x00\x00\x00\x00\x00\x00\x76\x22\x00\x00\x58\x22\x8e\x26\x0e\x1b\x00\x00\x78\x26\x2b\x03\x26\x26\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\xef\x02\xbb\x04\x00\x00\x00\x00\xdd\x03\xa0\x29\x00\x00\x74\x03\x00\x00\x00\x00\xe4\xff\x7e\xff\x2e\x03\x05\x02\x1e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x26\x00\x00\xa1\x02\x11\x02\x00\x00\x00\x00\x94\x02\x8c\x02\xbe\x25\x00\x00\x00\x00\x00\x00\x00\x00\xae\x02\xad\x1c\xef\xff\x87\xff\x6b\x02\x00\x00\xa8\x25\x00\x00\x00\x00\xc0\x02\x18\x07\x40\x05\x00\x00\x00\x00\x77\x03\x00\x00\x00\x00\x00\x00\xfd\x02\xde\x02\x00\x00\x56\x25\x40\x25\x00\x00\x57\x07\x00\x00\x00\x00\x00\x00\x5b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x03\x00\x00\x00\x00\x00\x00\x6e\x02\x00\x00\x7d\x04\x5c\x04\x00\x00\x60\x00\x1d\x02\x8a\x29\xe1\x02\x86\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\x28\x45\x00\x36\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x03\x00\x00\x2d\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x1c\x00\x00\xc2\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x04\x00\x00\x27\x02\x23\x04\x00\x00\x00\x00\x00\x00\x1c\x00\x16\x00\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x02\x00\x00\x1a\x00\x09\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x0e\x02\xe0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xff\x00\x00\x00\x00\xde\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x01\x00\x00\x00\x00\xee\x24\x00\x00\x83\x01\x00\x00\x00\x00\x00\x00\x00\x00\xb4\xff\x1a\x05\x00\x00\x00\x00\xef\x06\x54\x02\x00\x00\x00\x00\x00\x00\xbe\x03\x00\x00\x00\x00\x59\x02\xcd\x01\x00\x00\xaa\xff\x4b\x02\x76\x02\x00\x00\x00\x00\x81\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\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x03\x00\x00\x00\x00\x00\x00\x48\x02\x00\x00\x00\x00\x00\x00\x6b\x04\x40\x00\x37\x00\x00\x00\x00\x00\x41\x03\xcc\xff\x00\x00\x6d\x03\x04\x07\x00\x00\x00\x00\x57\x01\x64\x00\x00\x00\x00\x00\xc9\x03\x8e\x07\x00\x00\xb6\x03\x00\x00\x00\x00\xc9\x01\x4c\x1e\x59\x20\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x24\x00\x00\x00\x00\xb4\x1b\x61\x1b\x00\x00\x00\x00\x43\x20\x00\x00\x00\x00\x00\x00\xff\x01\x00\x00\xbb\x29\x00\x00\x00\x00\x00\x00\x9e\x03\x38\x23\x00\x00\xb3\x01\x25\x01\x26\x00\x8b\x02\x4d\x03\x00\x00\x86\x24\xd2\x02\x00\x00\x92\x01\xf0\x1f\x8d\x00\x00\x00\x34\x29\x7d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x09\x02\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x87\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xff\x00\x00\x00\x00\x00\x00\x87\x03\x00\x00\x00\x00\x37\x02\x00\x00\x47\x02\x00\x00\x76\x00\x00\x00\x78\x01\x00\x00\x00\x00\x0a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\xda\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x05\x46\x03\x00\x00\x00\x00\x00\x00\x00\x00\x27\x02\x00\x00\x94\x03\x63\x01\x00\x00\x00\x00\x00\x00\xf6\x01\x00\x00\xe3\x00\x00\x00\x00\x00\xeb\x02\x00\x00\xa3\x03\x00\x00\x17\x00\x00\x00\x00\x00\x7a\x01\x00\x00\x00\x00\x00\x00\x87\x1f\x71\x1f\x1e\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\xd6\x03\x07\x01\x00\x00\x00\x00\x89\x07\x00\x00\x6d\x03\x00\x00\x4a\x01\x79\x07\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\xed\x00\x00\x00\x00\x00\x6d\x03\x00\x00\x00\x00\x6d\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x03\xa0\x23\x00\x00\x1b\x01\xdc\x00\x00\x00\x07\x1c\x08\x1f\x4e\x23\x00\x00\x00\x00\x00\x00\x00\x00\x63\x02\x00\x00\x00\x00\xb6\x05\x8a\x03\x7e\x01\x00\x00\xf4\x04\xea\x02\x00\x00\xb3\x00\xdf\x04\x00\x00\x00\x00\x00\x00\x50\x00\x00\x00\x12\x00\x00\x00\x7a\x01\x00\x00\x00\x00\x00\x00\x67\x01\x00\x00\x9f\x00\x00\x00\x4b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x00\xe1\x00\x00\x00\x00\x00\xcc\x04\x00\x00\x00\x00\x00\x00\xbf\x00\x91\x00\x62\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb5\x1e\x00\x00\x00\x00\xd2\x00\x3b\x04\x64\x07\x40\x07\xa4\x04\x96\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x1e\x00\x00\x00\x00\x00\x00\x91\x04\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\xb8\x00\xbc\x03\xb5\xff\x00\x00\x00\x00\x70\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xff\x00\x00\x00\x00\x36\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# + +happyDefActions :: HappyAddr +happyDefActions = HappyA# "\xbe\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbe\xfd\x00\x00\x00\x00\xf2\xff\x00\x00\x51\xff\x38\xff\x58\xff\x4e\xff\x4c\xff\x45\xff\x00\x00\x3b\xff\x00\x00\x00\x00\xe2\xfd\xb7\xfd\x02\xfe\x3e\xff\xdc\xfd\x4b\xff\xe9\xfd\xde\xfd\xdd\xfd\xda\xfd\xdb\xfd\x00\x00\x00\x00\x00\x00\xe5\xfd\xe1\xfd\xe0\xfd\xdf\xfd\xe4\xfd\xe3\xfd\xe8\xfd\x31\xff\xe6\xfd\xe7\xfd\x8a\xff\xb1\xff\x00\x00\x00\x00\x95\xff\x8b\xff\x89\xff\x9b\xff\xc8\xfe\xc7\xfe\xc5\xfe\xc3\xfe\xbe\xfe\xb9\xfe\xb4\xfe\xac\xfe\xa8\xfe\x9a\xfe\xa5\xfe\xa6\xfe\xa7\xfe\x09\xfe\x04\xfe\xeb\xfd\xff\xfd\xa4\xfe\xea\xfd\xc8\xfd\xc6\xfd\xc7\xfd\xc5\xfd\xc4\xfd\xc3\xfd\xc2\xfd\xc1\xfd\xc0\xfd\xbf\xfd\x00\x00\x00\x00\x00\x00\x9e\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xbe\xfd\x00\x00\x00\x00\x8f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\xff\x00\x00\x00\x00\xbe\xfd\x00\x00\xaf\xff\xae\xff\xad\xff\x00\x00\xbe\xfd\xbe\xfd\x93\xff\x00\x00\x00\x00\x6b\xff\x00\x00\x6b\xff\x6d\xff\x00\x00\x00\x00\x00\x00\x5f\xff\x5f\xff\x24\xfe\xce\xfe\xc7\xfe\x00\x00\x00\x00\x00\x00\xd0\xfe\x00\x00\xe9\xff\xf9\xff\xf7\xff\xbe\xfd\x00\x00\xe9\xff\x00\x00\x23\xfe\xf1\xfd\xf0\xfd\xcd\xfe\xf5\xfd\xec\xfd\xd9\xfd\xfb\xfd\xd6\xfd\xd5\xfd\xd2\xfd\xd7\xfd\xc9\xfd\xd8\xfd\x00\x00\xcf\xfd\xed\xfd\x00\x00\xd1\xfd\xd0\xfd\xce\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xff\x00\x00\x5d\xff\x5a\xff\x5b\xff\x08\xfe\x01\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\xff\x6b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xff\x00\x00\x00\x00\x00\x00\xb1\xfe\x00\x00\xba\xfe\x1e\xfe\x1e\xfe\x7d\xff\x00\x00\xdd\xff\xdd\xff\xe7\xfe\x00\x00\xbb\xfe\x00\x00\x90\xff\x00\x00\x2b\xff\x00\x00\x00\x00\x00\x00\x00\x00\x4c\xfe\x79\xfe\x75\xfe\x78\xfe\x77\xfe\x76\xfe\x71\xfe\x70\xfe\x6f\xfe\x6e\xfe\x6d\xfe\x6c\xfe\x6b\xfe\x6a\xfe\x69\xfe\x68\xfe\x73\xfe\x72\xfe\x67\xfe\x66\xfe\x65\xfe\x64\xfe\x63\xfe\x62\xfe\x61\xfe\x60\xfe\x5f\xfe\x5e\xfe\x5d\xfe\x5c\xfe\x5b\xfe\x5a\xfe\x59\xfe\x58\xfe\x57\xfe\x56\xfe\x55\xfe\x54\xfe\x53\xfe\x52\xfe\x51\xfe\x74\xfe\x50\xfe\x4f\xfe\x4e\xfe\x90\xfe\x91\xfe\x00\x00\x00\x00\x00\x00\x93\xfe\x92\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xc7\xfe\x00\x00\x00\x00\x85\xfe\x00\x00\x00\x00\xbc\xfe\xad\xfe\x00\x00\xb2\xfe\x8c\xfe\x48\xfe\x00\x00\x47\xfe\xef\xfd\xee\xfd\x00\x00\xf9\xfd\xd4\xfd\xd3\xfd\xcd\xfd\x0d\xfe\x00\x00\xcb\xfd\xcc\xfd\xca\xfd\x00\x00\x0b\xfe\x8d\xfe\x8c\xfe\x00\x00\x00\x00\x00\x00\xf5\xfd\x00\x00\xd3\xfd\xcd\xfd\x0e\xfe\xcb\xfd\xd1\xfd\xcc\xfd\xca\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xb5\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xf7\xfe\x00\x00\x00\x00\xb0\xff\x00\x00\x00\x00\x42\xff\x34\xff\x00\x00\x00\x00\x40\xff\x34\xff\x00\x00\x00\x00\x00\x00\x00\x00\x44\xff\x00\x00\x00\x00\x39\xff\x4f\xff\x00\x00\x3c\xff\x00\x00\xb5\xfd\xb4\xfd\x00\x00\x00\x00\x00\x00\x37\xff\x00\x00\x00\x00\xdd\xff\xdd\xff\xdd\xff\x00\x00\xdd\xff\xec\xff\xde\xff\x00\x00\x00\x00\x00\x00\xf2\xff\xf4\xff\xbc\xfd\xbd\xfd\x54\xff\x55\xff\x00\x00\x00\x00\x56\xff\x57\xff\x52\xff\x43\xff\x3d\xff\x41\xff\x8e\xfe\x00\x00\x4a\xff\x47\xff\x00\x00\x3f\xff\x49\xff\x00\x00\x48\xff\x32\xff\x30\xff\x00\x00\x00\x00\xb2\xff\xf3\xfd\xf2\xfd\xab\xff\xf7\xfd\xfd\xfd\x00\x00\xf7\xfe\x03\xff\x24\xff\x00\x00\x19\xff\x86\xff\x00\x00\x79\xff\xc6\xfe\xc4\xfe\xd8\xfe\xd4\xfe\xd2\xfe\x00\x00\x00\x00\x00\x00\x16\xfe\x14\xfe\xab\xfe\x13\xfe\xae\xfe\xaf\xfe\x00\x00\x53\xff\x03\xfe\xfe\xfd\x9d\xfe\x00\x00\xa2\xfe\xa3\xfe\x00\x00\x0c\xfe\x00\x00\x00\x00\x0a\xfe\x00\x00\x8b\xfe\x00\x00\x9f\xfe\x00\x00\x46\xfe\x00\x00\xb3\xfe\x00\x00\xd8\xfe\x00\x00\x9c\xfe\x00\x00\x98\xfe\x97\xfe\x96\xfe\x95\xfe\x00\x00\xdd\xff\xa8\xff\x00\x00\x00\x00\x49\xfe\x80\xfe\x73\xff\x78\xff\x77\xff\x00\x00\xbe\xfd\xf3\xfe\x2d\xff\xf7\xfe\x00\x00\x91\xff\x53\xff\x92\xff\x9d\xff\x00\x00\x9e\xff\xbe\xfd\x8e\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\xfe\xd0\xfe\x00\x00\x00\x00\x1c\xfe\x1e\xfe\xbe\xfd\xbe\xfd\x00\x00\xb0\xfe\x00\x00\x00\x00\x59\xff\xf7\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\xff\x6f\xff\x98\xff\x00\x00\x00\x00\x00\x00\x61\xff\x97\xff\x00\x00\x00\x00\x00\x00\x5e\xff\x96\xff\xc9\xfe\xca\xfe\xcb\xfe\xcc\xfe\xcf\xfe\x00\x00\xe6\xff\xbb\xfd\xba\xfd\x00\x00\x4c\xfe\xeb\xff\xdd\xff\xdd\xff\x00\x00\xe0\xff\x00\x00\x49\xfe\x00\x00\xdb\xff\x00\x00\x00\x00\xfa\xfd\x5c\xff\x07\xfe\x00\xfe\x62\xff\x00\x00\xb7\xfe\xb8\xfe\x70\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6a\xff\x00\x00\x80\xff\x7e\xff\x81\xff\x84\xff\xa7\xff\x54\xff\xa6\xff\x00\x00\xbf\xfe\x21\xfe\x18\xfe\x1b\xfe\x1f\xfe\x20\xfe\x1e\xfe\x22\xfe\x00\x00\xc1\xfe\x7b\xff\x87\xff\x7c\xff\x88\xff\xdd\xff\x8c\xff\xd6\xfe\xdd\xff\x10\xfe\xa7\xfe\xdf\xff\xdd\xff\xdd\xff\x00\x00\x9c\xff\xa2\xff\x00\x00\x00\x00\x2a\xff\x28\xff\x9f\xff\xbe\xfd\xbd\xfe\xdd\xff\xdd\xff\x99\xff\x00\x00\x06\xfe\x00\x00\x00\x00\x00\x00\x76\xff\x75\xff\x74\xff\x4a\xfe\x00\x00\x4d\xfe\x00\x00\xe9\xfd\xda\xfd\xe5\xfd\xe1\xfd\xe0\xfd\xdf\xfd\xe4\xfd\xe3\xfd\xe8\xfd\xe6\xfd\xe7\xfd\x7a\xfe\xde\xff\xaa\xff\x00\x00\x31\xfe\x00\x00\x33\xfe\x00\x00\xbe\xfd\x86\xfe\xda\xfe\xbe\xfd\xc2\xfe\x42\xfe\x3e\xfe\x3c\xfe\x3b\xfe\x3a\xfe\x00\x00\x44\xfe\x8c\xfe\x40\xfe\x41\xfe\xf8\xfd\x8a\xfe\x83\xfe\x84\xfe\xa0\xfe\xa1\xfe\x00\x00\x87\xfe\xa9\xfe\x00\x00\xaa\xfe\x00\x00\x00\x00\xd5\xfe\xd3\xfe\xdb\xfe\x00\x00\x00\x00\x1f\xff\x1d\xff\x00\x00\x31\xff\xf6\xfe\xfd\xfe\xfc\xfe\x00\x00\xf9\xfe\xfa\xfe\x03\xff\xbe\xfd\xa4\xff\x00\x00\x03\xff\x24\xff\x00\x00\x00\x00\x00\x00\x3a\xff\x00\x00\x33\xff\x00\x00\x35\xff\xb6\xfd\xf4\xfd\x36\xff\xf3\xff\xef\xff\xee\xff\xf0\xff\x00\x00\x00\x00\xf1\xff\xed\xff\x46\xff\x00\x00\xac\xff\xf6\xfd\xfc\xfd\x03\xff\xa1\xff\x02\xff\xfe\xfe\x00\x00\xdd\xff\xdd\xff\xa3\xff\x00\x00\x00\x00\x00\x00\x0c\xff\x14\xff\x00\x00\x1b\xff\x18\xff\x13\xff\x00\x00\x00\x00\x3e\xff\x00\x00\x00\x00\x00\x00\x19\xff\x85\xff\x7a\xff\x00\x00\x00\x00\x00\x00\x17\xfe\x15\xfe\x89\xfe\x88\xfe\x45\xfe\x39\xfe\x00\x00\x00\x00\x00\x00\xd9\xfe\x30\xfe\x00\x00\x9b\xfe\x94\xfe\xa9\xff\x7e\xfe\x81\xfe\x00\x00\x9a\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\xff\xdd\xff\x2d\xff\x2d\xff\x2c\xff\x00\x00\xe5\xfe\x00\x00\x00\x00\x00\x00\xde\xff\x12\xfe\x00\x00\xde\xff\x8f\xff\x1a\xfe\x1d\xfe\xa5\xff\x00\x00\x83\xff\x69\xff\x00\x00\x00\x00\x66\xff\x64\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\xff\xd7\xff\xf8\xff\x00\x00\xe4\xff\xdd\xff\xcd\xff\xe2\xff\xca\xff\xe5\xff\xc8\xff\x00\x00\xde\xff\xe1\xff\x7e\xfe\xf5\xff\x00\x00\xd7\xff\xd5\xff\xd4\xff\xb8\xfd\xd3\xff\xd8\xff\x00\x00\xea\xff\xe8\xff\xe7\xff\x00\x00\x00\x00\x00\x00\x65\xff\x67\xff\x82\xff\x7f\xff\x8d\xff\x11\xfe\x00\x00\x0f\xfe\xe8\xfe\xe9\xfe\x00\x00\xdd\xff\xe3\xfe\xe0\xfe\xe1\xfe\xe2\xfe\xd6\xfe\x94\xff\x00\x00\x6b\xff\xc0\xfe\x27\xff\x29\xff\xf1\xfe\x00\x00\x00\x00\x2e\xfe\x2f\xfe\xdd\xff\x2b\xfe\x00\x00\x71\xff\x00\x00\x05\xfe\x4b\xfe\x00\x00\x32\xfe\x3f\xfe\x3d\xfe\x00\x00\x00\x00\x00\x00\x43\xfe\xd1\xfe\x34\xfe\x1e\xff\x00\x00\x0b\xff\x4d\xff\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xff\x10\xff\x00\x00\x00\x00\x14\xff\x1c\xff\x00\x00\x00\x00\x00\x00\x1a\xff\xfb\xfe\xf8\xfe\x00\x00\x00\x00\x00\x00\xff\xfe\x00\x00\x01\xff\xa0\xff\x00\x00\x2f\xff\x00\xff\x25\xff\x26\xff\xdd\xff\x21\xff\x00\x00\x00\x00\x00\x00\x12\xff\x00\x00\x00\x00\x0e\xff\x50\xff\x17\xff\x00\x00\x00\x00\x08\xff\x16\xff\x3d\xff\x00\x00\x38\xfe\x36\xfe\x37\xfe\x7b\xfe\x7f\xfe\x7d\xfe\x00\x00\x00\x00\x72\xff\xd8\xfe\x28\xfe\x26\xfe\x00\x00\x00\x00\xde\xff\x2d\xfe\xf4\xfe\xf5\xfe\xee\xfe\xdd\xff\xef\xfe\xed\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\xe6\xfe\xf7\xfe\x00\x00\x6c\xff\x00\x00\xcf\xff\x00\x00\x00\x00\xd8\xff\xd9\xff\x00\x00\xce\xff\xe3\xff\xcb\xff\xc6\xff\xc9\xff\x00\x00\xc7\xff\x00\x00\xd6\xff\xda\xff\x00\x00\xb5\xff\xb4\xff\xb3\xff\xd1\xff\x00\x00\x00\x00\x00\x00\x03\xff\x24\xff\xe4\xfe\xd7\xfe\x00\x00\x00\x00\x00\x00\x51\xff\xf7\xfe\xf7\xfe\xde\xff\xf2\xfe\x2c\xfe\x29\xfe\x00\x00\x27\xfe\x2a\xfe\x85\xfe\x00\x00\x00\x00\x00\x00\x0a\xff\x15\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\x23\xff\x22\xff\x20\xff\x11\xff\x0d\xff\x06\xff\x07\xff\x00\x00\x00\x00\x09\xff\x35\xfe\x82\xfe\x7c\xfe\x00\x00\xf0\xfe\xea\xfe\xec\xfe\x00\x00\xdf\xfe\xde\xfe\x03\xff\xdd\xfe\x63\xff\x00\x00\xd2\xff\xd0\xff\x00\x00\x00\x00\xc4\xff\xc2\xff\x00\x00\xf6\xff\xb6\xff\x00\x00\xdc\xfe\xeb\xfe\x25\xfe\x00\x00\x05\xff\x00\x00\xb6\xfe\xc5\xff\xcc\xff\xc3\xff\x00\x00\xbf\xff\xd7\xff\x04\xff\x00\x00\xd7\xff\xbc\xff\xbb\xff\xb9\xfd\xba\xff\x00\x00\x00\x00\xd8\xff\xc0\xff\xbd\xff\xc1\xff\x00\x00\xb8\xff\x00\x00\xb9\xff\xb7\xff"# + +happyCheck :: HappyAddr +happyCheck = HappyA# "\xff\xff\x00\x00\x09\x00\x02\x00\x02\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x2b\x00\x05\x00\x05\x00\x0f\x00\x2f\x00\x22\x00\x0b\x00\x0c\x00\x67\x00\x2b\x00\x33\x00\x0b\x00\x0c\x00\x2f\x00\x33\x00\x1b\x00\x1c\x00\x2b\x00\x4f\x00\x1d\x00\x1e\x00\x2f\x00\xa1\x00\x2b\x00\x0b\x00\x0c\x00\x11\x00\x2f\x00\x0b\x00\x0c\x00\x0b\x00\x0c\x00\x1c\x00\x0b\x00\x0c\x00\x28\x00\x8b\x00\x22\x00\x0c\x00\xa9\x00\x0b\x00\x0c\x00\x16\x00\xa9\x00\x1c\x00\x08\x00\x1c\x00\x0a\x00\x00\x00\xb9\x00\xa9\x00\x1c\x00\xbc\x00\x1c\x00\xbe\x00\x16\x00\x1c\x00\x0b\x00\x0c\x00\x46\x00\x0f\x00\x48\x00\x28\x00\x56\x00\x1c\x00\xc9\x00\x0b\x00\x0c\x00\xcc\x00\xd0\x00\x32\x00\x33\x00\x09\x00\x2f\x00\x25\x00\x1a\x00\x3e\x00\x3f\x00\xd0\x00\x1f\x00\x4d\x00\x43\x00\xd0\x00\x45\x00\x46\x00\x47\x00\x31\x00\x32\x00\x33\x00\xd0\x00\xc1\x00\x72\x00\x22\x00\x1c\x00\xb3\x00\x2e\x00\x6b\x00\xc8\x00\xc9\x00\x24\x00\x1d\x00\x1e\x00\x22\x00\xc6\x00\xc7\x00\x12\x00\x13\x00\x3a\x00\x28\x00\x1e\x00\xc3\x00\xc4\x00\x38\x00\x39\x00\x22\x00\x39\x00\x38\x00\x39\x00\x1f\x00\x09\x00\x21\x00\x0b\x00\x23\x00\x24\x00\x25\x00\x26\x00\xd2\x00\x72\x00\x13\x00\x2a\x00\x61\x00\x2c\x00\x56\x00\x72\x00\xc3\x00\xc4\x00\x84\x00\x39\x00\x6d\x00\xb4\x00\x1f\x00\x56\x00\x21\x00\xb4\x00\x23\x00\x24\x00\x25\x00\x26\x00\x84\x00\x27\x00\x84\x00\x2a\x00\xd5\x00\x2c\x00\xc3\x00\x84\x00\xb9\x00\x84\x00\xc3\x00\xbc\x00\x84\x00\xbe\x00\xa2\x00\xb5\x00\x30\x00\xd0\x00\xb8\x00\xb3\x00\x84\x00\xb3\x00\xaf\x00\xb7\x00\xc9\x00\xb7\x00\xd0\x00\xcc\x00\xc2\x00\xc3\x00\xc4\x00\xa2\x00\xc6\x00\xc7\x00\xd0\x00\xc3\x00\xc4\x00\xc3\x00\xc4\x00\xc7\x00\xd0\x00\xc7\x00\xb5\x00\x4f\x00\xd0\x00\xb8\x00\xd4\x00\xc7\x00\xc7\x00\xaf\x00\x17\x00\xd3\x00\xd0\x00\xd0\x00\xd0\x00\xc2\x00\xc3\x00\xc4\x00\x77\x00\xc6\x00\xc7\x00\xc3\x00\xc4\x00\x63\x00\xc6\x00\xc7\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xd4\x00\x30\x00\x88\x00\x89\x00\x8a\x00\x3f\x00\xd5\x00\x77\x00\x58\x00\x43\x00\x90\x00\x45\x00\x46\x00\x47\x00\x65\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x6b\x00\xb3\x00\x88\x00\x89\x00\x8a\x00\xb7\x00\x30\x00\xb3\x00\xc3\x00\xc4\x00\x90\x00\xb7\x00\xc3\x00\xc4\x00\x22\x00\xb3\x00\x59\x00\xc3\x00\xc4\x00\xb7\x00\x28\x00\xc7\x00\xb2\x00\xc3\x00\xc4\x00\xb5\x00\xb6\x00\xc7\x00\xb8\x00\x62\x00\x63\x00\xc3\x00\xc4\x00\xd3\x00\x6b\x00\xc7\x00\xbc\x00\x59\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\x17\x00\x6b\x00\xb5\x00\xb6\x00\xc9\x00\xb8\x00\xcf\x00\x0b\x00\x0c\x00\xb5\x00\x6b\x00\x22\x00\x63\x00\x55\x00\x08\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb1\x00\xc2\x00\xc3\x00\xc4\x00\x1f\x00\xb6\x00\x21\x00\xcf\x00\x23\x00\x24\x00\x25\x00\x26\x00\x17\x00\x08\x00\x09\x00\x2a\x00\xb8\x00\x2c\x00\x57\x00\x58\x00\xc5\x00\xc9\x00\x25\x00\xb4\x00\xcc\x00\x59\x00\x1f\x00\x65\x00\x21\x00\x28\x00\xc6\x00\xc7\x00\x25\x00\x26\x00\x31\x00\x32\x00\x33\x00\x2a\x00\xc3\x00\x2c\x00\x27\x00\x24\x00\x25\x00\x6b\x00\xc3\x00\xc4\x00\xb5\x00\xc6\x00\xc7\x00\xc3\x00\xc4\x00\xd2\x00\xc6\x00\xc7\x00\x31\x00\x32\x00\x33\x00\x05\x00\x06\x00\xc2\x00\xc3\x00\xc4\x00\xd5\x00\x16\x00\x3f\x00\x40\x00\x41\x00\xd5\x00\x43\x00\xa7\x00\x45\x00\x46\x00\x47\x00\xb5\x00\x16\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x43\x00\x1c\x00\x45\x00\x46\x00\x47\x00\x6d\x00\x78\x00\xc2\x00\xc3\x00\xc4\x00\xc3\x00\xc4\x00\x36\x00\x77\x00\x44\x00\x45\x00\x46\x00\x47\x00\x22\x00\xc3\x00\xc4\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xd5\x00\x2d\x00\x88\x00\x89\x00\x8a\x00\xc1\x00\xd1\x00\x77\x00\xb8\x00\xd5\x00\x90\x00\xd1\x00\xc8\x00\xc9\x00\x60\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xc6\x00\xc7\x00\x88\x00\x89\x00\x8a\x00\x1f\x00\xb5\x00\x21\x00\x19\x00\xb8\x00\x90\x00\x25\x00\x26\x00\x05\x00\x06\x00\xc7\x00\x2a\x00\x22\x00\x2c\x00\xc2\x00\xc3\x00\xc4\x00\xb2\x00\xc6\x00\xc7\x00\xb5\x00\xb6\x00\x3f\x00\xb8\x00\x41\x00\x16\x00\x43\x00\xd2\x00\x45\x00\x46\x00\x47\x00\x05\x00\x06\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\x17\x00\x17\x00\xb5\x00\xb6\x00\x19\x00\xb8\x00\xcf\x00\x22\x00\x16\x00\xb6\x00\x17\x00\x22\x00\x22\x00\x22\x00\x29\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x22\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x17\x00\xcf\x00\x91\x00\x90\x00\x17\x00\x92\x00\xc3\x00\xc4\x00\x22\x00\xc6\x00\xc7\x00\x22\x00\x26\x00\xd5\x00\x1f\x00\x22\x00\x21\x00\x2b\x00\x0f\x00\xc3\x00\xc4\x00\x77\x00\xc6\x00\xc7\x00\xd5\x00\x2a\x00\x8b\x00\x2c\x00\x8d\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x19\x00\xd5\x00\x88\x00\x89\x00\x8a\x00\x1f\x00\xae\x00\x21\x00\xb5\x00\x22\x00\x90\x00\x2d\x00\x2e\x00\xb5\x00\x01\x00\x29\x00\x2a\x00\x26\x00\x2c\x00\x06\x00\x07\x00\xc2\x00\xc3\x00\xc4\x00\x2d\x00\x19\x00\xc2\x00\xc3\x00\xc4\x00\x3f\x00\x19\x00\x41\x00\x14\x00\x43\x00\x22\x00\x45\x00\x46\x00\x47\x00\xb6\x00\x22\x00\x4a\x00\x4b\x00\x50\x00\x51\x00\xb2\x00\x53\x00\x54\x00\xb5\x00\xb6\x00\x15\x00\xb8\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xd1\x00\x6e\x00\x6f\x00\x70\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x77\x00\x0b\x00\x0c\x00\xd5\x00\xc2\x00\xc3\x00\xc4\x00\xcf\x00\xc6\x00\xc7\x00\x81\x00\x2b\x00\x83\x00\x2d\x00\x85\x00\x46\x00\x47\x00\x88\x00\x89\x00\x8a\x00\x1f\x00\xc1\x00\x21\x00\xd1\x00\x8b\x00\x90\x00\x8d\x00\x77\x00\xc8\x00\xc9\x00\xca\x00\x2a\x00\xcc\x00\x2c\x00\xce\x00\x91\x00\x09\x00\x81\x00\x0b\x00\x83\x00\xcc\x00\x85\x00\x3c\x00\x3d\x00\x88\x00\x89\x00\x8a\x00\x1f\x00\xd0\x00\x21\x00\x17\x00\x79\x00\x90\x00\x4e\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x2a\x00\xb2\x00\x2c\x00\x22\x00\xb5\x00\xb6\x00\x65\x00\xb8\x00\x27\x00\x65\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x2d\x00\x0b\x00\x0c\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x65\x00\xb6\x00\x1e\x00\xb0\x00\xb1\x00\xb2\x00\x22\x00\xcf\x00\xb5\x00\xb6\x00\x8b\x00\xb8\x00\x8d\x00\x55\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x6f\x00\x70\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x77\x00\xcc\x00\x50\x00\x51\x00\xd0\x00\xd5\x00\x54\x00\xcf\x00\xba\x00\x01\x00\x81\x00\xbd\x00\x83\x00\xbf\x00\x85\x00\xc1\x00\x1e\x00\x88\x00\x89\x00\x8a\x00\x22\x00\xd1\x00\xc8\x00\xc9\x00\xca\x00\x90\x00\xcc\x00\x77\x00\xce\x00\x0b\x00\x0c\x00\x26\x00\xc3\x00\xc4\x00\xb5\x00\xc6\x00\xc7\x00\x81\x00\xca\x00\x83\x00\xcc\x00\x85\x00\xce\x00\x96\x00\x88\x00\x89\x00\x8a\x00\xc2\x00\xc3\x00\xc4\x00\xd5\x00\x08\x00\x90\x00\xb3\x00\x27\x00\x26\x00\x29\x00\xb7\x00\x35\x00\xb2\x00\xc3\x00\xc4\x00\xb5\x00\xb6\x00\xc7\x00\xb8\x00\x27\x00\xb3\x00\x29\x00\xc3\x00\xc4\x00\xb7\x00\x27\x00\xc7\x00\x29\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb3\x00\x6b\x00\xc3\x00\xc4\x00\xb7\x00\xb2\x00\xc7\x00\xcf\x00\xb5\x00\xb6\x00\x37\x00\xb8\x00\x45\x00\x46\x00\x47\x00\x48\x00\xc3\x00\xc4\x00\xd1\x00\x4c\x00\xc7\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\xc3\x00\xc4\x00\xcf\x00\x45\x00\x46\x00\x47\x00\x48\x00\x0b\x00\x0c\x00\x81\x00\x4c\x00\x83\x00\x27\x00\x85\x00\x29\x00\xab\x00\x88\x00\x89\x00\x8a\x00\xd1\x00\x74\x00\x75\x00\x76\x00\x77\x00\x90\x00\x2d\x00\x2e\x00\xd1\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x27\x00\x81\x00\x29\x00\x83\x00\x27\x00\x85\x00\x29\x00\xd0\x00\x88\x00\x89\x00\x8a\x00\x3f\x00\x27\x00\x41\x00\x29\x00\x43\x00\x90\x00\x45\x00\x46\x00\x47\x00\x08\x00\x09\x00\x4a\x00\x4b\x00\x24\x00\x25\x00\xb2\x00\x27\x00\x28\x00\xb5\x00\xb6\x00\x6b\x00\xb8\x00\x80\x00\x81\x00\x82\x00\x83\x00\x31\x00\x32\x00\x33\x00\x0b\x00\x0c\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x6c\x00\x25\x00\xb2\x00\x50\x00\x51\x00\xb5\x00\xb6\x00\xcf\x00\xb8\x00\x78\x00\x2d\x00\x2e\x00\x32\x00\x31\x00\x32\x00\x33\x00\x69\x00\x6a\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x45\x00\x46\x00\x47\x00\x27\x00\x3f\x00\x29\x00\x41\x00\xcf\x00\x43\x00\x55\x00\x45\x00\x46\x00\x47\x00\x3f\x00\xd1\x00\x4a\x00\x4b\x00\x43\x00\x7c\x00\x45\x00\x46\x00\x47\x00\x3e\x00\x3f\x00\x78\x00\x41\x00\x27\x00\x43\x00\x29\x00\x45\x00\x46\x00\x47\x00\x3e\x00\x3f\x00\x18\x00\x19\x00\x1a\x00\x43\x00\x65\x00\x45\x00\x46\x00\x47\x00\x3e\x00\x3f\x00\x93\x00\x94\x00\x95\x00\x43\x00\xd1\x00\x45\x00\x46\x00\x47\x00\x3e\x00\x3f\x00\xb5\x00\xad\x00\xae\x00\x43\x00\xb6\x00\x45\x00\x46\x00\x47\x00\x29\x00\xb5\x00\x2b\x00\x8b\x00\xb5\x00\xc2\x00\xc3\x00\xc4\x00\x96\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc2\x00\xc3\x00\xc4\x00\xc2\x00\xc3\x00\xc4\x00\x93\x00\x94\x00\x95\x00\x27\x00\x3f\x00\x29\x00\x41\x00\xd5\x00\x43\x00\x31\x00\x45\x00\x46\x00\x47\x00\x5b\x00\x5c\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x31\x00\x42\x00\x43\x00\x52\x00\x45\x00\x46\x00\x47\x00\x3f\x00\x27\x00\x41\x00\x29\x00\x43\x00\x71\x00\x45\x00\x46\x00\x47\x00\x69\x00\x6a\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\xb6\x00\x0b\x00\x0c\x00\xc3\x00\xc4\x00\x36\x00\xc6\x00\xc7\x00\xd2\x00\x29\x00\x61\x00\x2b\x00\x36\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x2b\x00\xb6\x00\x2d\x00\xd5\x00\xc3\x00\xc4\x00\x36\x00\xc6\x00\xc7\x00\xa5\x00\xa6\x00\xa7\x00\xd0\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x0b\x00\x0c\x00\x8b\x00\xd5\x00\x8b\x00\xc3\x00\xc4\x00\x20\x00\xc6\x00\xc7\x00\x68\x00\x69\x00\x6a\x00\xd5\x00\x4e\x00\xc3\x00\xc4\x00\x01\x00\xc6\x00\xc7\x00\x0a\x00\x0b\x00\x0c\x00\xd5\x00\x8b\x00\xc3\x00\xc4\x00\x17\x00\xc6\x00\xc7\x00\x3f\x00\x94\x00\x95\x00\xd5\x00\x43\x00\x17\x00\x45\x00\x46\x00\x47\x00\x29\x00\x3f\x00\x2b\x00\x41\x00\xd5\x00\x43\x00\xb6\x00\x45\x00\x46\x00\x47\x00\x16\x00\x49\x00\x4a\x00\x4b\x00\x0a\x00\x0b\x00\x0c\x00\xc1\x00\x22\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\x0d\x00\x0e\x00\xb6\x00\x5a\x00\x5b\x00\x5c\x00\xc3\x00\xc4\x00\x17\x00\xc6\x00\xc7\x00\xd5\x00\x64\x00\xc1\x00\x16\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\x32\x00\x3f\x00\xd5\x00\x41\x00\x55\x00\x43\x00\x49\x00\x45\x00\x46\x00\x47\x00\x84\x00\xd5\x00\x4a\x00\x4b\x00\x84\x00\x4d\x00\x68\x00\x69\x00\x6a\x00\x5b\x00\x3f\x00\x1c\x00\x41\x00\x28\x00\x43\x00\x49\x00\x45\x00\x46\x00\x47\x00\x0b\x00\x0c\x00\x4a\x00\x4b\x00\x1c\x00\x4d\x00\x68\x00\x69\x00\x6a\x00\x29\x00\x3f\x00\x66\x00\x41\x00\x29\x00\x43\x00\x5b\x00\x45\x00\x46\x00\x47\x00\x84\x00\x49\x00\x4a\x00\x4b\x00\xc2\x00\xc3\x00\xc4\x00\x17\x00\xc6\x00\xc7\x00\x3f\x00\x73\x00\x41\x00\x0c\x00\x43\x00\x17\x00\x45\x00\x46\x00\x47\x00\x0f\x00\x49\x00\x4a\x00\x4b\x00\x17\x00\xb6\x00\x03\x00\x04\x00\xc3\x00\xc4\x00\x27\x00\xc6\x00\xc7\x00\x7a\x00\x7b\x00\x7c\x00\x0b\x00\x0c\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x7a\x00\x7b\x00\x7c\x00\xd5\x00\x0b\x00\x0c\x00\x8b\x00\x1c\x00\x3f\x00\x29\x00\x41\x00\x1c\x00\x43\x00\xd5\x00\x45\x00\x46\x00\x47\x00\x2b\x00\x49\x00\x4a\x00\x4b\x00\x93\x00\x94\x00\x95\x00\x93\x00\x94\x00\x95\x00\x3f\x00\x73\x00\x41\x00\xb6\x00\x43\x00\x72\x00\x45\x00\x46\x00\x47\x00\x1d\x00\x49\x00\x4a\x00\x4b\x00\x50\x00\x51\x00\x52\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x32\x00\x43\x00\x32\x00\x45\x00\x46\x00\x47\x00\x28\x00\x49\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x17\x00\x43\x00\x17\x00\x45\x00\x46\x00\x47\x00\x1e\x00\x49\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x22\x00\x43\x00\x05\x00\x45\x00\x46\x00\x47\x00\x84\x00\x49\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\x17\x00\x41\x00\x84\x00\x43\x00\x32\x00\x45\x00\x46\x00\x47\x00\x22\x00\x49\x00\x4a\x00\x4b\x00\xd5\x00\x0b\x00\x0c\x00\x0b\x00\x0c\x00\x1e\x00\x3f\x00\x29\x00\x41\x00\xb6\x00\x43\x00\x20\x00\x45\x00\x46\x00\x47\x00\x0c\x00\x49\x00\x4a\x00\x4b\x00\x06\x00\x07\x00\x28\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x22\x00\x43\x00\x16\x00\x45\x00\x46\x00\x47\x00\x84\x00\x49\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\x17\x00\x41\x00\xb6\x00\x43\x00\x74\x00\x45\x00\x46\x00\x47\x00\x1c\x00\x49\x00\x4a\x00\x4b\x00\xd5\x00\x34\x00\x35\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x78\x00\x43\x00\x73\x00\x45\x00\x46\x00\x47\x00\x84\x00\x49\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x31\x00\x43\x00\x84\x00\x45\x00\x46\x00\x47\x00\x29\x00\x49\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x25\x00\x43\x00\x84\x00\x45\x00\x46\x00\x47\x00\x1c\x00\x49\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x1e\x00\x43\x00\x1e\x00\x45\x00\x46\x00\x47\x00\x03\x00\x04\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\x28\x00\x41\x00\xb6\x00\x43\x00\x17\x00\x45\x00\x46\x00\x47\x00\x05\x00\x06\x00\x4a\x00\x4b\x00\xd5\x00\x28\x00\x29\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x64\x00\x43\x00\x56\x00\x45\x00\x46\x00\x47\x00\x05\x00\x06\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\x5f\x00\x41\x00\xb6\x00\x43\x00\x84\x00\x45\x00\x46\x00\x47\x00\x49\x00\x4a\x00\x4a\x00\x4b\x00\xd5\x00\x03\x00\x04\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x1d\x00\x43\x00\x1d\x00\x45\x00\x46\x00\x47\x00\x49\x00\x4a\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x17\x00\x43\x00\x5b\x00\x45\x00\x46\x00\x47\x00\x7d\x00\x7e\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x05\x00\x43\x00\x22\x00\x45\x00\x46\x00\x47\x00\x28\x00\x29\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x17\x00\x43\x00\x28\x00\x45\x00\x46\x00\x47\x00\x53\x00\x54\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\x24\x00\x41\x00\xb6\x00\x43\x00\x24\x00\x45\x00\x46\x00\x47\x00\x05\x00\x06\x00\x4a\x00\x4b\x00\xd5\x00\x1d\x00\x5b\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x73\x00\x43\x00\x5b\x00\x45\x00\x46\x00\x47\x00\x2b\x00\x2d\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\x22\x00\x41\x00\xb6\x00\x43\x00\x2b\x00\x45\x00\x46\x00\x47\x00\x2b\x00\x1d\x00\x4a\x00\x4b\x00\xd5\x00\x2c\x00\x41\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x3f\x00\xb6\x00\x41\x00\x1c\x00\x43\x00\x29\x00\x45\x00\x46\x00\x47\x00\x28\x00\x1d\x00\x4a\x00\x4b\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x22\x00\xb6\x00\x3f\x00\x40\x00\x41\x00\x2d\x00\x43\x00\x5d\x00\x45\x00\x46\x00\x47\x00\x29\x00\x64\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x22\x00\xb6\x00\x3f\x00\x84\x00\x41\x00\x21\x00\x43\x00\x0f\x00\x45\x00\x46\x00\x47\x00\x0c\x00\x0f\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x46\x00\xb6\x00\x3f\x00\x16\x00\x1e\x00\x24\x00\x43\x00\x17\x00\x45\x00\x46\x00\x47\x00\x4b\x00\x17\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x0f\x00\x5f\x00\x27\x00\xb6\x00\x28\x00\x45\x00\x46\x00\x47\x00\x48\x00\x0c\x00\x21\x00\x84\x00\x84\x00\xd5\x00\x28\x00\x1d\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x29\x00\xb6\x00\x42\x00\x43\x00\x1d\x00\x45\x00\x46\x00\x47\x00\x1c\x00\x1e\x00\x2c\x00\x4b\x00\x2c\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x1e\x00\x1e\x00\x1d\x00\xb6\x00\x42\x00\x43\x00\x22\x00\x45\x00\x46\x00\x47\x00\x5d\x00\x5e\x00\x5f\x00\xd5\x00\x61\x00\x17\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x28\x00\x73\x00\x1d\x00\xb6\x00\x43\x00\x17\x00\x45\x00\x46\x00\x47\x00\x29\x00\x5d\x00\x5e\x00\x5f\x00\xd5\x00\x61\x00\x24\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x73\x00\xb6\x00\x43\x00\x1b\x00\x45\x00\x46\x00\x47\x00\x2b\x00\x44\x00\x45\x00\x46\x00\x47\x00\x73\x00\xd5\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x44\x00\x45\x00\x46\x00\x47\x00\x73\x00\x44\x00\x45\x00\x46\x00\x47\x00\x5f\x00\x5b\x00\x22\x00\x24\x00\xd5\x00\xc3\x00\xc4\x00\x24\x00\xc6\x00\xc7\x00\x3b\x00\x3c\x00\x3d\x00\x01\x00\x02\x00\xbd\x00\x22\x00\x05\x00\x06\x00\xc1\x00\x05\x00\xc3\x00\xc4\x00\xd5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\x1c\x00\x22\x00\x17\x00\xb8\x00\x44\x00\x45\x00\x46\x00\x47\x00\x17\x00\x17\x00\x21\x00\xd5\x00\xd6\x00\xd7\x00\xc3\x00\xc4\x00\x17\x00\xc6\x00\xc7\x00\x17\x00\x44\x00\x45\x00\x46\x00\x47\x00\xb8\x00\x44\x00\x45\x00\x46\x00\x47\x00\x17\x00\x17\x00\x17\x00\xd5\x00\x17\x00\x17\x00\xc3\x00\xc4\x00\x17\x00\xc6\x00\xc7\x00\x2d\x00\x44\x00\x45\x00\x46\x00\x47\x00\x21\x00\x44\x00\x45\x00\x46\x00\x47\x00\x22\x00\x17\x00\x2b\x00\xd5\x00\x41\x00\xc3\x00\xc4\x00\x41\x00\xc6\x00\xc7\x00\x21\x00\x27\x00\x41\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x6d\x00\x70\x00\x2b\x00\xd5\x00\xc3\x00\xc4\x00\x4b\x00\xc6\x00\xc7\x00\xc3\x00\xc4\x00\x61\x00\xc6\x00\xc7\x00\x73\x00\x2d\x00\x29\x00\x28\x00\x64\x00\x20\x00\xc3\x00\xc4\x00\xd5\x00\xc6\x00\xc7\x00\xc3\x00\xc4\x00\xd5\x00\xc6\x00\xc7\x00\x74\x00\x0c\x00\xb3\x00\x84\x00\x22\x00\x0f\x00\xb7\x00\x84\x00\xd5\x00\x6b\x00\x1d\x00\x0f\x00\x0f\x00\xd5\x00\x85\x00\x0f\x00\x01\x00\x02\x00\xc3\x00\xc4\x00\x05\x00\x06\x00\xc7\x00\x0f\x00\x20\x00\x68\x00\x16\x00\x1d\x00\x1d\x00\x5e\x00\x1d\x00\xc3\x00\xc4\x00\x85\x00\xc6\x00\xc7\x00\x01\x00\x16\x00\x03\x00\x04\x00\x05\x00\x06\x00\x1d\x00\x0c\x00\x00\x00\x28\x00\x85\x00\xc3\x00\xc4\x00\xd5\x00\xc6\x00\xc7\x00\xc3\x00\xc4\x00\x46\x00\xc6\x00\xc7\x00\x16\x00\x01\x00\x18\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xd5\x00\x09\x00\x20\x00\xc3\x00\xc4\x00\xd5\x00\xc6\x00\xc7\x00\xc3\x00\xc4\x00\xff\xff\xc6\x00\xc7\x00\xff\xff\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x32\x00\xd5\x00\xff\xff\xff\xff\x20\x00\xff\xff\xd5\x00\xff\xff\x24\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\x5f\x00\x74\x00\x61\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x01\x00\x18\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\x74\x00\x09\x00\x20\x00\x61\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\x7f\x00\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\xff\xff\x01\x00\xff\xff\x32\x00\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\xff\xff\x0f\x00\x7f\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\x01\x00\xff\xff\xff\xff\x61\x00\x05\x00\x06\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x79\x00\x16\x00\x74\x00\x18\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x4f\x00\x7f\x00\xff\xff\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x32\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7f\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\x74\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xba\x00\xff\xff\xff\xff\xbd\x00\x61\x00\xbf\x00\xff\xff\xc1\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xc8\x00\xc9\x00\xca\x00\xff\xff\xcc\x00\xff\xff\xce\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x7f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\xff\xff\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xba\x00\x18\x00\xff\xff\xbd\x00\xff\xff\xbf\x00\xff\xff\xc1\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xc8\x00\xc9\x00\xca\x00\xff\xff\xcc\x00\x2a\x00\xce\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\xff\xff\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xba\x00\x18\x00\xff\xff\xbd\x00\xff\xff\xbf\x00\xff\xff\xc1\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xc8\x00\xc9\x00\xca\x00\xff\xff\xcc\x00\x2a\x00\xce\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\x6e\x00\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\xff\xff\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\x16\x00\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x4f\x00\xff\xff\x2a\x00\xff\xff\x53\x00\x54\x00\x55\x00\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\x61\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x57\x00\x03\x00\x04\x00\x05\x00\x06\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\x16\x00\xff\xff\x18\x00\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\x61\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x16\x00\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\x25\x00\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\x74\x00\xff\xff\xff\xff\x01\x00\x02\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x16\x00\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\x26\x00\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x01\x00\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\x16\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\x25\x00\x6a\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x61\x00\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\x16\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\x26\x00\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\x16\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\x01\x00\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x01\x00\x42\x00\x43\x00\x44\x00\x05\x00\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x2d\x00\xff\xff\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\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\x74\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x90\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xb2\x00\x48\x00\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xcf\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\x74\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x90\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xb2\x00\x48\x00\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xcf\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\x74\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x87\x00\x88\x00\x89\x00\x8a\x00\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x90\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\xff\xff\x07\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xb2\x00\x48\x00\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xcf\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\x01\x00\xff\xff\xff\xff\x74\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x61\x00\xff\xff\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x74\x00\x20\x00\x05\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\x22\x00\xff\xff\x24\x00\x25\x00\x2d\x00\x27\x00\x28\x00\xff\xff\xff\xff\x16\x00\x17\x00\xff\xff\xff\xff\xff\xff\x01\x00\x31\x00\x32\x00\x33\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\xff\xff\x0b\x00\x26\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x20\x00\x61\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x2d\x00\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\xff\xff\x74\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x61\x00\x08\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x01\x00\x74\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x16\x00\x2f\x00\x18\x00\x19\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x17\x00\x18\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x01\x00\x02\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x30\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x5e\x00\xff\xff\xff\xff\x61\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x74\x00\x05\x00\x06\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x20\x00\x61\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x30\x00\xff\xff\xff\xff\x16\x00\x74\x00\x18\x00\x01\x00\x02\x00\xff\xff\x61\x00\x05\x00\x06\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x16\x00\x74\x00\xff\xff\x05\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x16\x00\xff\xff\x61\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x74\x00\x18\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x74\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x01\x00\xff\xff\xff\xff\x74\x00\x05\x00\xff\xff\xff\xff\x20\x00\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x6b\x00\xff\xff\xff\xff\x16\x00\x17\x00\x01\x00\x02\x00\xff\xff\xff\xff\x74\x00\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\x74\x00\x61\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x01\x00\x16\x00\xff\xff\x61\x00\x05\x00\xff\xff\xff\xff\x01\x00\x02\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x16\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x74\x00\xff\xff\xff\xff\x05\x00\x61\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x16\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x01\x00\x16\x00\xff\xff\xff\xff\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x16\x00\xff\xff\x74\x00\x61\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x61\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\x74\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\x74\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x31\x00\x32\x00\x33\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x74\x00\x61\x00\xff\xff\xff\xff\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x61\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\x74\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x90\x00\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\xff\xff\x9b\x00\x9c\x00\x9d\x00\x9e\x00\xff\xff\xa0\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xa8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\x22\x00\xff\xff\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\x9c\x00\x9d\x00\x9e\x00\xff\xff\xa0\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\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\x9d\x00\x9e\x00\xff\xff\xa0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\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\x9f\x00\xa0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\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\xa8\x00\xff\xff\xaa\x00\xff\xff\xac\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\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\xa8\x00\xff\xff\xaa\x00\xff\xff\xac\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\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\x9f\x00\xa0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\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\x9f\x00\xa0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\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\xa8\x00\xff\xff\xaa\x00\xff\xff\xac\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\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\xa8\x00\xff\xff\xaa\x00\xff\xff\xac\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\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\xa0\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xff\xff\xff\xff\x8f\x00\x90\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\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\x8c\x00\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\x99\x00\x9a\x00\xbb\x00\xff\xff\xbd\x00\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xbb\x00\xff\xff\xbd\x00\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xff\xff\xcb\x00\xff\xff\xcd\x00\xce\x00\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\x8c\x00\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\x8c\x00\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xbb\x00\xff\xff\xbd\x00\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xff\xff\xcb\x00\xff\xff\xcd\x00\xce\x00\xcf\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xbb\x00\xff\xff\xbd\x00\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xff\xff\xcb\x00\xff\xff\xcd\x00\xce\x00\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\x8c\x00\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\x8c\x00\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xbb\x00\xff\xff\xbd\x00\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xff\xff\xcb\x00\xff\xff\xcd\x00\xce\x00\xcf\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xbb\x00\xff\xff\xbd\x00\xff\xff\xff\xff\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xff\xff\xcb\x00\xff\xff\xcd\x00\xce\x00\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xa3\x00\xa4\x00\xff\xff\x90\x00\xff\xff\xa8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xa4\x00\xff\xff\xff\xff\xff\xff\xa8\x00\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\x8e\x00\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\x8e\x00\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa8\x00\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xcf\x00\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xcf\x00\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\x83\x00\xff\xff\x85\x00\xff\xff\xcf\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\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\x87\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xcf\x00\x90\x00\xff\xff\xff\xff\x93\x00\x94\x00\x95\x00\xff\xff\x97\x00\x98\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\x93\x00\x94\x00\x95\x00\xff\xff\x97\x00\x98\x00\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xb2\x00\xff\xff\xcf\x00\xb5\x00\xb6\x00\x90\x00\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xcf\x00\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xcf\x00\xb5\x00\xb6\x00\xff\xff\xb8\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xb2\x00\xff\xff\xcf\x00\xb5\x00\xb6\x00\x90\x00\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xcf\x00\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xcf\x00\xb5\x00\xb6\x00\xff\xff\xb8\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xb2\x00\xff\xff\xff\xff\xb5\x00\xb6\x00\xff\xff\xb8\x00\xcf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb2\x00\xff\xff\xcf\x00\xb5\x00\xb6\x00\xff\xff\xb8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcf\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"# + +happyTable :: HappyAddr +happyTable = HappyA# "\x00\x00\x86\x00\x0c\x02\x87\x00\x07\x00\x09\x00\x1f\x03\x20\x03\x21\x03\xc7\x00\xb4\x02\x65\x01\x11\x04\xe0\x02\x86\x01\x67\x01\xd8\x01\xbc\x02\xc7\x00\xe9\x02\x67\x01\xed\x02\xe1\x02\x51\x02\x12\x04\x13\x04\xc7\x00\x82\x01\x1d\x04\xbd\x03\x31\x02\x4e\x02\xc7\x00\x67\x01\xf6\x02\xba\x03\xc8\x00\x67\x01\xed\x02\x67\x01\xf6\x02\x43\x02\x67\x01\xd8\x01\xd9\x01\x4f\x01\xbb\x01\xf2\x01\x30\x02\x67\x01\x44\x03\x9a\x02\xc4\x00\x43\x02\x99\x00\x43\x02\x9b\x00\x6e\x01\x87\x01\xcd\x00\x43\x02\x88\x01\xf6\x01\xb7\x02\xbe\xff\xfb\x01\x67\x01\x6e\x03\x8c\x00\x18\x04\x8d\x00\xdb\x01\x55\x03\xfb\x01\x8a\x01\x67\x01\x6e\x03\x8b\x01\x4f\x02\x9b\x02\x9c\x02\x9a\x00\xf3\x01\x9e\x00\x39\x01\x93\x03\xea\x01\xc5\x00\x6f\x01\xee\x03\xbe\x00\xc5\x00\x0d\x00\x0e\x00\x0f\x00\xa1\x00\xa2\x00\xa3\x00\xc5\x00\x50\x01\x56\x03\xd6\x02\x1b\x04\xd3\x02\x3a\x01\x8e\x00\x93\x00\x94\x00\x62\x03\xbc\x03\xbd\x03\x91\x02\xbd\x02\x18\x00\x14\x03\x15\x03\x3b\x01\xdd\x03\x01\x04\x14\x00\xad\x00\x2d\x03\x07\x03\xbb\x01\xe4\x02\x06\x03\x07\x03\x2c\x00\x9a\x00\x2d\x00\x9c\x00\x16\x03\xc2\x01\xc3\x01\x2f\x00\x0a\x04\xf7\x02\xb2\x03\x30\x00\x0f\x04\x31\x00\x6f\x03\xf8\x02\x14\x00\x15\x00\xb4\x02\xbc\x01\x45\x03\x52\x02\x2c\x00\x70\x03\x2d\x00\x52\x02\xb3\x03\xc2\x01\xc3\x01\x2f\x00\xaf\x02\x9f\x00\xb0\x02\x30\x00\x83\x01\x31\x00\x53\x02\xb1\x02\x87\x01\xf7\x01\x53\x02\x88\x01\xfc\x01\x89\x01\xee\x02\x22\x03\x93\x01\xc9\x00\x23\x03\x14\x04\x01\x02\xbe\x03\xda\x01\x15\x04\x8a\x01\xbf\x03\xc9\x00\x8b\x01\x42\x00\x14\x00\x43\x00\xef\x02\x44\x00\x18\x00\xc9\x00\x14\x00\xad\x00\x14\x00\xad\x00\xae\x00\xc9\x00\xae\x00\x22\x03\xd4\x00\x0d\x02\x23\x03\x24\x03\x66\x01\x66\x01\xdc\x01\xfe\x03\x16\x04\x08\x00\x08\x00\x08\x00\x42\x00\x14\x00\x43\x00\x32\x00\x44\x00\x18\x00\x14\x00\x15\x00\xd5\x00\x17\x00\x18\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x24\x03\x85\x03\x3a\x00\x3b\x00\x3c\x00\x73\x01\x19\x00\x32\x00\xe2\x03\xbe\x00\x3d\x00\x0d\x00\x0e\x00\x0f\x00\x03\x04\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xf0\x03\x14\x04\x3a\x00\x3b\x00\x3c\x00\x15\x04\x85\x03\xbe\x03\x14\x00\x08\x03\x3d\x00\xbf\x03\x14\x00\x08\x03\x91\x02\xbe\x03\xc4\x03\x14\x00\xad\x00\xbf\x03\x92\x02\xae\x00\x3e\x00\x14\x00\xad\x00\x3f\x00\x40\x00\xae\x00\x41\x00\x86\x03\x87\x03\x14\x00\xad\x00\x16\x04\xc5\x03\xae\x00\x60\x03\xa0\x02\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x22\x04\xf1\x03\x3f\x00\x40\x00\x8a\x01\x41\x00\x45\x00\x67\x01\x44\x03\x94\x01\xa1\x02\xfc\x03\xea\x03\xf5\x03\x99\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x32\x03\x42\x00\x14\x00\x43\x00\x2c\x00\x33\x03\x2d\x00\x45\x00\xc1\x01\xc2\x01\xc3\x01\x2f\x00\x7d\x01\x99\x00\x9a\x00\x30\x00\x7c\x03\x31\x00\x7a\x03\x7b\x03\x16\x00\xfc\x01\x9e\x00\xeb\x02\xfd\x01\x8e\x01\x2c\x00\xf6\x03\x2d\x00\x7e\x01\x44\x00\x18\x00\xe5\x02\x2f\x00\xa1\x00\xa2\x00\xa3\x00\x30\x00\x53\x02\x31\x00\xd0\x01\x8d\x01\x9e\x00\x8f\x01\x14\x00\x15\x00\x94\x01\x71\x01\x18\x00\x14\x00\x15\x00\xfd\x03\x17\x00\x18\x00\xa1\x00\xa2\x00\xa3\x00\x1e\x00\x1f\x00\x42\x00\x14\x00\x43\x00\x72\x01\xb7\x03\x0a\x00\xd1\x01\xd2\x01\x19\x00\x0c\x00\xd3\x03\x0d\x00\x0e\x00\x0f\x00\x94\x01\x7e\x03\x48\x01\x12\x00\xd3\x01\x4e\x01\x80\x03\x43\x02\x0d\x00\x0e\x00\x0f\x00\x46\x03\xd4\x03\x42\x00\x14\x00\x43\x00\x14\x00\x15\x00\xa3\x03\x32\x00\x62\x03\x5d\x03\x0e\x00\x0f\x00\xd6\x02\x14\x00\x15\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xf4\x02\xef\x03\x3a\x00\x3b\x00\x3c\x00\xc4\x01\x78\x03\x32\x00\x7c\x03\xa6\x02\x3d\x00\x9b\x03\x93\x00\x94\x00\x63\x03\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x44\x00\x18\x00\x3a\x00\x3b\x00\x3c\x00\x2c\x00\x08\x01\x2d\x00\x7f\x01\x09\x01\x3d\x00\x2e\x00\x2f\x00\x1e\x00\x1f\x00\xa3\x02\x30\x00\x7a\x01\x31\x00\x42\x00\x14\x00\x43\x00\x3e\x00\x44\x00\x18\x00\x3f\x00\x40\x00\x0a\x00\x41\x00\xeb\x01\x7e\x03\xbe\x00\xac\x03\x0d\x00\x0e\x00\x0f\x00\x1e\x00\x1f\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\xfb\x03\xdb\x02\x3f\x00\x40\x00\x80\x01\x41\x00\x45\x00\xd6\x02\xbf\x02\x13\x00\x86\x02\xfc\x03\x2b\x01\x81\x01\xd7\x02\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x2b\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x79\x01\x45\x00\xb1\x03\x8e\x03\xab\x01\x8f\x03\x14\x00\x15\x00\xb5\x01\x17\x00\x18\x00\x7a\x01\xb6\x01\x19\x00\x2c\x00\x2b\x01\x2d\x00\xb7\x01\xae\x03\x14\x00\x15\x00\x32\x00\x17\x00\x18\x00\x19\x00\x9d\x03\xa8\x01\x31\x00\xd9\x02\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xb0\x01\x19\x00\x3a\x00\x3b\x00\x3c\x00\x2c\x00\xd7\x02\x2d\x00\xc9\x03\x7a\x01\x3d\x00\x30\x03\x26\x02\x9e\x01\x88\x00\x3c\x02\x3d\x02\xdc\x02\x31\x00\x89\x00\x8a\x00\x42\x00\x14\x00\x43\x00\xaf\x01\x4c\x01\x42\x00\x14\x00\x43\x00\x0a\x00\x2a\x01\x0b\x00\x19\x03\x0c\x00\x2b\x01\x0d\x00\x0e\x00\x0f\x00\x13\x00\x2b\x01\x27\x02\x12\x00\x48\x02\x49\x02\x3e\x00\x4a\x02\x4b\x02\x3f\x00\x40\x00\xb5\x03\x41\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x35\x03\x9e\x03\x9f\x03\xa0\x03\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x32\x00\xce\x03\xcf\x03\x19\x00\xb0\x01\x14\x00\x43\x00\x45\x00\x71\x01\x18\x00\x3e\x02\x98\x03\x37\x00\x99\x03\x39\x00\x03\x01\x0f\x00\x3a\x00\x3b\x00\x3c\x00\x2c\x00\xc4\x01\x2d\x00\x47\x03\xa8\x01\x3d\x00\x84\x02\x32\x00\x93\x00\x94\x00\x30\x01\x9d\x03\x96\x00\x31\x00\x97\x00\x50\x03\x9a\x00\x3e\x02\x9c\x00\x37\x00\xfd\x01\x39\x00\x18\x02\xaa\x00\x3a\x00\x3b\x00\x3c\x00\x2c\x00\xbf\x02\x2d\x00\x52\x01\x3d\x01\x3d\x00\xc4\x02\xa7\x00\xa8\x00\xa9\x00\xaa\x00\x31\x03\x3e\x00\x31\x00\x2b\x01\x3f\x00\x40\x00\x74\x03\x41\x00\x9f\x00\xbb\x02\xb0\x00\xa8\x00\xa9\x00\xaa\x00\x53\x01\xe0\x03\xe1\x03\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\xc1\x02\x13\x00\xdb\x03\x3f\x02\x40\x02\x3e\x00\xdc\x03\x45\x00\x3f\x00\x41\x02\xa8\x01\x41\x00\xa9\x01\xba\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xef\x03\xa0\x03\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x32\x00\xea\x02\x48\x02\x49\x02\xf0\x02\x19\x00\x43\x03\x45\x00\x8f\x00\x11\x03\x3e\x02\x90\x00\x37\x00\xfc\x02\x39\x00\x92\x00\x8b\x02\x3a\x00\x3b\x00\x3c\x00\x8c\x02\x13\x03\x93\x00\x94\x00\x95\x00\x3d\x00\x96\x00\x32\x00\x97\x00\x99\x03\x9a\x03\x37\x03\x14\x00\x15\x00\xee\x01\x17\x00\x18\x00\x3e\x02\x30\x01\x37\x00\x96\x00\x39\x00\x97\x00\x12\x02\x3a\x00\x3b\x00\x3c\x00\x42\x00\x14\x00\x43\x00\x04\x01\x14\x02\x3d\x00\xab\x00\x4e\xfe\x37\x03\x4e\xfe\xac\x00\x1f\x02\x3e\x00\x14\x00\xa2\x02\x3f\x00\x40\x00\xa3\x02\x41\x00\x60\xfe\xab\x00\x60\xfe\x14\x00\xad\x00\xac\x00\x6a\xfe\xae\x00\x6a\xfe\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\xab\x00\x2c\x02\x14\x00\xad\x00\xac\x00\x3e\x00\xae\x00\x45\x00\x3f\x00\x40\x00\x20\x02\x41\x00\x91\x03\x64\x00\xba\x03\x65\x00\x14\x00\xad\x00\x2f\x02\x93\x03\xae\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x38\x03\x39\x03\x3a\x03\x3b\x03\x3c\x03\x14\x00\x2c\x03\x45\x00\x91\x03\x64\x00\x92\x03\x65\x00\xa6\x03\xa7\x03\x3d\x03\x93\x03\x37\x00\x6b\xfe\x39\x00\x6b\xfe\x33\x02\x3a\x00\x3b\x00\x3c\x00\x38\x02\xc6\x03\x3a\x03\x3b\x03\x3c\x03\x3d\x00\x05\x03\x26\x02\x39\x02\x99\x00\x9a\x00\x9b\x00\x9c\x00\x6c\xfe\x3d\x03\x6c\xfe\x37\x00\x6d\xfe\x39\x00\x6d\xfe\x43\x02\x3a\x00\x3b\x00\x3c\x00\x0a\x00\x6e\xfe\x0b\x00\x6e\xfe\x0c\x00\x3d\x00\x0d\x00\x0e\x00\x0f\x00\x99\x00\x9a\x00\x27\x02\x12\x00\x9d\x00\x9e\x00\x3e\x00\x9f\x00\xa6\x03\x3f\x00\x40\x00\x47\x02\x41\x00\x62\x01\x63\x01\x64\x01\x65\x01\xa1\x00\xa2\x00\xa3\x00\x1b\x03\x1c\x03\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x4c\x02\x9e\x00\x3e\x00\x48\x02\x42\x03\x3f\x00\x40\x00\x45\x00\x41\x00\x73\x02\x25\x02\x26\x02\x56\x02\xa1\x00\xa2\x00\xa3\x00\x6c\x03\x98\x02\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x55\x01\x0e\x00\x0f\x00\x6f\xfe\x0a\x00\x6f\xfe\x0b\x00\x45\x00\x0c\x00\x9c\x02\x0d\x00\x0e\x00\x0f\x00\x74\x01\x6c\x02\x27\x02\x12\x00\xbe\x00\x8e\x02\x0d\x00\x0e\x00\x0f\x00\xca\x03\xcb\x03\x8f\x02\xcc\x03\x70\xfe\xbe\x00\x70\xfe\x0d\x00\x0e\x00\x0f\x00\xa4\x03\xea\x01\x0b\x04\x0c\x04\x0d\x04\xbe\x00\x9e\x02\x0d\x00\x0e\x00\x0f\x00\x4c\x03\xea\x01\xfc\x03\xd7\x00\xd8\x00\xbe\x00\x6c\x01\x0d\x00\x0e\x00\x0f\x00\xe9\x01\xea\x01\xf3\x01\x9c\x01\x9d\x01\xbe\x00\x13\x00\x0d\x00\x0e\x00\x0f\x00\xd7\xfe\x9e\x01\xd7\xfe\x4a\x01\xb9\x00\x42\x00\x14\x00\x43\x00\xc6\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x42\x00\x14\x00\x43\x00\x42\x00\x14\x00\x43\x00\xd7\x03\xd7\x00\xd8\x00\x77\xfe\x0a\x00\x77\xfe\x0b\x00\x19\x00\x0c\x00\xc8\x01\x0d\x00\x0e\x00\x0f\x00\x5a\x03\x94\x02\x4c\x01\x12\x00\x4d\x01\x4e\x01\xcb\x01\xc5\x02\x83\x03\xcd\x01\x0d\x00\x0e\x00\x0f\x00\x0a\x00\x78\xfe\x0b\x00\x78\xfe\x0c\x00\xd6\x01\x0d\x00\x0e\x00\x0f\x00\xc2\x02\x98\x02\x4c\x01\x12\x00\x4d\x01\x4e\x01\x13\x00\xfa\x02\xfb\x02\x14\x00\x15\x00\xf4\x01\x17\x00\x18\x00\x07\x02\x9b\x01\x84\x03\x9c\x01\xb7\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xae\x01\x13\x00\xaf\x01\x19\x00\x14\x00\x15\x00\xbc\x00\x17\x00\x18\x00\x94\x03\x95\x03\x96\x03\x0b\x01\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xfd\x02\xfe\x02\x4f\x01\x19\x00\x28\x01\x14\x00\x15\x00\x43\x01\x17\x00\x18\x00\x75\x03\x97\x02\x98\x02\x19\x00\x45\x01\x14\x00\x15\x00\x88\x00\x17\x00\x18\x00\x0f\x02\x67\x01\x10\x02\x19\x00\x4f\x01\x14\x00\x15\x00\x21\x04\x17\x00\x18\x00\x75\x01\x69\x02\xd8\x00\x19\x00\xbe\x00\x1d\x04\x0d\x00\x0e\x00\x0f\x00\x9b\x01\x0a\x00\x9c\x01\x0b\x00\x19\x00\x0c\x00\x13\x00\x0d\x00\x0e\x00\x0f\x00\x18\x04\xe6\x03\x11\x00\x12\x00\x11\x02\x67\x01\x10\x02\x5e\x03\x1a\x04\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x93\x00\x94\x00\x0e\x03\x0f\x03\x13\x00\x92\x02\x93\x02\x94\x02\x14\x00\x15\x00\x1b\x04\x17\x00\x18\x00\x19\x00\xe7\x03\x50\x01\x10\x04\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x93\x00\x94\x00\x09\x04\x0a\x00\x19\x00\x0b\x00\x00\x04\x0c\x00\x01\x04\x0d\x00\x0e\x00\x0f\x00\x03\x04\x19\x00\x48\x01\x12\x00\x07\x04\x71\x03\x96\x02\x97\x02\x98\x02\xa0\x02\x0a\x00\x43\x02\x0b\x00\x91\x01\x0c\x00\xed\x03\x0d\x00\x0e\x00\x0f\x00\x6a\x02\x6b\x02\x48\x01\x12\x00\x43\x02\x49\x01\xa8\x02\x97\x02\x98\x02\x59\xff\x0a\x00\x72\x03\x0b\x00\xf3\x03\x0c\x00\xa0\x02\x0d\x00\x0e\x00\x0f\x00\xf4\x03\x04\x04\x11\x00\x12\x00\x06\x02\x14\x00\x43\x00\xf8\x03\x71\x01\x18\x00\x0a\x00\x9e\x02\x0b\x00\xf9\x03\x0c\x00\xfa\x03\x0d\x00\x0e\x00\x0f\x00\xb9\x03\xe3\x03\x11\x00\x12\x00\xbc\x03\x13\x00\xad\x02\x60\x01\x14\x00\x15\x00\xc3\x03\x17\x00\x18\x00\x97\x01\x98\x01\x99\x01\x67\x01\xb2\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xb9\x01\x98\x01\x99\x01\x19\x00\x67\x01\x68\x01\x4a\x01\x43\x02\x0a\x00\xc9\x03\x0b\x00\x43\x02\x0c\x00\x19\x00\x0d\x00\x0e\x00\x0f\x00\x98\x03\xf4\x03\x11\x00\x12\x00\x0b\x02\xd7\x00\xd8\x00\xd6\x00\xd7\x00\xd8\x00\x0a\x00\x75\x02\x0b\x00\x13\x00\x0c\x00\xd9\x03\x0d\x00\x0e\x00\x0f\x00\xfe\xfd\xc3\x03\x11\x00\x12\x00\x58\x02\x59\x02\x5a\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\xde\x03\x0c\x00\xdf\x03\x0d\x00\x0e\x00\x0f\x00\xe0\x03\xc7\x03\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x77\x03\x0c\x00\x78\x03\x0d\x00\x0e\x00\x0f\x00\x7a\x03\xa8\x03\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x81\x01\x0c\x00\x1e\x00\x0d\x00\x0e\x00\x0f\x00\x7f\x03\xd2\x02\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x8a\x03\x0b\x00\x82\x03\x0c\x00\x8b\x03\x0d\x00\x0e\x00\x0f\x00\xdf\x02\x01\x03\x11\x00\x12\x00\x19\x00\x67\x01\x69\x01\x67\x01\x6a\x01\x9d\x03\x0a\x00\xfa\x02\x0b\x00\x13\x00\x0c\x00\xb9\x00\x0d\x00\x0e\x00\x0f\x00\xac\x03\x2a\x02\x11\x00\x12\x00\x0a\x02\x8a\x00\xaa\x03\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\xb0\x03\x0c\x00\xae\x03\x0d\x00\x0e\x00\x0f\x00\xb5\x03\x8d\x01\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\xb1\x03\x0b\x00\x13\x00\x0c\x00\xb7\x03\x0d\x00\x0e\x00\x0f\x00\x43\x02\x92\x01\x11\x00\x12\x00\x19\x00\xb4\x00\xb5\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x1b\x03\x0c\x00\x28\x03\x0d\x00\x0e\x00\x0f\x00\x29\x03\x05\x02\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x2b\x03\x0c\x00\x2a\x03\x0d\x00\x0e\x00\x0f\x00\x2c\x03\x0c\x01\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x2f\x03\x0c\x00\x30\x03\x0d\x00\x0e\x00\x0f\x00\x43\x02\x10\x00\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x37\x03\x0c\x00\x49\x03\x0d\x00\x0e\x00\x0f\x00\x5f\x01\x60\x01\xcd\x03\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x4e\x03\x0b\x00\x13\x00\x0c\x00\x4f\x03\x0d\x00\x0e\x00\x0f\x00\x09\x02\x0a\x02\xa5\x02\x12\x00\x19\x00\x91\x01\x92\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\xde\x01\x0c\x00\x57\x03\x0d\x00\x0e\x00\x0f\x00\x09\x02\x0a\x02\xa7\x02\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x96\x02\x0b\x00\x13\x00\x0c\x00\x5c\x03\x0d\x00\x0e\x00\x0f\x00\x1e\x03\x1f\x03\xa9\x02\x12\x00\x19\x00\x1c\x00\x1d\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\xff\xfd\x0c\x00\x60\x03\x0d\x00\x0e\x00\x0f\x00\xe7\x02\xe8\x02\x70\x01\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x6e\x03\x0c\x00\xa0\x02\x0d\x00\x0e\x00\x0f\x00\x16\x02\x17\x02\xcf\x01\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x1e\x00\x0c\x00\x33\xff\x0d\x00\x0e\x00\x0f\x00\x91\x01\x92\x01\xd4\x01\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\xb6\x02\x0c\x00\xb7\x02\x0d\x00\x0e\x00\x0f\x00\xca\x01\xcb\x01\xef\x01\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\xb9\x02\x0b\x00\x13\x00\x0c\x00\xba\x02\x0d\x00\x0e\x00\x0f\x00\x09\x02\x0a\x02\xcb\x00\x12\x00\x19\x00\xc1\x02\xa0\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x9e\x02\x0c\x00\xa0\x02\x0d\x00\x0e\x00\x0f\x00\xd2\x02\xc4\x02\xd1\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\xdf\x02\x0b\x00\x13\x00\x0c\x00\xae\x01\x0d\x00\x0e\x00\x0f\x00\xe0\x02\xcb\x00\x41\x01\x12\x00\x19\x00\xe3\x02\xe5\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x13\x00\x0b\x00\x43\x02\x0c\x00\xe9\x02\x0d\x00\x0e\x00\x0f\x00\xed\x02\xf2\x02\x54\x01\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xf3\x02\x13\x00\x0a\x00\xa3\x01\xa4\x01\xf4\x02\xbe\x00\xf6\x02\x0d\x00\x0e\x00\x0f\x00\xfa\x02\xde\x01\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x03\x03\x13\x00\x0a\x00\x04\x03\x46\x01\x05\x03\xbe\x00\x0d\x03\x0d\x00\x0e\x00\x0f\x00\x0c\x03\x0e\x03\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x8c\x00\x13\x00\xbd\x00\x11\x03\x19\x03\x18\x02\xbe\x00\x1a\x02\x0d\x00\x0e\x00\x0f\x00\x14\x02\x1b\x02\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xb7\x00\x22\x02\x1d\x02\x13\x00\x23\x02\x55\x01\x0e\x00\x0f\x00\x56\x01\x24\x02\x25\x02\x29\x02\x2a\x02\x19\x00\x91\x01\xc7\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x2e\x02\x13\x00\xc5\x02\xc6\x02\xcb\x00\x0d\x00\x0e\x00\x0f\x00\x35\x02\x36\x02\x37\x02\xc7\x02\x24\xfe\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x3b\x02\x3c\x02\x45\x02\x13\x00\xc5\x02\x66\x03\x38\xff\x0d\x00\x0e\x00\x0f\x00\xc8\x02\xc9\x02\xca\x02\x19\x00\xcb\x02\x47\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x91\x01\x4e\x02\x51\x02\x13\x00\x2b\x02\xa7\x01\x0d\x00\x0e\x00\x0f\x00\x8a\x02\x67\x03\xc9\x02\xca\x02\x19\x00\xcb\x02\x81\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x75\x02\x13\x00\x6f\x01\x89\x02\x0d\x00\x0e\x00\x0f\x00\x9c\x01\x10\x04\x5d\x03\x0e\x00\x0f\x00\x75\x02\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x07\x04\x5d\x03\x0e\x00\x0f\x00\x9e\x02\xe4\x03\x5d\x03\x0e\x00\x0f\x00\x96\x02\xa0\x02\xa5\x02\xab\x02\x19\x00\x14\x00\x15\x00\xac\x02\x17\x00\x18\x00\x1b\x02\xa9\x00\xaa\x00\x1b\x00\x47\x00\x57\x01\xb2\x02\x1e\x00\x1f\x00\x92\x00\x1e\x00\x14\x00\x15\x00\x19\x00\x17\x00\x18\x00\x93\x00\x94\x00\x6c\x01\x7b\x01\x77\x01\xcc\x02\xe5\x03\x5d\x03\x0e\x00\x0f\x00\x78\x01\x7c\x01\x82\x01\x19\x00\x58\x01\x59\x01\x14\x00\x15\x00\xce\xfd\xcd\x02\x18\x00\xd0\xfd\xd9\x03\x5d\x03\x0e\x00\x0f\x00\xcc\x02\x7f\x03\x5d\x03\x0e\x00\x0f\x00\xcf\xfd\xd2\xfd\xd5\xfd\x19\x00\xa6\x01\xa7\x01\x14\x00\x15\x00\xa8\x01\xcd\x02\x18\x00\xaf\x01\x82\x03\x5d\x03\x0e\x00\x0f\x00\xb4\x01\x5c\x03\x5d\x03\x0e\x00\x0f\x00\xb3\x01\xbe\x01\xbd\x01\x19\x00\xbf\x01\x14\x00\x15\x00\xc0\x01\x17\x00\x18\x00\x48\x01\xc6\x01\xc1\x01\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\xcd\x01\xd6\x01\xcf\x01\x19\x00\x14\x00\x15\x00\xc8\x01\x17\x00\x18\x00\x14\x00\x15\x00\x2b\x00\x17\x00\x18\x00\xd8\x01\xe9\x01\xee\x01\xf1\x01\xde\x01\xb9\x00\x14\x00\x15\x00\x19\x00\x17\x00\x18\x00\x14\x00\x15\x00\x19\x00\x17\x00\x18\x00\x2c\x00\xfa\x01\xab\x00\xf8\x01\xff\x01\x00\x02\xac\x00\xf9\x01\x19\x00\x8e\x00\x0f\x02\xb2\x00\xb3\x00\x19\x00\xff\xff\xb4\x00\x1b\x00\x47\x00\x14\x00\xad\x00\x1e\x00\x1f\x00\xae\x00\xb7\x00\xb9\x00\xcf\x00\xd0\x00\xc7\x00\xcb\x00\xd1\x00\xc7\x00\x14\x00\x15\x00\xff\xff\x17\x00\x18\x00\x1b\x00\x0b\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x3c\x01\x45\x01\xff\xff\x54\x01\xff\xff\x14\x00\x15\x00\x19\x00\x17\x00\x18\x00\x14\x00\x15\x00\x8c\x00\x17\x00\x18\x00\x20\x00\x1b\x00\x21\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x19\x00\x50\xff\x22\x00\x14\x00\x15\x00\x19\x00\x17\x00\x18\x00\x14\x00\x15\x00\x00\x00\x17\x00\x18\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\xe9\x03\x19\x00\x00\x00\x00\x00\x22\x00\x00\x00\x19\x00\x00\x00\x50\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x69\x03\x5f\x01\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x2a\x00\x2c\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x1b\x00\x21\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x2c\x00\x50\xff\x22\x00\x2b\x00\x00\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x00\x00\x00\x00\xea\x03\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x1b\x00\x00\x00\xd0\x02\x00\x00\x2c\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x50\xff\x00\x00\x00\x00\x00\x00\x55\x02\x6b\x03\x9e\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x56\x02\x00\x00\x00\x00\x6a\x03\x00\x00\x00\x00\x00\x00\xa1\x00\xa2\x00\xa3\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x2b\x00\x1e\x00\x1f\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x3d\x01\xcf\x02\x2c\x00\x21\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x23\x00\xd1\x02\x00\x00\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x65\x03\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x02\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x8f\x00\x00\x00\x00\x00\x90\x00\x2b\x00\x3e\x01\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x93\x00\x94\x00\x95\x00\x00\x00\x96\x00\x00\x00\x97\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x66\x03\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\xd1\x02\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x43\x02\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x18\x03\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x00\x00\x76\x00\x00\x00\x00\x00\x2c\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x8f\x00\x53\x00\x00\x00\x90\x00\x00\x00\x3e\x01\x00\x00\x92\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x93\x00\x94\x00\x95\x00\x00\x00\x96\x00\x56\x00\x97\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x18\x03\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x00\x00\x76\x00\x00\x00\x00\x00\x2c\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x8f\x00\x53\x00\x00\x00\x90\x00\x00\x00\x91\x00\x00\x00\x92\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x93\x00\x94\x00\x95\x00\x00\x00\x96\x00\x56\x00\x97\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x00\x00\x76\x00\x00\x00\x00\x00\x2c\x00\x77\x00\x78\x00\x79\x00\x00\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x23\x01\x9a\x00\x9b\x00\x9c\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x88\x02\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x7a\x01\x55\x00\x25\x01\x26\x01\x00\x00\x9f\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x27\x01\x28\x01\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1b\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x73\x00\x56\x02\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x7c\x00\x7d\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x23\x01\x9a\x00\x9b\x00\x9c\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\xad\x01\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x7a\x01\x55\x00\x25\x01\x26\x01\x00\x00\x9f\x00\x23\x00\x00\x00\x56\x00\x00\x00\x27\x00\x28\x00\x29\x00\x57\x00\x00\x00\x58\x00\x27\x01\x28\x01\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x2b\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x73\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x7c\x00\x7d\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x33\x01\x9a\x00\x9b\x00\x9c\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x34\x01\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x2b\x01\x55\x00\x25\x01\x35\x01\x00\x00\x9f\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x36\x01\x37\x01\x38\x01\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x73\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x7c\x00\x7d\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x23\x01\x9a\x00\x9b\x00\x9c\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x24\x01\x00\x00\x55\x00\x25\x01\x26\x01\x00\x00\x9f\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x27\x01\x28\x01\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x73\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x7c\x00\x7d\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x23\x01\x9a\x00\x9b\x00\x9c\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x25\x01\x26\x01\x00\x00\x9f\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x27\x01\x28\x01\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x73\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x7c\x00\x7d\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\xe4\x01\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x01\x73\x00\x00\x00\x00\x00\x00\x00\x75\x00\xe6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x7c\x00\x7d\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x43\x02\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x73\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x7c\x00\x7d\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x02\x73\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x7c\x02\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x7c\x00\x7d\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x73\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x7c\x00\x7d\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x02\x73\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x7c\x00\x7d\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\xde\x02\x2b\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x73\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x7c\x00\x7d\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x02\x73\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x7c\x00\x7d\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x73\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x00\x7c\x00\x7d\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x56\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1b\x00\x67\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x73\x00\x20\x00\x00\x00\x21\x00\x75\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x22\x00\x48\x01\x00\x00\x00\x00\x00\x00\x7b\x00\x7c\x00\x7d\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x43\x02\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x57\x00\x00\x00\x58\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x2b\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x1b\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\xa2\x03\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x85\x01\x00\x00\x6e\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x03\x6c\x03\x00\x00\x2c\x00\x77\x00\x78\x00\x79\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x1b\x00\x47\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\xa2\x03\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\xbb\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x03\xa1\x01\x00\x00\x2c\x00\x77\x00\x78\x00\x79\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x43\x02\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x59\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x1b\x00\x64\x00\x00\x00\x65\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x00\x00\x85\x01\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x00\x00\x86\x01\x73\x00\x00\x00\x00\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x2c\x00\x77\x00\x78\x00\x79\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x57\x00\x00\x00\x58\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x2b\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x6f\x00\x70\x00\x00\x00\x00\x00\x73\x00\x00\x00\x00\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x2c\x00\x77\x00\x78\x00\x79\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x43\x02\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x1b\x00\x47\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x3f\x03\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\xbb\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x01\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\xa1\x01\x40\x03\x00\x00\x00\x00\x2c\x00\x41\x03\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x59\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x2c\x00\x00\x00\x1b\x00\x47\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x67\x00\x00\x00\x3f\x03\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\xbb\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x89\x03\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x03\x00\x00\x00\x00\x2c\x00\x41\x03\x5f\x02\x47\x00\x1c\x00\x1d\x00\x60\x02\x1f\x00\xdc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x2c\x00\x1b\x00\x00\x00\x00\x00\x00\x00\xdd\x00\x61\x02\x62\x02\x63\x02\x64\x02\x65\x02\x66\x02\x67\x02\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\x68\x02\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x69\x02\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x1b\x00\x61\x00\x62\x00\x63\x00\x1e\x00\x64\x00\x00\x00\x65\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\xb0\x00\x67\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x26\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\xb9\x01\x00\x00\x57\x00\x00\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\xdc\x00\x57\x00\x00\x00\x00\x00\xc4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x14\x01\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x3d\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\xdc\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x3e\x00\x65\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x16\x01\x17\x01\xc2\x00\x3b\x00\x3c\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x3d\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\xdc\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x3e\x00\x65\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\xb7\x01\xc2\x00\x3b\x00\x3c\x00\x54\x00\x00\x00\x00\x00\x55\x00\x00\x00\x3d\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x00\x00\xdc\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x3e\x00\x65\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\xff\x00\x00\x00\x00\x2c\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x01\x01\x01\x02\x01\x03\x01\x1b\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x00\x00\x53\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x54\x00\x00\x00\x00\x00\x55\x00\x2e\xff\x2e\xff\x2e\xff\x2e\xff\x2e\xff\x2e\xff\x2e\xff\x00\x00\x00\x00\x00\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\xff\x00\x00\x5a\x00\x00\x00\x00\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x00\x00\x61\x00\x62\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x2e\xff\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x9c\x00\x2b\x00\x00\x00\x00\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x52\x01\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x2c\x00\x22\x00\x1e\x00\x2b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x40\x01\x00\x00\x9d\x00\x9e\x00\x53\x01\x9f\x00\x41\x01\x00\x00\x00\x00\xb0\x00\x1f\x04\x00\x00\x00\x00\x00\x00\x1b\x00\xa1\x00\xa2\x00\xa3\x00\x1e\x00\x1f\x00\x00\x00\x5b\x01\x9a\x00\x00\x00\x9c\x00\x20\x04\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x5c\x01\x00\x00\x00\x00\x9f\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x5d\x01\x00\x00\x5e\x01\x5f\x01\x00\x00\x00\x00\x00\x00\x2c\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x2b\x00\x5b\x01\x9a\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x1b\x00\x2c\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x5c\x01\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x01\x20\x00\xed\x01\x21\x00\x4c\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\x2b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x74\x03\x21\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x2a\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x2a\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x2a\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x01\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x2a\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x2a\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x1b\x00\x47\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x0b\x01\x00\x00\xad\x02\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x2b\x00\x26\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x2c\x00\x1e\x00\x1f\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x22\x00\x2b\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\xad\x02\x00\x00\x00\x00\x20\x00\x2c\x00\x21\x00\x1b\x00\x47\x00\x00\x00\x2b\x00\x1e\x00\x1f\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x0b\x01\x2c\x00\x00\x00\x1e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1b\x00\xb0\x00\x00\x00\x2b\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x2c\x00\x21\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x2c\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x06\x01\x00\x00\x07\x01\x1b\x00\x00\x00\x00\x00\x2c\x00\x1e\x00\x00\x00\x00\x00\x08\x01\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x27\x03\x00\x00\x00\x00\xb0\x00\xc1\x03\x1b\x00\x47\x00\x00\x00\x00\x00\x2c\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\xc2\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x2c\x00\x2b\x00\x1b\x00\x47\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x1b\x00\xbb\x00\x00\x00\x2b\x00\x1e\x00\x00\x00\x00\x00\x1b\x00\x47\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb0\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\xbb\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x2c\x00\x00\x00\x00\x00\x1e\x00\x2b\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x1b\x00\x0a\x03\x00\x00\x00\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1b\x00\xd5\x02\x00\x00\x2c\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x2b\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x03\x00\x00\x2c\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x00\x00\x00\x00\x2c\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x9d\x00\x9e\x00\x00\x00\x9f\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\xa1\x00\xa2\x00\xa3\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2c\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x2b\x00\x6d\x02\xdf\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x2c\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x9e\x00\x00\x00\x9f\x00\xa0\x00\x00\x00\x00\x00\x76\x02\x77\x02\x78\x02\x79\x02\x00\x00\x7a\x02\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\x70\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x45\x00\x6d\x02\xdf\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x40\x01\x00\x00\x9d\x00\x9e\x00\x00\x00\x9f\x00\x41\x01\xd6\xfe\x00\x00\xd6\xfe\x52\x03\x78\x02\x79\x02\x00\x00\x7a\x02\xa1\x00\xa2\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x6d\x02\xdf\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x03\x79\x02\x00\x00\x7a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x6d\x02\xdf\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x03\x6f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\xde\x01\xdf\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x03\x00\x00\xe2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\xde\x01\xdf\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x32\x02\x00\x00\xe2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x6d\x02\xdf\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x02\x6f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x6d\x02\xdf\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x02\x6f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\xde\x01\xdf\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\xe1\x01\x00\x00\xe2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\xde\x01\xdf\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\xe6\x01\x00\x00\xe2\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x6d\x02\xdf\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x05\x04\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\xeb\x03\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\xd1\x03\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x8b\x03\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x8c\x03\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x8d\x03\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\xaa\x03\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x34\x03\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x51\x03\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x58\x03\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\xdc\x02\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\xff\x02\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x8d\x02\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x0f\x01\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x10\x01\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x84\x00\x85\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x2b\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x2c\x01\x2d\x01\x00\x00\x00\x00\x2e\x01\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x19\x01\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x1a\x01\x1b\x01\x1c\x01\x00\x00\x1d\x01\x00\x00\x00\x00\x1e\x01\x2f\x01\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x93\x00\x94\x00\x30\x01\x1f\x01\x96\x00\x20\x01\x31\x01\x45\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x1d\x01\x00\x00\x00\x00\x1e\x01\x92\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x93\x00\x94\x00\x00\x00\x1f\x01\x00\x00\x20\x01\x21\x01\x45\x00\x7d\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x7e\x02\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x7f\x02\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x1d\x01\x00\x00\x00\x00\x1e\x01\x92\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x93\x00\x94\x00\x00\x00\x1f\x01\x00\x00\x20\x01\x21\x01\x45\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x1d\x01\x00\x00\x00\x00\x1e\x01\x92\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x93\x00\x94\x00\x00\x00\x1f\x01\x00\x00\x20\x01\x21\x01\x45\x00\x18\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x86\x02\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\xab\x01\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x1d\x01\x00\x00\x00\x00\x1e\x01\x92\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x93\x00\x94\x00\x00\x00\x1f\x01\x00\x00\x20\x01\x21\x01\x45\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x1d\x01\x00\x00\x00\x00\x1e\x01\x92\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x93\x00\x94\x00\x00\x00\x1f\x01\x00\x00\x20\x01\x21\x01\x45\x00\x7f\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x7f\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x49\x03\x4a\x03\x00\x00\x3d\x00\x00\x00\x4b\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\xd0\x03\x00\x00\x00\x00\x00\x00\x4b\x03\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\xd5\x03\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\xd6\x03\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x82\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x02\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x11\x01\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x7f\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x09\x04\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x41\x03\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x57\x03\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\xd8\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x1d\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x1e\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x2e\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x37\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x45\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x72\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x75\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x7c\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x81\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x01\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x02\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x03\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x04\x02\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\xd2\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\xd5\x00\x80\x00\x34\x00\x81\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x0a\x03\x34\x00\x0e\x01\x36\x00\x37\x00\x38\x00\x39\x00\x45\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x01\x34\x00\x0e\x01\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x0d\x01\x34\x00\x0e\x01\x36\x00\x37\x00\x38\x00\x39\x00\x45\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x01\x96\x01\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x96\x01\x00\x00\x39\x00\x00\x00\x45\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x00\xc2\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x5a\x02\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x3d\x00\x00\x00\x00\x00\x5b\x02\xd7\x00\xd8\x00\x00\x00\x5c\x02\x12\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x02\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x5b\x02\xd7\x00\xd8\x00\x00\x00\x5c\x02\x5d\x02\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x4f\x03\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\xa1\x01\x3b\x00\x3c\x00\x3e\x00\x00\x00\x45\x00\x3f\x00\x40\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\xa2\x01\x3b\x00\x3c\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x3c\x01\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x45\x00\x3f\x00\x40\x00\x00\x00\x41\x00\xe7\x01\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x8e\x00\x3b\x00\x3c\x00\x3e\x00\x00\x00\x45\x00\x3f\x00\x40\x00\x3d\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x13\x01\x3b\x00\x3c\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x15\x01\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x45\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x3c\x01\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x3e\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x45\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x45\x00\x3f\x00\x40\x00\x00\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x00\x14\x00\x43\x00\x16\x00\x44\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x00\x00\x00\x00\x00\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 (6, 587) [ + (6 , happyReduce_6), + (7 , happyReduce_7), + (8 , happyReduce_8), + (9 , happyReduce_9), + (10 , happyReduce_10), + (11 , happyReduce_11), + (12 , happyReduce_12), + (13 , happyReduce_13), + (14 , happyReduce_14), + (15 , happyReduce_15), + (16 , happyReduce_16), + (17 , happyReduce_17), + (18 , happyReduce_18), + (19 , happyReduce_19), + (20 , happyReduce_20), + (21 , happyReduce_21), + (22 , happyReduce_22), + (23 , happyReduce_23), + (24 , happyReduce_24), + (25 , happyReduce_25), + (26 , happyReduce_26), + (27 , happyReduce_27), + (28 , happyReduce_28), + (29 , happyReduce_29), + (30 , happyReduce_30), + (31 , happyReduce_31), + (32 , happyReduce_32), + (33 , happyReduce_33), + (34 , happyReduce_34), + (35 , happyReduce_35), + (36 , happyReduce_36), + (37 , happyReduce_37), + (38 , happyReduce_38), + (39 , happyReduce_39), + (40 , happyReduce_40), + (41 , happyReduce_41), + (42 , happyReduce_42), + (43 , happyReduce_43), + (44 , happyReduce_44), + (45 , happyReduce_45), + (46 , happyReduce_46), + (47 , happyReduce_47), + (48 , happyReduce_48), + (49 , happyReduce_49), + (50 , happyReduce_50), + (51 , happyReduce_51), + (52 , happyReduce_52), + (53 , happyReduce_53), + (54 , happyReduce_54), + (55 , happyReduce_55), + (56 , happyReduce_56), + (57 , happyReduce_57), + (58 , happyReduce_58), + (59 , happyReduce_59), + (60 , happyReduce_60), + (61 , happyReduce_61), + (62 , happyReduce_62), + (63 , happyReduce_63), + (64 , happyReduce_64), + (65 , happyReduce_65), + (66 , happyReduce_66), + (67 , happyReduce_67), + (68 , happyReduce_68), + (69 , happyReduce_69), + (70 , happyReduce_70), + (71 , happyReduce_71), + (72 , happyReduce_72), + (73 , happyReduce_73), + (74 , happyReduce_74), + (75 , happyReduce_75), + (76 , happyReduce_76), + (77 , happyReduce_77), + (78 , happyReduce_78), + (79 , happyReduce_79), + (80 , happyReduce_80), + (81 , happyReduce_81), + (82 , happyReduce_82), + (83 , happyReduce_83), + (84 , happyReduce_84), + (85 , happyReduce_85), + (86 , happyReduce_86), + (87 , happyReduce_87), + (88 , happyReduce_88), + (89 , happyReduce_89), + (90 , happyReduce_90), + (91 , happyReduce_91), + (92 , happyReduce_92), + (93 , happyReduce_93), + (94 , happyReduce_94), + (95 , happyReduce_95), + (96 , happyReduce_96), + (97 , happyReduce_97), + (98 , happyReduce_98), + (99 , happyReduce_99), + (100 , happyReduce_100), + (101 , happyReduce_101), + (102 , happyReduce_102), + (103 , happyReduce_103), + (104 , happyReduce_104), + (105 , happyReduce_105), + (106 , happyReduce_106), + (107 , happyReduce_107), + (108 , happyReduce_108), + (109 , happyReduce_109), + (110 , happyReduce_110), + (111 , happyReduce_111), + (112 , happyReduce_112), + (113 , happyReduce_113), + (114 , happyReduce_114), + (115 , happyReduce_115), + (116 , happyReduce_116), + (117 , happyReduce_117), + (118 , happyReduce_118), + (119 , happyReduce_119), + (120 , happyReduce_120), + (121 , happyReduce_121), + (122 , happyReduce_122), + (123 , happyReduce_123), + (124 , happyReduce_124), + (125 , happyReduce_125), + (126 , happyReduce_126), + (127 , happyReduce_127), + (128 , happyReduce_128), + (129 , happyReduce_129), + (130 , happyReduce_130), + (131 , happyReduce_131), + (132 , happyReduce_132), + (133 , happyReduce_133), + (134 , happyReduce_134), + (135 , happyReduce_135), + (136 , happyReduce_136), + (137 , happyReduce_137), + (138 , happyReduce_138), + (139 , happyReduce_139), + (140 , happyReduce_140), + (141 , happyReduce_141), + (142 , happyReduce_142), + (143 , happyReduce_143), + (144 , happyReduce_144), + (145 , happyReduce_145), + (146 , happyReduce_146), + (147 , happyReduce_147), + (148 , happyReduce_148), + (149 , happyReduce_149), + (150 , happyReduce_150), + (151 , happyReduce_151), + (152 , happyReduce_152), + (153 , happyReduce_153), + (154 , happyReduce_154), + (155 , happyReduce_155), + (156 , happyReduce_156), + (157 , happyReduce_157), + (158 , happyReduce_158), + (159 , happyReduce_159), + (160 , happyReduce_160), + (161 , happyReduce_161), + (162 , happyReduce_162), + (163 , happyReduce_163), + (164 , happyReduce_164), + (165 , happyReduce_165), + (166 , happyReduce_166), + (167 , happyReduce_167), + (168 , happyReduce_168), + (169 , happyReduce_169), + (170 , happyReduce_170), + (171 , happyReduce_171), + (172 , happyReduce_172), + (173 , happyReduce_173), + (174 , happyReduce_174), + (175 , happyReduce_175), + (176 , happyReduce_176), + (177 , happyReduce_177), + (178 , happyReduce_178), + (179 , happyReduce_179), + (180 , happyReduce_180), + (181 , happyReduce_181), + (182 , happyReduce_182), + (183 , happyReduce_183), + (184 , happyReduce_184), + (185 , happyReduce_185), + (186 , happyReduce_186), + (187 , happyReduce_187), + (188 , happyReduce_188), + (189 , happyReduce_189), + (190 , happyReduce_190), + (191 , happyReduce_191), + (192 , happyReduce_192), + (193 , happyReduce_193), + (194 , happyReduce_194), + (195 , happyReduce_195), + (196 , happyReduce_196), + (197 , happyReduce_197), + (198 , happyReduce_198), + (199 , happyReduce_199), + (200 , happyReduce_200), + (201 , happyReduce_201), + (202 , happyReduce_202), + (203 , happyReduce_203), + (204 , happyReduce_204), + (205 , happyReduce_205), + (206 , happyReduce_206), + (207 , happyReduce_207), + (208 , happyReduce_208), + (209 , happyReduce_209), + (210 , happyReduce_210), + (211 , happyReduce_211), + (212 , happyReduce_212), + (213 , happyReduce_213), + (214 , happyReduce_214), + (215 , happyReduce_215), + (216 , happyReduce_216), + (217 , happyReduce_217), + (218 , happyReduce_218), + (219 , happyReduce_219), + (220 , happyReduce_220), + (221 , happyReduce_221), + (222 , happyReduce_222), + (223 , happyReduce_223), + (224 , happyReduce_224), + (225 , happyReduce_225), + (226 , happyReduce_226), + (227 , happyReduce_227), + (228 , happyReduce_228), + (229 , happyReduce_229), + (230 , happyReduce_230), + (231 , happyReduce_231), + (232 , happyReduce_232), + (233 , happyReduce_233), + (234 , happyReduce_234), + (235 , happyReduce_235), + (236 , happyReduce_236), + (237 , happyReduce_237), + (238 , happyReduce_238), + (239 , happyReduce_239), + (240 , happyReduce_240), + (241 , happyReduce_241), + (242 , happyReduce_242), + (243 , happyReduce_243), + (244 , happyReduce_244), + (245 , happyReduce_245), + (246 , happyReduce_246), + (247 , happyReduce_247), + (248 , happyReduce_248), + (249 , happyReduce_249), + (250 , happyReduce_250), + (251 , happyReduce_251), + (252 , happyReduce_252), + (253 , happyReduce_253), + (254 , happyReduce_254), + (255 , happyReduce_255), + (256 , happyReduce_256), + (257 , happyReduce_257), + (258 , happyReduce_258), + (259 , happyReduce_259), + (260 , happyReduce_260), + (261 , happyReduce_261), + (262 , happyReduce_262), + (263 , happyReduce_263), + (264 , happyReduce_264), + (265 , happyReduce_265), + (266 , happyReduce_266), + (267 , happyReduce_267), + (268 , happyReduce_268), + (269 , happyReduce_269), + (270 , happyReduce_270), + (271 , happyReduce_271), + (272 , happyReduce_272), + (273 , happyReduce_273), + (274 , happyReduce_274), + (275 , happyReduce_275), + (276 , happyReduce_276), + (277 , happyReduce_277), + (278 , happyReduce_278), + (279 , happyReduce_279), + (280 , happyReduce_280), + (281 , happyReduce_281), + (282 , happyReduce_282), + (283 , happyReduce_283), + (284 , happyReduce_284), + (285 , happyReduce_285), + (286 , happyReduce_286), + (287 , happyReduce_287), + (288 , happyReduce_288), + (289 , happyReduce_289), + (290 , happyReduce_290), + (291 , happyReduce_291), + (292 , happyReduce_292), + (293 , happyReduce_293), + (294 , happyReduce_294), + (295 , happyReduce_295), + (296 , happyReduce_296), + (297 , happyReduce_297), + (298 , happyReduce_298), + (299 , happyReduce_299), + (300 , happyReduce_300), + (301 , happyReduce_301), + (302 , happyReduce_302), + (303 , happyReduce_303), + (304 , happyReduce_304), + (305 , happyReduce_305), + (306 , happyReduce_306), + (307 , happyReduce_307), + (308 , happyReduce_308), + (309 , happyReduce_309), + (310 , happyReduce_310), + (311 , happyReduce_311), + (312 , happyReduce_312), + (313 , happyReduce_313), + (314 , happyReduce_314), + (315 , happyReduce_315), + (316 , happyReduce_316), + (317 , happyReduce_317), + (318 , happyReduce_318), + (319 , happyReduce_319), + (320 , happyReduce_320), + (321 , happyReduce_321), + (322 , happyReduce_322), + (323 , happyReduce_323), + (324 , happyReduce_324), + (325 , happyReduce_325), + (326 , happyReduce_326), + (327 , happyReduce_327), + (328 , happyReduce_328), + (329 , happyReduce_329), + (330 , happyReduce_330), + (331 , happyReduce_331), + (332 , happyReduce_332), + (333 , happyReduce_333), + (334 , happyReduce_334), + (335 , happyReduce_335), + (336 , happyReduce_336), + (337 , happyReduce_337), + (338 , happyReduce_338), + (339 , happyReduce_339), + (340 , happyReduce_340), + (341 , happyReduce_341), + (342 , happyReduce_342), + (343 , happyReduce_343), + (344 , happyReduce_344), + (345 , happyReduce_345), + (346 , happyReduce_346), + (347 , happyReduce_347), + (348 , happyReduce_348), + (349 , happyReduce_349), + (350 , happyReduce_350), + (351 , happyReduce_351), + (352 , happyReduce_352), + (353 , happyReduce_353), + (354 , happyReduce_354), + (355 , happyReduce_355), + (356 , happyReduce_356), + (357 , happyReduce_357), + (358 , happyReduce_358), + (359 , happyReduce_359), + (360 , happyReduce_360), + (361 , happyReduce_361), + (362 , happyReduce_362), + (363 , happyReduce_363), + (364 , happyReduce_364), + (365 , happyReduce_365), + (366 , happyReduce_366), + (367 , happyReduce_367), + (368 , happyReduce_368), + (369 , happyReduce_369), + (370 , happyReduce_370), + (371 , happyReduce_371), + (372 , happyReduce_372), + (373 , happyReduce_373), + (374 , happyReduce_374), + (375 , happyReduce_375), + (376 , happyReduce_376), + (377 , happyReduce_377), + (378 , happyReduce_378), + (379 , happyReduce_379), + (380 , happyReduce_380), + (381 , happyReduce_381), + (382 , happyReduce_382), + (383 , happyReduce_383), + (384 , happyReduce_384), + (385 , happyReduce_385), + (386 , happyReduce_386), + (387 , happyReduce_387), + (388 , happyReduce_388), + (389 , happyReduce_389), + (390 , happyReduce_390), + (391 , happyReduce_391), + (392 , happyReduce_392), + (393 , happyReduce_393), + (394 , happyReduce_394), + (395 , happyReduce_395), + (396 , happyReduce_396), + (397 , happyReduce_397), + (398 , happyReduce_398), + (399 , happyReduce_399), + (400 , happyReduce_400), + (401 , happyReduce_401), + (402 , happyReduce_402), + (403 , happyReduce_403), + (404 , happyReduce_404), + (405 , happyReduce_405), + (406 , happyReduce_406), + (407 , happyReduce_407), + (408 , happyReduce_408), + (409 , happyReduce_409), + (410 , happyReduce_410), + (411 , happyReduce_411), + (412 , happyReduce_412), + (413 , happyReduce_413), + (414 , happyReduce_414), + (415 , happyReduce_415), + (416 , happyReduce_416), + (417 , happyReduce_417), + (418 , happyReduce_418), + (419 , happyReduce_419), + (420 , happyReduce_420), + (421 , happyReduce_421), + (422 , happyReduce_422), + (423 , happyReduce_423), + (424 , happyReduce_424), + (425 , happyReduce_425), + (426 , happyReduce_426), + (427 , happyReduce_427), + (428 , happyReduce_428), + (429 , happyReduce_429), + (430 , happyReduce_430), + (431 , happyReduce_431), + (432 , happyReduce_432), + (433 , happyReduce_433), + (434 , happyReduce_434), + (435 , happyReduce_435), + (436 , happyReduce_436), + (437 , happyReduce_437), + (438 , happyReduce_438), + (439 , happyReduce_439), + (440 , happyReduce_440), + (441 , happyReduce_441), + (442 , happyReduce_442), + (443 , happyReduce_443), + (444 , happyReduce_444), + (445 , happyReduce_445), + (446 , happyReduce_446), + (447 , happyReduce_447), + (448 , happyReduce_448), + (449 , happyReduce_449), + (450 , happyReduce_450), + (451 , happyReduce_451), + (452 , happyReduce_452), + (453 , happyReduce_453), + (454 , happyReduce_454), + (455 , happyReduce_455), + (456 , happyReduce_456), + (457 , happyReduce_457), + (458 , happyReduce_458), + (459 , happyReduce_459), + (460 , happyReduce_460), + (461 , happyReduce_461), + (462 , happyReduce_462), + (463 , happyReduce_463), + (464 , happyReduce_464), + (465 , happyReduce_465), + (466 , happyReduce_466), + (467 , happyReduce_467), + (468 , happyReduce_468), + (469 , happyReduce_469), + (470 , happyReduce_470), + (471 , happyReduce_471), + (472 , happyReduce_472), + (473 , happyReduce_473), + (474 , happyReduce_474), + (475 , happyReduce_475), + (476 , happyReduce_476), + (477 , happyReduce_477), + (478 , happyReduce_478), + (479 , happyReduce_479), + (480 , happyReduce_480), + (481 , happyReduce_481), + (482 , happyReduce_482), + (483 , happyReduce_483), + (484 , happyReduce_484), + (485 , happyReduce_485), + (486 , happyReduce_486), + (487 , happyReduce_487), + (488 , happyReduce_488), + (489 , happyReduce_489), + (490 , happyReduce_490), + (491 , happyReduce_491), + (492 , happyReduce_492), + (493 , happyReduce_493), + (494 , happyReduce_494), + (495 , happyReduce_495), + (496 , happyReduce_496), + (497 , happyReduce_497), + (498 , happyReduce_498), + (499 , happyReduce_499), + (500 , happyReduce_500), + (501 , happyReduce_501), + (502 , happyReduce_502), + (503 , happyReduce_503), + (504 , happyReduce_504), + (505 , happyReduce_505), + (506 , happyReduce_506), + (507 , happyReduce_507), + (508 , happyReduce_508), + (509 , happyReduce_509), + (510 , happyReduce_510), + (511 , happyReduce_511), + (512 , happyReduce_512), + (513 , happyReduce_513), + (514 , happyReduce_514), + (515 , happyReduce_515), + (516 , happyReduce_516), + (517 , happyReduce_517), + (518 , happyReduce_518), + (519 , happyReduce_519), + (520 , happyReduce_520), + (521 , happyReduce_521), + (522 , happyReduce_522), + (523 , happyReduce_523), + (524 , happyReduce_524), + (525 , happyReduce_525), + (526 , happyReduce_526), + (527 , happyReduce_527), + (528 , happyReduce_528), + (529 , happyReduce_529), + (530 , happyReduce_530), + (531 , happyReduce_531), + (532 , happyReduce_532), + (533 , happyReduce_533), + (534 , happyReduce_534), + (535 , happyReduce_535), + (536 , happyReduce_536), + (537 , happyReduce_537), + (538 , happyReduce_538), + (539 , happyReduce_539), + (540 , happyReduce_540), + (541 , happyReduce_541), + (542 , happyReduce_542), + (543 , happyReduce_543), + (544 , happyReduce_544), + (545 , happyReduce_545), + (546 , happyReduce_546), + (547 , happyReduce_547), + (548 , happyReduce_548), + (549 , happyReduce_549), + (550 , happyReduce_550), + (551 , happyReduce_551), + (552 , happyReduce_552), + (553 , happyReduce_553), + (554 , happyReduce_554), + (555 , happyReduce_555), + (556 , happyReduce_556), + (557 , happyReduce_557), + (558 , happyReduce_558), + (559 , happyReduce_559), + (560 , happyReduce_560), + (561 , happyReduce_561), + (562 , happyReduce_562), + (563 , happyReduce_563), + (564 , happyReduce_564), + (565 , happyReduce_565), + (566 , happyReduce_566), + (567 , happyReduce_567), + (568 , happyReduce_568), + (569 , happyReduce_569), + (570 , happyReduce_570), + (571 , happyReduce_571), + (572 , happyReduce_572), + (573 , happyReduce_573), + (574 , happyReduce_574), + (575 , happyReduce_575), + (576 , happyReduce_576), + (577 , happyReduce_577), + (578 , happyReduce_578), + (579 , happyReduce_579), + (580 , happyReduce_580), + (581 , happyReduce_581), + (582 , happyReduce_582), + (583 , happyReduce_583), + (584 , happyReduce_584), + (585 , happyReduce_585), + (586 , happyReduce_586), + (587 , happyReduce_587) + ] + +happy_n_terms = 134 :: Int +happy_n_nonterms = 216 :: Int + +happyReduce_6 = happyMonadReduce 2# 0# happyReduction_6 +happyReduction_6 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut11 happy_x_1 of { happy_var_1 -> + case happyOut10 happy_x_2 of { happy_var_2 -> + ( checkPageModule happy_var_2 happy_var_1)}} + ) (\r -> happyReturn (happyIn9 r)) + +happyReduce_7 = happyMonadReduce 5# 0# happyReduction_7 +happyReduction_7 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut11 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 XCodeTagOpen) -> + case happyOut15 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 XCodeTagClose) -> + case happyOut10 happy_x_5 of { happy_var_5 -> + ( let (os,ss,l) = happy_var_1 in checkHybridModule happy_var_5 (happy_var_3 os ss l) happy_var_2 happy_var_4)}}}}} + ) (\r -> happyReturn (happyIn9 r)) + +happyReduce_8 = happySpecReduce_2 0# happyReduction_8 +happyReduction_8 happy_x_2 + happy_x_1 + = case happyOut11 happy_x_1 of { happy_var_1 -> + case happyOut15 happy_x_2 of { happy_var_2 -> + happyIn9 + (let (os,ss,l) = happy_var_1 in happy_var_2 os ss l + )}} + +happyReduce_9 = happyMonadReduce 9# 1# happyReduction_9 +happyReduction_9 (happy_x_9 `HappyStk` + happy_x_8 `HappyStk` + happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> + case happyOut156 happy_x_2 of { happy_var_2 -> + case happyOut159 happy_x_3 of { happy_var_3 -> + case happyOut161 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 XStdTagClose) -> + case happyOut154 happy_x_6 of { happy_var_6 -> + case happyOutTok happy_x_7 of { (Loc happy_var_7 XCloseTagOpen) -> + case happyOut156 happy_x_8 of { happy_var_8 -> + case happyOutTok happy_x_9 of { (Loc happy_var_9 XStdTagClose) -> + ( do { n <- checkEqNames happy_var_2 happy_var_8; + let { cn = reverse happy_var_6; + as = reverse happy_var_3; }; + return $ XTag (happy_var_1 <^^> happy_var_9 <** [happy_var_1,happy_var_5,happy_var_7,happy_var_9]) n as happy_var_4 cn })}}}}}}}}} + ) (\r -> happyReturn (happyIn10 r)) + +happyReduce_10 = happyReduce 5# 1# happyReduction_10 +happyReduction_10 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> + case happyOut156 happy_x_2 of { happy_var_2 -> + case happyOut159 happy_x_3 of { happy_var_3 -> + case happyOut161 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 XEmptyTagClose) -> + happyIn10 + (XETag (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 (reverse happy_var_3) happy_var_4 + ) `HappyStk` happyRest}}}}} + +happyReduce_11 = happySpecReduce_3 2# happyReduction_11 +happyReduction_11 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut217 happy_x_1 of { happy_var_1 -> + case happyOut12 happy_x_2 of { happy_var_2 -> + case happyOut218 happy_x_3 of { happy_var_3 -> + happyIn11 + (let (os,ss,ml) = happy_var_2 in (os,happy_var_1:ss++[happy_var_3],happy_var_1 <^^> happy_var_3) + )}}} + +happyReduce_12 = happySpecReduce_3 3# happyReduction_12 +happyReduction_12 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut13 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> + case happyOut12 happy_x_3 of { happy_var_3 -> + happyIn12 + (let (os,ss,ml) = happy_var_3 in (happy_var_1 : os, happy_var_2 : ss, Just $ ann happy_var_1 <++> nIS happy_var_2 <+?> ml) + )}}} + +happyReduce_13 = happySpecReduce_0 3# happyReduction_13 +happyReduction_13 = happyIn12 + (([],[],Nothing) + ) + +happyReduce_14 = happyReduce 4# 4# happyReduction_14 +happyReduction_14 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LANGUAGE) -> + case happyOut14 happy_x_2 of { happy_var_2 -> + case happyOut21 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> + happyIn13 + (LanguagePragma (happy_var_1 <^^> happy_var_4 <** (happy_var_1:snd happy_var_2 ++ reverse happy_var_3 ++ [happy_var_4])) (fst happy_var_2) + ) `HappyStk` happyRest}}}} + +happyReduce_15 = happySpecReduce_3 4# happyReduction_15 +happyReduction_15 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut21 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> + happyIn13 + (let Loc l (INCLUDE s) = happy_var_1 in IncludePragma (l <^^> happy_var_3 <** (l:reverse happy_var_2 ++ [happy_var_3])) s + )}}} + +happyReduce_16 = happySpecReduce_3 4# happyReduction_16 +happyReduction_16 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut21 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> + happyIn13 + (let Loc l (OPTIONS (mc, s)) = happy_var_1 + in OptionsPragma (l <^^> happy_var_3 <** (l:reverse happy_var_2 ++ [happy_var_3])) (readTool mc) s + )}}} + +happyReduce_17 = happySpecReduce_3 4# happyReduction_17 +happyReduction_17 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut21 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> + happyIn13 + (let Loc l (CFILES s) = happy_var_1 + in CFilesPragma (l <^^> happy_var_3 <** (l:reverse happy_var_2 ++ [happy_var_3])) s + )}}} + +happyReduce_18 = happySpecReduce_3 5# happyReduction_18 +happyReduction_18 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut208 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut14 happy_x_3 of { happy_var_3 -> + happyIn14 + ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3) + )}}} + +happyReduce_19 = happySpecReduce_1 5# happyReduction_19 +happyReduction_19 happy_x_1 + = case happyOut208 happy_x_1 of { happy_var_1 -> + happyIn14 + (([happy_var_1],[]) + )} + +happyReduce_20 = happySpecReduce_2 6# happyReduction_20 +happyReduction_20 happy_x_2 + happy_x_1 + = case happyOut16 happy_x_1 of { happy_var_1 -> + case happyOut18 happy_x_2 of { happy_var_2 -> + happyIn15 + (let (is,ds,ss1,inf) = happy_var_2 + in \os ss l -> Module (l <++> inf <** (ss ++ ss1)) happy_var_1 os is ds + )}} + +happyReduce_21 = happyReduce 5# 7# happyReduction_21 +happyReduction_21 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> + case happyOut219 happy_x_2 of { happy_var_2 -> + case happyOut17 happy_x_3 of { happy_var_3 -> + case happyOut22 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Where) -> + happyIn16 + (Just $ ModuleHead (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 happy_var_3 happy_var_4 + ) `HappyStk` happyRest}}}}} + +happyReduce_22 = happySpecReduce_0 7# happyReduction_22 +happyReduction_22 = happyIn16 + (Nothing + ) + +happyReduce_23 = happySpecReduce_3 8# happyReduction_23 +happyReduction_23 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 DEPRECATED) -> + case happyOutTok happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> + happyIn17 + (let Loc l (StringTok (s,_)) = happy_var_2 in Just $ DeprText (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) s + )}}} + +happyReduce_24 = happySpecReduce_3 8# happyReduction_24 +happyReduction_24 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 WARNING) -> + case happyOutTok happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> + happyIn17 + (let Loc l (StringTok (s,_)) = happy_var_2 in Just $ WarnText (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) s + )}}} + +happyReduce_25 = happySpecReduce_0 8# happyReduction_25 +happyReduction_25 = happyIn17 + (Nothing + ) + +happyReduce_26 = happySpecReduce_3 9# happyReduction_26 +happyReduction_26 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> + case happyOut19 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> + happyIn18 + (let (is,ds,ss) = happy_var_2 in (is,ds,happy_var_1:ss ++ [happy_var_3], happy_var_1 <^^> happy_var_3) + )}}} + +happyReduce_27 = happySpecReduce_3 9# happyReduction_27 +happyReduction_27 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut217 happy_x_1 of { happy_var_1 -> + case happyOut19 happy_x_2 of { happy_var_2 -> + case happyOut218 happy_x_3 of { happy_var_3 -> + happyIn18 + (let (is,ds,ss) = happy_var_2 in (is,ds,happy_var_1:ss ++ [happy_var_3], happy_var_1 <^^> happy_var_3) + )}}} + +happyReduce_28 = happyReduce 4# 10# happyReduction_28 +happyReduction_28 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut21 happy_x_1 of { happy_var_1 -> + case happyOut27 happy_x_2 of { happy_var_2 -> + case happyOut20 happy_x_3 of { happy_var_3 -> + case happyOut44 happy_x_4 of { happy_var_4 -> + happyIn19 + ((reverse (fst happy_var_2), fst happy_var_4, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3 ++ snd happy_var_4) + ) `HappyStk` happyRest}}}} + +happyReduce_29 = happySpecReduce_2 10# happyReduction_29 +happyReduction_29 happy_x_2 + happy_x_1 + = case happyOut21 happy_x_1 of { happy_var_1 -> + case happyOut44 happy_x_2 of { happy_var_2 -> + happyIn19 + (([], fst happy_var_2, reverse happy_var_1 ++ snd happy_var_2) + )}} + +happyReduce_30 = happySpecReduce_3 10# happyReduction_30 +happyReduction_30 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut21 happy_x_1 of { happy_var_1 -> + case happyOut27 happy_x_2 of { happy_var_2 -> + case happyOut21 happy_x_3 of { happy_var_3 -> + happyIn19 + ((reverse (fst happy_var_2), [], reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3) + )}}} + +happyReduce_31 = happySpecReduce_1 10# happyReduction_31 +happyReduction_31 happy_x_1 + = case happyOut21 happy_x_1 of { happy_var_1 -> + happyIn19 + (([], [], reverse happy_var_1) + )} + +happyReduce_32 = happySpecReduce_2 11# happyReduction_32 +happyReduction_32 happy_x_2 + happy_x_1 + = case happyOut21 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> + happyIn20 + (happy_var_2 : happy_var_1 + )}} + +happyReduce_33 = happySpecReduce_1 12# happyReduction_33 +happyReduction_33 happy_x_1 + = case happyOut20 happy_x_1 of { happy_var_1 -> + happyIn21 + (happy_var_1 + )} + +happyReduce_34 = happySpecReduce_0 12# happyReduction_34 +happyReduction_34 = happyIn21 + ([] + ) + +happyReduce_35 = happySpecReduce_1 13# happyReduction_35 +happyReduction_35 happy_x_1 + = case happyOut23 happy_x_1 of { happy_var_1 -> + happyIn22 + (Just happy_var_1 + )} + +happyReduce_36 = happySpecReduce_0 13# happyReduction_36 +happyReduction_36 = happyIn22 + (Nothing + ) + +happyReduce_37 = happyReduce 4# 14# happyReduction_37 +happyReduction_37 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut25 happy_x_2 of { happy_var_2 -> + case happyOut24 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> + happyIn23 + (ExportSpecList (happy_var_1 <^^> happy_var_4 <** (happy_var_1:reverse (snd happy_var_2) ++ happy_var_3 ++ [happy_var_4])) (reverse (fst happy_var_2)) + ) `HappyStk` happyRest}}}} + +happyReduce_38 = happySpecReduce_3 14# happyReduction_38 +happyReduction_38 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut24 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn23 + (ExportSpecList (happy_var_1 <^^> happy_var_3 <** (happy_var_1:happy_var_2++[happy_var_3])) [] + )}}} + +happyReduce_39 = happySpecReduce_1 15# happyReduction_39 +happyReduction_39 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Comma) -> + happyIn24 + ([happy_var_1] + )} + +happyReduce_40 = happySpecReduce_0 15# happyReduction_40 +happyReduction_40 = happyIn24 + ([ ] + ) + +happyReduce_41 = happySpecReduce_3 16# happyReduction_41 +happyReduction_41 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut25 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut26 happy_x_3 of { happy_var_3 -> + happyIn25 + ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) + )}}} + +happyReduce_42 = happySpecReduce_1 16# happyReduction_42 +happyReduction_42 happy_x_1 + = case happyOut26 happy_x_1 of { happy_var_1 -> + happyIn25 + (([happy_var_1],[]) + )} + +happyReduce_43 = happySpecReduce_1 17# happyReduction_43 +happyReduction_43 happy_x_1 + = case happyOut190 happy_x_1 of { happy_var_1 -> + happyIn26 + (EVar (ann happy_var_1) happy_var_1 + )} + +happyReduce_44 = happySpecReduce_1 17# happyReduction_44 +happyReduction_44 happy_x_1 + = case happyOut221 happy_x_1 of { happy_var_1 -> + happyIn26 + (EAbs (ann happy_var_1) happy_var_1 + )} + +happyReduce_45 = happyReduce 4# 17# happyReduction_45 +happyReduction_45 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut221 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 DotDot) -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> + happyIn26 + (EThingAll (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_1 + ) `HappyStk` happyRest}}}} + +happyReduce_46 = happySpecReduce_3 17# happyReduction_46 +happyReduction_46 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut221 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn26 + (EThingWith (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]) happy_var_1 [] + )}}} + +happyReduce_47 = happyReduce 4# 17# happyReduction_47 +happyReduction_47 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut221 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> + case happyOut38 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> + happyIn26 + (EThingWith (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) happy_var_1 (reverse (fst happy_var_3)) + ) `HappyStk` happyRest}}}} + +happyReduce_48 = happySpecReduce_2 17# happyReduction_48 +happyReduction_48 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> + case happyOut219 happy_x_2 of { happy_var_2 -> + happyIn26 + (EModuleContents (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 + )}} + +happyReduce_49 = happySpecReduce_3 18# happyReduction_49 +happyReduction_49 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut27 happy_x_1 of { happy_var_1 -> + case happyOut20 happy_x_2 of { happy_var_2 -> + case happyOut28 happy_x_3 of { happy_var_3 -> + happyIn27 + ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) + )}}} + +happyReduce_50 = happySpecReduce_1 18# happyReduction_50 +happyReduction_50 happy_x_1 + = case happyOut28 happy_x_1 of { happy_var_1 -> + happyIn27 + (([happy_var_1],[]) + )} + +happyReduce_51 = happyReduce 7# 19# happyReduction_51 +happyReduction_51 (happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Import) -> + case happyOut29 happy_x_2 of { happy_var_2 -> + case happyOut30 happy_x_3 of { happy_var_3 -> + case happyOut31 happy_x_4 of { happy_var_4 -> + case happyOut219 happy_x_5 of { happy_var_5 -> + case happyOut32 happy_x_6 of { happy_var_6 -> + case happyOut33 happy_x_7 of { happy_var_7 -> + happyIn28 + (let { (mmn,ss,ml) = happy_var_6 ; + l = nIS happy_var_1 <++> ann happy_var_5 <+?> ml <+?> (fmap ann) happy_var_7 <** (happy_var_1:snd happy_var_2 ++ snd happy_var_3 ++ snd happy_var_4 ++ ss)} + in ImportDecl l happy_var_5 (fst happy_var_3) (fst happy_var_2) (fst happy_var_4) mmn happy_var_7 + ) `HappyStk` happyRest}}}}}}} + +happyReduce_52 = happySpecReduce_2 20# happyReduction_52 +happyReduction_52 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 SOURCE) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> + happyIn29 + ((True,[happy_var_1,happy_var_2]) + )}} + +happyReduce_53 = happySpecReduce_0 20# happyReduction_53 +happyReduction_53 = happyIn29 + ((False,[]) + ) + +happyReduce_54 = happySpecReduce_1 21# happyReduction_54 +happyReduction_54 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> + happyIn30 + ((True,[happy_var_1]) + )} + +happyReduce_55 = happySpecReduce_0 21# happyReduction_55 +happyReduction_55 = happyIn30 + ((False, []) + ) + +happyReduce_56 = happyMonadReduce 1# 22# happyReduction_56 +happyReduction_56 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( do { checkEnabled PackageImports ; + let { Loc l (StringTok (s,_)) = happy_var_1 } ; + return $ (Just s,[l]) })} + ) (\r -> happyReturn (happyIn31 r)) + +happyReduce_57 = happySpecReduce_0 22# happyReduction_57 +happyReduction_57 = happyIn31 + ((Nothing,[]) + ) + +happyReduce_58 = happySpecReduce_2 23# happyReduction_58 +happyReduction_58 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> + case happyOut219 happy_x_2 of { happy_var_2 -> + happyIn32 + ((Just happy_var_2,[happy_var_1],Just (nIS happy_var_1 <++> ann happy_var_2)) + )}} + +happyReduce_59 = happySpecReduce_0 23# happyReduction_59 +happyReduction_59 = happyIn32 + ((Nothing,[],Nothing) + ) + +happyReduce_60 = happySpecReduce_1 24# happyReduction_60 +happyReduction_60 happy_x_1 + = case happyOut34 happy_x_1 of { happy_var_1 -> + happyIn33 + (Just happy_var_1 + )} + +happyReduce_61 = happySpecReduce_0 24# happyReduction_61 +happyReduction_61 = happyIn33 + (Nothing + ) + +happyReduce_62 = happyReduce 5# 25# happyReduction_62 +happyReduction_62 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut35 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> + case happyOut36 happy_x_3 of { happy_var_3 -> + case happyOut24 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> + happyIn34 + (let {(b,ml,s) = happy_var_1 ; + l = (ml <?+> (happy_var_2 <^^> happy_var_5)) <** (s ++ happy_var_2:reverse (snd happy_var_3) ++ happy_var_4 ++ [happy_var_5])} + in ImportSpecList l b (reverse (fst happy_var_3)) + ) `HappyStk` happyRest}}}}} + +happyReduce_63 = happyReduce 4# 25# happyReduction_63 +happyReduction_63 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut35 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> + case happyOut24 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> + happyIn34 + (let {(b,ml,s) = happy_var_1 ; l = (ml <?+> (happy_var_2 <^^> happy_var_4)) <** (s ++ happy_var_2:happy_var_3 ++ [happy_var_4])} + in ImportSpecList l b [] + ) `HappyStk` happyRest}}}} + +happyReduce_64 = happySpecReduce_1 26# happyReduction_64 +happyReduction_64 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> + happyIn35 + ((True,Just (nIS happy_var_1),[happy_var_1]) + )} + +happyReduce_65 = happySpecReduce_0 26# happyReduction_65 +happyReduction_65 = happyIn35 + ((False,Nothing,[]) + ) + +happyReduce_66 = happySpecReduce_3 27# happyReduction_66 +happyReduction_66 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut36 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut37 happy_x_3 of { happy_var_3 -> + happyIn36 + ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) + )}}} + +happyReduce_67 = happySpecReduce_1 27# happyReduction_67 +happyReduction_67 happy_x_1 + = case happyOut37 happy_x_1 of { happy_var_1 -> + happyIn36 + (([happy_var_1],[]) + )} + +happyReduce_68 = happySpecReduce_1 28# happyReduction_68 +happyReduction_68 happy_x_1 + = case happyOut188 happy_x_1 of { happy_var_1 -> + happyIn37 + (IVar (ann happy_var_1) happy_var_1 + )} + +happyReduce_69 = happySpecReduce_1 28# happyReduction_69 +happyReduction_69 happy_x_1 + = case happyOut220 happy_x_1 of { happy_var_1 -> + happyIn37 + (IAbs (ann happy_var_1) happy_var_1 + )} + +happyReduce_70 = happyReduce 4# 28# happyReduction_70 +happyReduction_70 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut220 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 DotDot) -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> + happyIn37 + (IThingAll (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_1 + ) `HappyStk` happyRest}}}} + +happyReduce_71 = happySpecReduce_3 28# happyReduction_71 +happyReduction_71 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut220 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn37 + (IThingWith (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]) happy_var_1 [] + )}}} + +happyReduce_72 = happyReduce 4# 28# happyReduction_72 +happyReduction_72 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut220 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> + case happyOut38 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> + happyIn37 + (IThingWith (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) happy_var_1 (reverse (fst happy_var_3)) + ) `HappyStk` happyRest}}}} + +happyReduce_73 = happySpecReduce_3 29# happyReduction_73 +happyReduction_73 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut38 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut39 happy_x_3 of { happy_var_3 -> + happyIn38 + ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) + )}}} + +happyReduce_74 = happySpecReduce_1 29# happyReduction_74 +happyReduction_74 happy_x_1 + = case happyOut39 happy_x_1 of { happy_var_1 -> + happyIn38 + (([happy_var_1],[]) + )} + +happyReduce_75 = happySpecReduce_1 30# happyReduction_75 +happyReduction_75 happy_x_1 + = case happyOut188 happy_x_1 of { happy_var_1 -> + happyIn39 + (VarName (ann happy_var_1) happy_var_1 + )} + +happyReduce_76 = happySpecReduce_1 30# happyReduction_76 +happyReduction_76 happy_x_1 + = case happyOut192 happy_x_1 of { happy_var_1 -> + happyIn39 + (ConName (ann happy_var_1) happy_var_1 + )} + +happyReduce_77 = happySpecReduce_3 31# happyReduction_77 +happyReduction_77 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut42 happy_x_1 of { happy_var_1 -> + case happyOut41 happy_x_2 of { happy_var_2 -> + case happyOut43 happy_x_3 of { happy_var_3 -> + happyIn40 + (let (ops,ss,l) = happy_var_3 + in InfixDecl (ann happy_var_1 <++> l <** (snd happy_var_2 ++ reverse ss)) happy_var_1 (fst happy_var_2) (reverse ops) + )}}} + +happyReduce_78 = happySpecReduce_0 32# happyReduction_78 +happyReduction_78 = happyIn41 + ((Nothing, []) + ) + +happyReduce_79 = happyMonadReduce 1# 32# happyReduction_79 +happyReduction_79 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + ( let Loc l (IntTok (i,_)) = happy_var_1 in checkPrec i >>= \i -> return (Just i, [l]))} + ) (\r -> happyReturn (happyIn41 r)) + +happyReduce_80 = happySpecReduce_1 33# happyReduction_80 +happyReduction_80 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Infix) -> + happyIn42 + (AssocNone $ nIS happy_var_1 + )} + +happyReduce_81 = happySpecReduce_1 33# happyReduction_81 +happyReduction_81 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixL) -> + happyIn42 + (AssocLeft $ nIS happy_var_1 + )} + +happyReduce_82 = happySpecReduce_1 33# happyReduction_82 +happyReduction_82 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixR) -> + happyIn42 + (AssocRight $ nIS happy_var_1 + )} + +happyReduce_83 = happySpecReduce_3 34# happyReduction_83 +happyReduction_83 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut43 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut199 happy_x_3 of { happy_var_3 -> + happyIn43 + (let (ops,ss,l) = happy_var_1 in (happy_var_3 : ops, happy_var_2 : ss, l <++> ann happy_var_3) + )}}} + +happyReduce_84 = happySpecReduce_1 34# happyReduction_84 +happyReduction_84 happy_x_1 + = case happyOut199 happy_x_1 of { happy_var_1 -> + happyIn43 + (([happy_var_1],[],ann happy_var_1) + )} + +happyReduce_85 = happyMonadReduce 2# 35# happyReduction_85 +happyReduction_85 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut45 happy_x_1 of { happy_var_1 -> + case happyOut21 happy_x_2 of { happy_var_2 -> + ( checkRevDecls (fst happy_var_1) >>= \ds -> return (ds, snd happy_var_1 ++ reverse happy_var_2))}} + ) (\r -> happyReturn (happyIn44 r)) + +happyReduce_86 = happySpecReduce_3 36# happyReduction_86 +happyReduction_86 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut45 happy_x_1 of { happy_var_1 -> + case happyOut20 happy_x_2 of { happy_var_2 -> + case happyOut46 happy_x_3 of { happy_var_3 -> + happyIn45 + ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) + )}}} + +happyReduce_87 = happySpecReduce_1 36# happyReduction_87 +happyReduction_87 happy_x_1 + = case happyOut46 happy_x_1 of { happy_var_1 -> + happyIn45 + (([happy_var_1],[]) + )} + +happyReduce_88 = happyMonadReduce 4# 37# happyReduction_88 +happyReduction_88 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> + case happyOut72 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> + case happyOut82 happy_x_4 of { happy_var_4 -> + ( do { dh <- checkSimpleType happy_var_2; + let {l = nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]}; + return (TypeDecl l dh happy_var_4) })}}}} + ) (\r -> happyReturn (happyIn46 r)) + +happyReduce_89 = happyMonadReduce 4# 37# happyReduction_89 +happyReduction_89 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Family) -> + case happyOut74 happy_x_3 of { happy_var_3 -> + case happyOut116 happy_x_4 of { happy_var_4 -> + ( do { dh <- checkSimpleType happy_var_3; + let {l = nIS happy_var_1 <++> ann happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** (happy_var_1:happy_var_2:snd happy_var_4)}; + return (TypeFamDecl l dh (fst happy_var_4)) })}}}} + ) (\r -> happyReturn (happyIn46 r)) + +happyReduce_90 = happyMonadReduce 5# 37# happyReduction_90 +happyReduction_90 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> + case happyOut71 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 Equals) -> + case happyOut82 happy_x_5 of { happy_var_5 -> + ( do { -- no checkSimpleType happy_var_4 since dtype may contain type patterns + checkEnabled TypeFamilies ; + let {l = nIS happy_var_1 <++> ann happy_var_5 <** [happy_var_1,happy_var_2,happy_var_4]}; + return (TypeInsDecl l happy_var_3 happy_var_5) })}}}}} + ) (\r -> happyReturn (happyIn46 r)) + +happyReduce_91 = happyMonadReduce 4# 37# happyReduction_91 +happyReduction_91 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> + case happyOut83 happy_x_2 of { happy_var_2 -> + case happyOut98 happy_x_3 of { happy_var_3 -> + case happyOut110 happy_x_4 of { happy_var_4 -> + ( do { (cs,dh) <- checkDataHeader happy_var_2; + let { (qds,ss,minf) = happy_var_3; + l = happy_var_1 <> happy_var_2 <+?> minf <+?> fmap ann happy_var_4 <** ss}; + checkDataOrNew happy_var_1 qds; + return (DataDecl l happy_var_1 cs dh (reverse qds) happy_var_4) })}}}} + ) (\r -> happyReturn (happyIn46 r)) + +happyReduce_92 = happyMonadReduce 5# 37# happyReduction_92 +happyReduction_92 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> + case happyOut83 happy_x_2 of { happy_var_2 -> + case happyOut116 happy_x_3 of { happy_var_3 -> + case happyOut94 happy_x_4 of { happy_var_4 -> + case happyOut110 happy_x_5 of { happy_var_5 -> + ( do { (cs,dh) <- checkDataHeader happy_var_2; + let { (gs,ss,minf) = happy_var_4; + l = ann happy_var_1 <+?> minf <+?> fmap ann happy_var_5 <** (snd happy_var_3 ++ ss)}; + checkDataOrNew happy_var_1 gs; + return (GDataDecl l happy_var_1 cs dh (fst happy_var_3) (reverse gs) happy_var_5) })}}}}} + ) (\r -> happyReturn (happyIn46 r)) + +happyReduce_93 = happyMonadReduce 4# 37# happyReduction_93 +happyReduction_93 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Family) -> + case happyOut83 happy_x_3 of { happy_var_3 -> + case happyOut116 happy_x_4 of { happy_var_4 -> + ( do { (cs,dh) <- checkDataHeader happy_var_3; + let {l = nIS happy_var_1 <++> ann happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** (happy_var_1:happy_var_2:snd happy_var_4)}; + return (DataFamDecl l cs dh (fst happy_var_4)) })}}}} + ) (\r -> happyReturn (happyIn46 r)) + +happyReduce_94 = happyMonadReduce 5# 37# happyReduction_94 +happyReduction_94 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> + case happyOut82 happy_x_3 of { happy_var_3 -> + case happyOut98 happy_x_4 of { happy_var_4 -> + case happyOut110 happy_x_5 of { happy_var_5 -> + ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; + checkEnabled TypeFamilies ; + let { (qds,ss,minf) = happy_var_4 ; + l = happy_var_1 <> happy_var_3 <+?> minf <+?> fmap ann happy_var_5 <** happy_var_2:ss }; + checkDataOrNew happy_var_1 qds; + return (DataInsDecl l happy_var_1 happy_var_3 (reverse qds) happy_var_5) })}}}}} + ) (\r -> happyReturn (happyIn46 r)) + +happyReduce_95 = happyMonadReduce 6# 37# happyReduction_95 +happyReduction_95 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> + case happyOut82 happy_x_3 of { happy_var_3 -> + case happyOut116 happy_x_4 of { happy_var_4 -> + case happyOut94 happy_x_5 of { happy_var_5 -> + case happyOut110 happy_x_6 of { happy_var_6 -> + ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; + checkEnabled TypeFamilies ; + let {(gs,ss,minf) = happy_var_5; + l = ann happy_var_1 <+?> minf <+?> fmap ann happy_var_6 <** (happy_var_2:snd happy_var_4 ++ ss)}; + checkDataOrNew happy_var_1 gs; + return (GDataInsDecl l happy_var_1 happy_var_3 (fst happy_var_4) (reverse gs) happy_var_6) })}}}}}} + ) (\r -> happyReturn (happyIn46 r)) + +happyReduce_96 = happyMonadReduce 4# 37# happyReduction_96 +happyReduction_96 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Class) -> + case happyOut83 happy_x_2 of { happy_var_2 -> + case happyOut91 happy_x_3 of { happy_var_3 -> + case happyOut117 happy_x_4 of { happy_var_4 -> + ( do { (cs,dh) <- checkClassHeader happy_var_2; + let {(fds,ss1,minf1) = happy_var_3;(mcs,ss2,minf2) = happy_var_4} ; + let { l = nIS happy_var_1 <++> ann happy_var_2 <+?> minf1 <+?> minf2 <** (happy_var_1:ss1 ++ ss2)} ; + return (ClassDecl l cs dh fds mcs) })}}}} + ) (\r -> happyReturn (happyIn46 r)) + +happyReduce_97 = happyMonadReduce 3# 37# happyReduction_97 +happyReduction_97 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Instance) -> + case happyOut83 happy_x_2 of { happy_var_2 -> + case happyOut122 happy_x_3 of { happy_var_3 -> + ( do { (cs,ih) <- checkInstHeader happy_var_2; + let {(mis,ss,minf) = happy_var_3}; + return (InstDecl (nIS happy_var_1 <++> ann happy_var_2 <+?> minf <** (happy_var_1:ss)) cs ih mis) })}}} + ) (\r -> happyReturn (happyIn46 r)) + +happyReduce_98 = happyMonadReduce 3# 37# happyReduction_98 +happyReduction_98 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> + case happyOut83 happy_x_3 of { happy_var_3 -> + ( do { checkEnabled StandaloneDeriving ; + (cs, ih) <- checkInstHeader happy_var_3; + let {l = nIS happy_var_1 <++> ann happy_var_3 <** [happy_var_1,happy_var_2]}; + return (DerivDecl l cs ih) })}}} + ) (\r -> happyReturn (happyIn46 r)) + +happyReduce_99 = happyReduce 4# 37# happyReduction_99 +happyReduction_99 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Default) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> + case happyOut48 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> + happyIn46 + (DefaultDecl (happy_var_1 <^^> happy_var_4 <** (happy_var_1:happy_var_2 : snd happy_var_3 ++ [happy_var_4])) (fst happy_var_3) + ) `HappyStk` happyRest}}}} + +happyReduce_100 = happyMonadReduce 1# 37# happyReduction_100 +happyReduction_100 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut136 happy_x_1 of { happy_var_1 -> + ( checkEnabled TemplateHaskell >> checkExpr happy_var_1 >>= \e -> return (SpliceDecl (ann e) e))} + ) (\r -> happyReturn (happyIn46 r)) + +happyReduce_101 = happyReduce 5# 37# happyReduction_101 +happyReduction_101 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Import) -> + case happyOut58 happy_x_3 of { happy_var_3 -> + case happyOut59 happy_x_4 of { happy_var_4 -> + case happyOut60 happy_x_5 of { happy_var_5 -> + happyIn46 + (let (s,n,t,ss) = happy_var_5 in ForImp (nIS happy_var_1 <++> ann t <** (happy_var_1:happy_var_2:ss)) happy_var_3 happy_var_4 s n t + ) `HappyStk` happyRest}}}}} + +happyReduce_102 = happyReduce 4# 37# happyReduction_102 +happyReduction_102 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Export) -> + case happyOut58 happy_x_3 of { happy_var_3 -> + case happyOut60 happy_x_4 of { happy_var_4 -> + happyIn46 + (let (s,n,t,ss) = happy_var_4 in ForExp (nIS happy_var_1 <++> ann t <** (happy_var_1:happy_var_2:ss)) happy_var_3 s n t + ) `HappyStk` happyRest}}}} + +happyReduce_103 = happySpecReduce_3 37# happyReduction_103 +happyReduction_103 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 RULES) -> + case happyOut61 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> + happyIn46 + (RulePragmaDecl (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ reverse happy_var_2 + )}}} + +happyReduce_104 = happySpecReduce_3 37# happyReduction_104 +happyReduction_104 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 DEPRECATED) -> + case happyOut67 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> + happyIn46 + (DeprPragmaDecl (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) $ reverse (fst happy_var_2) + )}}} + +happyReduce_105 = happySpecReduce_3 37# happyReduction_105 +happyReduction_105 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 WARNING) -> + case happyOut67 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> + happyIn46 + (WarnPragmaDecl (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) $ reverse (fst happy_var_2) + )}}} + +happyReduce_106 = happySpecReduce_1 37# happyReduction_106 +happyReduction_106 happy_x_1 + = case happyOut51 happy_x_1 of { happy_var_1 -> + happyIn46 + (happy_var_1 + )} + +happyReduce_107 = happySpecReduce_1 38# happyReduction_107 +happyReduction_107 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> + happyIn47 + (DataType $ nIS happy_var_1 + )} + +happyReduce_108 = happySpecReduce_1 38# happyReduction_108 +happyReduction_108 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_NewType) -> + happyIn47 + (NewType $ nIS happy_var_1 + )} + +happyReduce_109 = happyMonadReduce 1# 39# happyReduction_109 +happyReduction_109 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut85 happy_x_1 of { happy_var_1 -> + ( do { ts <- mapM checkType (fst happy_var_1); + return $ (reverse ts, reverse (snd happy_var_1)) })} + ) (\r -> happyReturn (happyIn48 r)) + +happyReduce_110 = happySpecReduce_1 39# happyReduction_110 +happyReduction_110 happy_x_1 + = case happyOut73 happy_x_1 of { happy_var_1 -> + happyIn48 + (([happy_var_1],[]) + )} + +happyReduce_111 = happySpecReduce_0 39# happyReduction_111 +happyReduction_111 = happyIn48 + (([],[]) + ) + +happyReduce_112 = happyMonadReduce 3# 40# happyReduction_112 +happyReduction_112 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut21 happy_x_1 of { happy_var_1 -> + case happyOut50 happy_x_2 of { happy_var_2 -> + case happyOut21 happy_x_3 of { happy_var_3 -> + ( checkRevDecls (fst happy_var_2) >>= \ds -> return (ds, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}} + ) (\r -> happyReturn (happyIn49 r)) + +happyReduce_113 = happySpecReduce_1 40# happyReduction_113 +happyReduction_113 happy_x_1 + = case happyOut21 happy_x_1 of { happy_var_1 -> + happyIn49 + (([],reverse happy_var_1) + )} + +happyReduce_114 = happySpecReduce_3 41# happyReduction_114 +happyReduction_114 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut50 happy_x_1 of { happy_var_1 -> + case happyOut20 happy_x_2 of { happy_var_2 -> + case happyOut51 happy_x_3 of { happy_var_3 -> + happyIn50 + ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) + )}}} + +happyReduce_115 = happySpecReduce_1 41# happyReduction_115 +happyReduction_115 happy_x_1 + = case happyOut51 happy_x_1 of { happy_var_1 -> + happyIn50 + (([happy_var_1],[]) + )} + +happyReduce_116 = happySpecReduce_1 42# happyReduction_116 +happyReduction_116 happy_x_1 + = case happyOut53 happy_x_1 of { happy_var_1 -> + happyIn51 + (happy_var_1 + )} + +happyReduce_117 = happySpecReduce_1 42# happyReduction_117 +happyReduction_117 happy_x_1 + = case happyOut40 happy_x_1 of { happy_var_1 -> + happyIn51 + (happy_var_1 + )} + +happyReduce_118 = happySpecReduce_1 42# happyReduction_118 +happyReduction_118 happy_x_1 + = case happyOut128 happy_x_1 of { happy_var_1 -> + happyIn51 + (happy_var_1 + )} + +happyReduce_119 = happySpecReduce_3 43# happyReduction_119 +happyReduction_119 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> + case happyOut49 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> + happyIn52 + (BDecls (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) (fst happy_var_2) + )}}} + +happyReduce_120 = happySpecReduce_3 43# happyReduction_120 +happyReduction_120 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut217 happy_x_1 of { happy_var_1 -> + case happyOut49 happy_x_2 of { happy_var_2 -> + case happyOut218 happy_x_3 of { happy_var_3 -> + happyIn52 + (BDecls (happy_var_1 <^^> happy_var_3 <** (happy_var_1:snd happy_var_2++[happy_var_3])) (fst happy_var_2) + )}}} + +happyReduce_121 = happyMonadReduce 3# 44# happyReduction_121 +happyReduction_121 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut138 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> + case happyOut82 happy_x_3 of { happy_var_3 -> + ( do { v <- checkSigVar happy_var_1; + return $ TypeSig (happy_var_1 <> happy_var_3 <** [happy_var_2]) [v] happy_var_3 })}}} + ) (\r -> happyReturn (happyIn53 r)) + +happyReduce_122 = happyMonadReduce 5# 44# happyReduction_122 +happyReduction_122 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut138 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut57 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleColon) -> + case happyOut82 happy_x_5 of { happy_var_5 -> + ( do { v <- checkSigVar happy_var_1; + let {(vs,ss,_) = happy_var_3 ; l = happy_var_1 <> happy_var_5 <** (happy_var_2 : reverse ss ++ [happy_var_4]) } ; + return $ TypeSig l (v : reverse vs) happy_var_5 })}}}}} + ) (\r -> happyReturn (happyIn53 r)) + +happyReduce_123 = happyReduce 4# 44# happyReduction_123 +happyReduction_123 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut63 happy_x_2 of { happy_var_2 -> + case happyOut190 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> + happyIn53 + (let Loc l (INLINE s) = happy_var_1 in InlineSig (l <^^> happy_var_4 <** [l,happy_var_4]) s happy_var_2 happy_var_3 + ) `HappyStk` happyRest}}}} + +happyReduce_124 = happyReduce 5# 44# happyReduction_124 +happyReduction_124 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 SPECIALISE) -> + case happyOut190 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> + case happyOut54 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 PragmaEnd) -> + happyIn53 + (SpecSig (happy_var_1 <^^> happy_var_5 <** (happy_var_1:happy_var_3 : snd happy_var_4 ++ [happy_var_5])) happy_var_2 (fst happy_var_4) + ) `HappyStk` happyRest}}}}} + +happyReduce_125 = happyReduce 6# 44# happyReduction_125 +happyReduction_125 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut63 happy_x_2 of { happy_var_2 -> + case happyOut190 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleColon) -> + case happyOut54 happy_x_5 of { happy_var_5 -> + case happyOutTok happy_x_6 of { (Loc happy_var_6 PragmaEnd) -> + happyIn53 + (let Loc l (SPECIALISE_INLINE s) = happy_var_1 + in SpecInlineSig (l <^^> happy_var_6 <** (l:happy_var_4:snd happy_var_5++[happy_var_6])) s happy_var_2 happy_var_3 (fst happy_var_5) + ) `HappyStk` happyRest}}}}}} + +happyReduce_126 = happyMonadReduce 4# 44# happyReduction_126 +happyReduction_126 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 SPECIALISE) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Instance) -> + case happyOut83 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> + ( do { (cs,ih) <- checkInstHeader happy_var_3; + let {l = happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_2,happy_var_4]}; + return $ InstSig l cs ih })}}}} + ) (\r -> happyReturn (happyIn53 r)) + +happyReduce_127 = happySpecReduce_1 45# happyReduction_127 +happyReduction_127 happy_x_1 + = case happyOut55 happy_x_1 of { happy_var_1 -> + happyIn54 + (([happy_var_1],[]) + )} + +happyReduce_128 = happySpecReduce_3 45# happyReduction_128 +happyReduction_128 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut55 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut54 happy_x_3 of { happy_var_3 -> + happyIn54 + ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3) + )}}} + +happyReduce_129 = happyMonadReduce 1# 46# happyReduction_129 +happyReduction_129 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut83 happy_x_1 of { happy_var_1 -> + ( checkType $ mkTyForall (ann happy_var_1) Nothing Nothing happy_var_1)} + ) (\r -> happyReturn (happyIn55 r)) + +happyReduce_130 = happySpecReduce_1 47# happyReduction_130 +happyReduction_130 happy_x_1 + = case happyOut52 happy_x_1 of { happy_var_1 -> + happyIn56 + (happy_var_1 + )} + +happyReduce_131 = happySpecReduce_3 47# happyReduction_131 +happyReduction_131 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> + case happyOut184 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> + happyIn56 + (IPBinds (happy_var_1 <^^> happy_var_3 <** snd happy_var_2) (fst happy_var_2) + )}}} + +happyReduce_132 = happySpecReduce_3 47# happyReduction_132 +happyReduction_132 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut217 happy_x_1 of { happy_var_1 -> + case happyOut184 happy_x_2 of { happy_var_2 -> + case happyOut218 happy_x_3 of { happy_var_3 -> + happyIn56 + (IPBinds (happy_var_1 <^^> happy_var_3 <** snd happy_var_2) (fst happy_var_2) + )}}} + +happyReduce_133 = happySpecReduce_3 48# happyReduction_133 +happyReduction_133 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut57 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut188 happy_x_3 of { happy_var_3 -> + happyIn57 + (let (ns,ss,l) = happy_var_1 in (happy_var_3 : ns, happy_var_2 : ss, l <++> ann happy_var_3) + )}}} + +happyReduce_134 = happyMonadReduce 1# 48# happyReduction_134 +happyReduction_134 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut190 happy_x_1 of { happy_var_1 -> + ( do { n <- checkUnQual happy_var_1; + return ([n],[],ann n) })} + ) (\r -> happyReturn (happyIn57 r)) + +happyReduce_135 = happySpecReduce_1 49# happyReduction_135 +happyReduction_135 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> + happyIn58 + (StdCall (nIS happy_var_1) + )} + +happyReduce_136 = happySpecReduce_1 49# happyReduction_136 +happyReduction_136 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> + happyIn58 + (CCall (nIS happy_var_1) + )} + +happyReduce_137 = happySpecReduce_1 50# happyReduction_137 +happyReduction_137 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> + happyIn59 + (Just $ PlaySafe (nIS happy_var_1) False + )} + +happyReduce_138 = happySpecReduce_1 50# happyReduction_138 +happyReduction_138 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> + happyIn59 + (Just $ PlayRisky (nIS happy_var_1) + )} + +happyReduce_139 = happySpecReduce_1 50# happyReduction_139 +happyReduction_139 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> + happyIn59 + (Just $ PlaySafe (nIS happy_var_1) True + )} + +happyReduce_140 = happySpecReduce_0 50# happyReduction_140 +happyReduction_140 = happyIn59 + (Nothing + ) + +happyReduce_141 = happyReduce 4# 51# happyReduction_141 +happyReduction_141 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut189 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> + case happyOut71 happy_x_4 of { happy_var_4 -> + happyIn60 + (let Loc l (StringTok (s,_)) = happy_var_1 in (Just s, happy_var_2, happy_var_4, [l,happy_var_3]) + ) `HappyStk` happyRest}}}} + +happyReduce_142 = happySpecReduce_3 51# happyReduction_142 +happyReduction_142 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut189 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> + case happyOut71 happy_x_3 of { happy_var_3 -> + happyIn60 + ((Nothing, happy_var_1, happy_var_3, [happy_var_2]) + )}}} + +happyReduce_143 = happySpecReduce_3 52# happyReduction_143 +happyReduction_143 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut61 happy_x_1 of { happy_var_1 -> + case happyOut62 happy_x_3 of { happy_var_3 -> + happyIn61 + (happy_var_3 : happy_var_1 + )}} + +happyReduce_144 = happySpecReduce_2 52# happyReduction_144 +happyReduction_144 happy_x_2 + happy_x_1 + = case happyOut61 happy_x_1 of { happy_var_1 -> + happyIn61 + (happy_var_1 + )} + +happyReduce_145 = happySpecReduce_1 52# happyReduction_145 +happyReduction_145 happy_x_1 + = case happyOut62 happy_x_1 of { happy_var_1 -> + happyIn61 + ([happy_var_1] + )} + +happyReduce_146 = happySpecReduce_0 52# happyReduction_146 +happyReduction_146 = happyIn61 + ([] + ) + +happyReduce_147 = happyMonadReduce 6# 53# happyReduction_147 +happyReduction_147 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut63 happy_x_2 of { happy_var_2 -> + case happyOut64 happy_x_3 of { happy_var_3 -> + case happyOut136 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 Equals) -> + case happyOut134 happy_x_6 of { happy_var_6 -> + ( do { let {Loc l (StringTok (s,_)) = happy_var_1}; + e <- checkRuleExpr happy_var_4; + return $ Rule (nIS l <++> ann happy_var_6 <** l:snd happy_var_3 ++ [happy_var_5]) s happy_var_2 (fst happy_var_3) e happy_var_6 })}}}}}} + ) (\r -> happyReturn (happyIn62 r)) + +happyReduce_148 = happySpecReduce_0 54# happyReduction_148 +happyReduction_148 = happyIn63 + (Nothing + ) + +happyReduce_149 = happySpecReduce_3 54# happyReduction_149 +happyReduction_149 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> + case happyOutTok happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> + happyIn63 + (let Loc l (IntTok (i,_)) = happy_var_2 in Just $ ActiveFrom (happy_var_1 <^^> happy_var_3 <** [happy_var_1,l,happy_var_3]) (fromInteger i) + )}}} + +happyReduce_150 = happyReduce 4# 54# happyReduction_150 +happyReduction_150 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> + case happyOutTok happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightSquare) -> + happyIn63 + (let Loc l (IntTok (i,_)) = happy_var_3 in Just $ ActiveUntil (happy_var_1 <^^> happy_var_4 <** [happy_var_1,happy_var_2,l,happy_var_4]) (fromInteger i) + ) `HappyStk` happyRest}}}} + +happyReduce_151 = happySpecReduce_0 55# happyReduction_151 +happyReduction_151 = happyIn64 + ((Nothing,[]) + ) + +happyReduce_152 = happySpecReduce_3 55# happyReduction_152 +happyReduction_152 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> + case happyOut65 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> + happyIn64 + ((Just happy_var_2,[happy_var_1,happy_var_3]) + )}}} + +happyReduce_153 = happySpecReduce_1 56# happyReduction_153 +happyReduction_153 happy_x_1 + = case happyOut66 happy_x_1 of { happy_var_1 -> + happyIn65 + ([happy_var_1] + )} + +happyReduce_154 = happySpecReduce_2 56# happyReduction_154 +happyReduction_154 happy_x_2 + happy_x_1 + = case happyOut66 happy_x_1 of { happy_var_1 -> + case happyOut65 happy_x_2 of { happy_var_2 -> + happyIn65 + (happy_var_1 : happy_var_2 + )}} + +happyReduce_155 = happySpecReduce_1 57# happyReduction_155 +happyReduction_155 happy_x_1 + = case happyOut205 happy_x_1 of { happy_var_1 -> + happyIn66 + (RuleVar (ann happy_var_1) happy_var_1 + )} + +happyReduce_156 = happyReduce 5# 57# happyReduction_156 +happyReduction_156 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut205 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> + case happyOut82 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> + happyIn66 + (TypedRuleVar (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4 + ) `HappyStk` happyRest}}}}} + +happyReduce_157 = happySpecReduce_3 58# happyReduction_157 +happyReduction_157 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut67 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> + case happyOut68 happy_x_3 of { happy_var_3 -> + happyIn67 + ((fst happy_var_3 : fst happy_var_1, snd happy_var_1 ++ (happy_var_2:snd happy_var_3)) + )}}} + +happyReduce_158 = happySpecReduce_2 58# happyReduction_158 +happyReduction_158 happy_x_2 + happy_x_1 + = case happyOut67 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 SemiColon) -> + happyIn67 + ((fst happy_var_1, snd happy_var_1 ++ [happy_var_2]) + )}} + +happyReduce_159 = happySpecReduce_1 58# happyReduction_159 +happyReduction_159 happy_x_1 + = case happyOut68 happy_x_1 of { happy_var_1 -> + happyIn67 + (([fst happy_var_1],snd happy_var_1) + )} + +happyReduce_160 = happySpecReduce_0 58# happyReduction_160 +happyReduction_160 = happyIn67 + (([],[]) + ) + +happyReduce_161 = happySpecReduce_2 59# happyReduction_161 +happyReduction_161 happy_x_2 + happy_x_1 + = case happyOut69 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { happy_var_2 -> + happyIn68 + (let Loc l (StringTok (s,_)) = happy_var_2 in ((fst happy_var_1,s),snd happy_var_1 ++ [l]) + )}} + +happyReduce_162 = happySpecReduce_1 60# happyReduction_162 +happyReduction_162 happy_x_1 + = case happyOut70 happy_x_1 of { happy_var_1 -> + happyIn69 + (([happy_var_1],[]) + )} + +happyReduce_163 = happySpecReduce_3 60# happyReduction_163 +happyReduction_163 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut70 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut69 happy_x_3 of { happy_var_3 -> + happyIn69 + ((happy_var_1 : fst happy_var_3, happy_var_2 : snd happy_var_3) + )}}} + +happyReduce_164 = happySpecReduce_1 61# happyReduction_164 +happyReduction_164 happy_x_1 + = case happyOut192 happy_x_1 of { happy_var_1 -> + happyIn70 + (happy_var_1 + )} + +happyReduce_165 = happySpecReduce_1 61# happyReduction_165 +happyReduction_165 happy_x_1 + = case happyOut188 happy_x_1 of { happy_var_1 -> + happyIn70 + (happy_var_1 + )} + +happyReduce_166 = happyMonadReduce 1# 62# happyReduction_166 +happyReduction_166 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut72 happy_x_1 of { happy_var_1 -> + ( checkType happy_var_1)} + ) (\r -> happyReturn (happyIn71 r)) + +happyReduce_167 = happySpecReduce_1 63# happyReduction_167 +happyReduction_167 happy_x_1 + = case happyOut76 happy_x_1 of { happy_var_1 -> + happyIn72 + (happy_var_1 + )} + +happyReduce_168 = happySpecReduce_3 63# happyReduction_168 +happyReduction_168 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut76 happy_x_1 of { happy_var_1 -> + case happyOut81 happy_x_2 of { happy_var_2 -> + case happyOut72 happy_x_3 of { happy_var_3 -> + happyIn72 + (TyInfix (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 + )}}} + +happyReduce_169 = happySpecReduce_3 63# happyReduction_169 +happyReduction_169 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut76 happy_x_1 of { happy_var_1 -> + case happyOut223 happy_x_2 of { happy_var_2 -> + case happyOut72 happy_x_3 of { happy_var_3 -> + happyIn72 + (TyInfix (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 + )}}} + +happyReduce_170 = happySpecReduce_3 63# happyReduction_170 +happyReduction_170 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut76 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> + case happyOut83 happy_x_3 of { happy_var_3 -> + happyIn72 + (TyFun (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_171 = happyMonadReduce 3# 63# happyReduction_171 +happyReduction_171 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> + case happyOut76 happy_x_3 of { happy_var_3 -> + ( do { checkEnabled TypeFamilies ; + let {l = happy_var_1 <> happy_var_3 <** [happy_var_2]}; + return $ TyPred l $ EqualP l happy_var_1 happy_var_3 })}}} + ) (\r -> happyReturn (happyIn72 r)) + +happyReduce_172 = happyMonadReduce 1# 64# happyReduction_172 +happyReduction_172 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut74 happy_x_1 of { happy_var_1 -> + ( checkType happy_var_1)} + ) (\r -> happyReturn (happyIn73 r)) + +happyReduce_173 = happySpecReduce_3 65# happyReduction_173 +happyReduction_173 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut191 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> + case happyOut72 happy_x_3 of { happy_var_3 -> + happyIn74 + (let l = (happy_var_1 <> happy_var_3 <** [happy_var_2]) in TyPred l $ IParam l happy_var_1 happy_var_3 + )}}} + +happyReduce_174 = happySpecReduce_1 65# happyReduction_174 +happyReduction_174 happy_x_1 + = case happyOut72 happy_x_1 of { happy_var_1 -> + happyIn74 + (happy_var_1 + )} + +happyReduce_175 = happyMonadReduce 1# 66# happyReduction_175 +happyReduction_175 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> + ( checkType happy_var_1)} + ) (\r -> happyReturn (happyIn75 r)) + +happyReduce_176 = happySpecReduce_2 67# happyReduction_176 +happyReduction_176 happy_x_2 + happy_x_1 + = case happyOut76 happy_x_1 of { happy_var_1 -> + case happyOut78 happy_x_2 of { happy_var_2 -> + happyIn76 + (TyApp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2 + )}} + +happyReduce_177 = happySpecReduce_1 67# happyReduction_177 +happyReduction_177 happy_x_1 + = case happyOut78 happy_x_1 of { happy_var_1 -> + happyIn76 + (happy_var_1 + )} + +happyReduce_178 = happyMonadReduce 1# 68# happyReduction_178 +happyReduction_178 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut78 happy_x_1 of { happy_var_1 -> + ( checkType happy_var_1)} + ) (\r -> happyReturn (happyIn77 r)) + +happyReduce_179 = happySpecReduce_1 69# happyReduction_179 +happyReduction_179 happy_x_1 + = case happyOut79 happy_x_1 of { happy_var_1 -> + happyIn78 + (TyCon (ann happy_var_1) happy_var_1 + )} + +happyReduce_180 = happySpecReduce_1 69# happyReduction_180 +happyReduction_180 happy_x_1 + = case happyOut222 happy_x_1 of { happy_var_1 -> + happyIn78 + (TyVar (ann happy_var_1) happy_var_1 + )} + +happyReduce_181 = happySpecReduce_3 69# happyReduction_181 +happyReduction_181 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut85 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn78 + (TyTuple (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (happy_var_3:snd happy_var_2))) Boxed (reverse (fst happy_var_2)) + )}}} + +happyReduce_182 = happySpecReduce_3 69# happyReduction_182 +happyReduction_182 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> + case happyOut86 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> + happyIn78 + (TyTuple (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (happy_var_3:snd happy_var_2))) Unboxed (reverse (fst happy_var_2)) + )}}} + +happyReduce_183 = happySpecReduce_3 69# happyReduction_183 +happyReduction_183 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> + case happyOut74 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> + happyIn78 + (TyList (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 + )}}} + +happyReduce_184 = happySpecReduce_3 69# happyReduction_184 +happyReduction_184 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut83 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn78 + (TyParen (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 + )}}} + +happyReduce_185 = happyReduce 5# 69# happyReduction_185 +happyReduction_185 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut83 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> + case happyOut113 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> + happyIn78 + (TyKind (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4 + ) `HappyStk` happyRest}}}}} + +happyReduce_186 = happySpecReduce_1 70# happyReduction_186 +happyReduction_186 happy_x_1 + = case happyOut80 happy_x_1 of { happy_var_1 -> + happyIn79 + (happy_var_1 + )} + +happyReduce_187 = happySpecReduce_2 70# happyReduction_187 +happyReduction_187 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> + happyIn79 + (unit_tycon_name (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) + )}} + +happyReduce_188 = happySpecReduce_3 70# happyReduction_188 +happyReduction_188 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn79 + (fun_tycon_name (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_2,happy_var_3]) + )}}} + +happyReduce_189 = happySpecReduce_2 70# happyReduction_189 +happyReduction_189 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RightSquare) -> + happyIn79 + (list_tycon_name (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) + )}} + +happyReduce_190 = happySpecReduce_3 70# happyReduction_190 +happyReduction_190 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut148 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn79 + (tuple_tycon_name (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse happy_var_2 ++ [happy_var_3])) Boxed (length happy_var_2) + )}}} + +happyReduce_191 = happySpecReduce_2 70# happyReduction_191 +happyReduction_191 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RightHashParen) -> + happyIn79 + (unboxed_singleton_tycon_name (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) + )}} + +happyReduce_192 = happySpecReduce_3 70# happyReduction_192 +happyReduction_192 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> + case happyOut148 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> + happyIn79 + (tuple_tycon_name (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse happy_var_2 ++ [happy_var_3])) Unboxed (length happy_var_2) + )}}} + +happyReduce_193 = happySpecReduce_1 71# happyReduction_193 +happyReduction_193 happy_x_1 + = case happyOut207 happy_x_1 of { happy_var_1 -> + happyIn80 + (happy_var_1 + )} + +happyReduce_194 = happySpecReduce_3 71# happyReduction_194 +happyReduction_194 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut202 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn80 + (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 + )}}} + +happyReduce_195 = happySpecReduce_1 72# happyReduction_195 +happyReduction_195 happy_x_1 + = case happyOut198 happy_x_1 of { happy_var_1 -> + happyIn81 + (happy_var_1 + )} + +happyReduce_196 = happyMonadReduce 1# 73# happyReduction_196 +happyReduction_196 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut83 happy_x_1 of { happy_var_1 -> + ( checkType happy_var_1)} + ) (\r -> happyReturn (happyIn82 r)) + +happyReduce_197 = happyReduce 4# 74# happyReduction_197 +happyReduction_197 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> + case happyOut87 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> + case happyOut83 happy_x_4 of { happy_var_4 -> + happyIn83 + (TyForall (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) (Just (reverse (fst happy_var_2))) Nothing happy_var_4 + ) `HappyStk` happyRest}}}} + +happyReduce_198 = happySpecReduce_2 74# happyReduction_198 +happyReduction_198 happy_x_2 + happy_x_1 + = case happyOut84 happy_x_1 of { happy_var_1 -> + case happyOut83 happy_x_2 of { happy_var_2 -> + happyIn83 + (TyForall (happy_var_1 <> happy_var_2) Nothing (Just happy_var_1) happy_var_2 + )}} + +happyReduce_199 = happySpecReduce_1 74# happyReduction_199 +happyReduction_199 happy_x_1 + = case happyOut74 happy_x_1 of { happy_var_1 -> + happyIn83 + (happy_var_1 + )} + +happyReduce_200 = happyMonadReduce 2# 75# happyReduction_200 +happyReduction_200 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleArrow) -> + ( checkPContext $ (amap (\l -> l <++> nIS happy_var_2 <** (srcInfoPoints l ++ [happy_var_2]))) happy_var_1)}} + ) (\r -> happyReturn (happyIn84 r)) + +happyReduce_201 = happyMonadReduce 4# 75# happyReduction_201 +happyReduction_201 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Tilde) -> + case happyOut76 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 DoubleArrow) -> + ( do { checkEnabled TypeFamilies; + let {l = happy_var_1 <> happy_var_3 <** [happy_var_2,happy_var_4]}; + checkPContext (TyPred l $ EqualP l happy_var_1 happy_var_3) })}}}} + ) (\r -> happyReturn (happyIn84 r)) + +happyReduce_202 = happySpecReduce_3 76# happyReduction_202 +happyReduction_202 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut86 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut83 happy_x_3 of { happy_var_3 -> + happyIn85 + ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) + )}}} + +happyReduce_203 = happySpecReduce_1 77# happyReduction_203 +happyReduction_203 happy_x_1 + = case happyOut83 happy_x_1 of { happy_var_1 -> + happyIn86 + (([happy_var_1],[]) + )} + +happyReduce_204 = happySpecReduce_3 77# happyReduction_204 +happyReduction_204 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut86 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut83 happy_x_3 of { happy_var_3 -> + happyIn86 + ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) + )}}} + +happyReduce_205 = happySpecReduce_2 78# happyReduction_205 +happyReduction_205 happy_x_2 + happy_x_1 + = case happyOut87 happy_x_1 of { happy_var_1 -> + case happyOut88 happy_x_2 of { happy_var_2 -> + happyIn87 + ((happy_var_2 : fst happy_var_1, Just (snd happy_var_1 <?+> ann happy_var_2)) + )}} + +happyReduce_206 = happySpecReduce_0 78# happyReduction_206 +happyReduction_206 = happyIn87 + (([],Nothing) + ) + +happyReduce_207 = happySpecReduce_1 79# happyReduction_207 +happyReduction_207 happy_x_1 + = case happyOut222 happy_x_1 of { happy_var_1 -> + happyIn88 + (UnkindedVar (ann happy_var_1) happy_var_1 + )} + +happyReduce_208 = happyReduce 5# 79# happyReduction_208 +happyReduction_208 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut222 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 DoubleColon) -> + case happyOut113 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 RightParen) -> + happyIn88 + (KindedVar (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4 + ) `HappyStk` happyRest}}}}} + +happyReduce_209 = happySpecReduce_2 80# happyReduction_209 +happyReduction_209 happy_x_2 + happy_x_1 + = case happyOut89 happy_x_1 of { happy_var_1 -> + case happyOut222 happy_x_2 of { happy_var_2 -> + happyIn89 + ((happy_var_2 : fst happy_var_1, Just (snd happy_var_1 <?+> ann happy_var_2)) + )}} + +happyReduce_210 = happySpecReduce_0 80# happyReduction_210 +happyReduction_210 = happyIn89 + (([], Nothing) + ) + +happyReduce_211 = happySpecReduce_2 81# happyReduction_211 +happyReduction_211 happy_x_2 + happy_x_1 + = case happyOut89 happy_x_1 of { happy_var_1 -> + case happyOut222 happy_x_2 of { happy_var_2 -> + happyIn90 + ((happy_var_2 : fst happy_var_1, snd happy_var_1 <?+> ann happy_var_2) + )}} + +happyReduce_212 = happySpecReduce_0 82# happyReduction_212 +happyReduction_212 = happyIn91 + (([],[], Nothing) + ) + +happyReduce_213 = happyMonadReduce 2# 82# happyReduction_213 +happyReduction_213 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> + case happyOut92 happy_x_2 of { happy_var_2 -> + ( do { checkEnabled FunctionalDependencies ; + let {(fds,ss,l) = happy_var_2} ; + return (reverse fds, happy_var_1 : reverse ss, Just (nIS happy_var_1 <++> l)) })}} + ) (\r -> happyReturn (happyIn91 r)) + +happyReduce_214 = happySpecReduce_3 83# happyReduction_214 +happyReduction_214 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut92 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut93 happy_x_3 of { happy_var_3 -> + happyIn92 + (let (fds,ss,l) = happy_var_1 in (happy_var_3 : fds, happy_var_2 : ss, l <++> ann happy_var_3) + )}}} + +happyReduce_215 = happySpecReduce_1 83# happyReduction_215 +happyReduction_215 happy_x_1 + = case happyOut93 happy_x_1 of { happy_var_1 -> + happyIn92 + (([happy_var_1],[],ann happy_var_1) + )} + +happyReduce_216 = happySpecReduce_3 84# happyReduction_216 +happyReduction_216 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut90 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> + case happyOut90 happy_x_3 of { happy_var_3 -> + happyIn93 + (FunDep (snd happy_var_1 <++> snd happy_var_3 <** [happy_var_2]) (reverse (fst happy_var_1)) (reverse (fst happy_var_3)) + )}}} + +happyReduce_217 = happyMonadReduce 4# 85# happyReduction_217 +happyReduction_217 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> + case happyOut95 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> + ( checkEnabled GADTs >> return (fst happy_var_3, happy_var_1 : happy_var_2 : snd happy_var_3 ++ [happy_var_4], Just $ happy_var_1 <^^> happy_var_4))}}}} + ) (\r -> happyReturn (happyIn94 r)) + +happyReduce_218 = happyMonadReduce 4# 85# happyReduction_218 +happyReduction_218 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> + case happyOut217 happy_x_2 of { happy_var_2 -> + case happyOut95 happy_x_3 of { happy_var_3 -> + case happyOut218 happy_x_4 of { happy_var_4 -> + ( checkEnabled GADTs >> return (fst happy_var_3, happy_var_1 : happy_var_2 : snd happy_var_3 ++ [happy_var_4], Just $ happy_var_1 <^^> happy_var_4))}}}} + ) (\r -> happyReturn (happyIn94 r)) + +happyReduce_219 = happyMonadReduce 0# 85# happyReduction_219 +happyReduction_219 (happyRest) tk + = happyThen (( checkEnabled EmptyDataDecls >> return ([],[],Nothing)) + ) (\r -> happyReturn (happyIn94 r)) + +happyReduce_220 = happySpecReduce_3 86# happyReduction_220 +happyReduction_220 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut21 happy_x_1 of { happy_var_1 -> + case happyOut96 happy_x_2 of { happy_var_2 -> + case happyOut21 happy_x_3 of { happy_var_3 -> + happyIn95 + ((fst happy_var_2, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3) + )}}} + +happyReduce_221 = happySpecReduce_3 87# happyReduction_221 +happyReduction_221 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut96 happy_x_1 of { happy_var_1 -> + case happyOut20 happy_x_2 of { happy_var_2 -> + case happyOut97 happy_x_3 of { happy_var_3 -> + happyIn96 + ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) + )}}} + +happyReduce_222 = happySpecReduce_1 87# happyReduction_222 +happyReduction_222 happy_x_1 + = case happyOut97 happy_x_1 of { happy_var_1 -> + happyIn96 + (([happy_var_1],[]) + )} + +happyReduce_223 = happyMonadReduce 3# 88# happyReduction_223 +happyReduction_223 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut193 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> + case happyOut82 happy_x_3 of { happy_var_3 -> + ( do { c <- checkUnQual happy_var_1; + return $ GadtDecl (happy_var_1 <> happy_var_3 <** [happy_var_2]) c happy_var_3 })}}} + ) (\r -> happyReturn (happyIn97 r)) + +happyReduce_224 = happySpecReduce_2 89# happyReduction_224 +happyReduction_224 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> + case happyOut99 happy_x_2 of { happy_var_2 -> + happyIn98 + (let (ds,ss,l) = happy_var_2 in (ds, happy_var_1 : reverse ss, Just $ nIS happy_var_1 <++> l) + )}} + +happyReduce_225 = happySpecReduce_3 90# happyReduction_225 +happyReduction_225 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut99 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> + case happyOut100 happy_x_3 of { happy_var_3 -> + happyIn99 + (let (ds,ss,l) = happy_var_1 in (happy_var_3 : ds, happy_var_2 : ss, l <++> ann happy_var_3) + )}}} + +happyReduce_226 = happySpecReduce_1 90# happyReduction_226 +happyReduction_226 happy_x_1 + = case happyOut100 happy_x_1 of { happy_var_1 -> + happyIn99 + (([happy_var_1],[],ann happy_var_1) + )} + +happyReduce_227 = happyMonadReduce 3# 91# happyReduction_227 +happyReduction_227 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut101 happy_x_1 of { happy_var_1 -> + case happyOut84 happy_x_2 of { happy_var_2 -> + case happyOut102 happy_x_3 of { happy_var_3 -> + ( do { checkEnabled ExistentialQuantification ; + ctxt <- checkContext (Just happy_var_2) ; + let {(mtvs,ss,ml) = happy_var_1} ; + return $ QualConDecl (ml <?+> ann happy_var_3 <** ss) mtvs ctxt happy_var_3 })}}} + ) (\r -> happyReturn (happyIn100 r)) + +happyReduce_228 = happySpecReduce_2 91# happyReduction_228 +happyReduction_228 happy_x_2 + happy_x_1 + = case happyOut101 happy_x_1 of { happy_var_1 -> + case happyOut102 happy_x_2 of { happy_var_2 -> + happyIn100 + (let (mtvs, ss, ml) = happy_var_1 in QualConDecl (ml <?+> ann happy_var_2 <** ss) mtvs Nothing happy_var_2 + )}} + +happyReduce_229 = happyMonadReduce 3# 92# happyReduction_229 +happyReduction_229 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> + case happyOut87 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 Dot) -> + ( checkEnabled ExistentialQuantification >> return (Just (fst happy_var_2), [happy_var_1,happy_var_3], Just $ happy_var_1 <^^> happy_var_3))}}} + ) (\r -> happyReturn (happyIn101 r)) + +happyReduce_230 = happySpecReduce_0 92# happyReduction_230 +happyReduction_230 = happyIn101 + ((Nothing, [], Nothing) + ) + +happyReduce_231 = happySpecReduce_1 93# happyReduction_231 +happyReduction_231 happy_x_1 + = case happyOut103 happy_x_1 of { happy_var_1 -> + happyIn102 + (let (n,ts,l) = happy_var_1 in ConDecl l n ts + )} + +happyReduce_232 = happySpecReduce_3 93# happyReduction_232 +happyReduction_232 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut106 happy_x_1 of { happy_var_1 -> + case happyOut197 happy_x_2 of { happy_var_2 -> + case happyOut106 happy_x_3 of { happy_var_3 -> + happyIn102 + (InfixConDecl (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 + )}}} + +happyReduce_233 = happyMonadReduce 3# 93# happyReduction_233 +happyReduction_233 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut193 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> + ( do { c <- checkUnQual happy_var_1; return $ RecDecl (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]) c [] })}}} + ) (\r -> happyReturn (happyIn102 r)) + +happyReduce_234 = happyMonadReduce 4# 93# happyReduction_234 +happyReduction_234 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut193 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> + case happyOut107 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> + ( do { c <- checkUnQual happy_var_1; + return $ RecDecl (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])) c (reverse (fst happy_var_3)) })}}}} + ) (\r -> happyReturn (happyIn102 r)) + +happyReduce_235 = happyMonadReduce 1# 94# happyReduction_235 +happyReduction_235 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> + ( do { (c,ts) <- splitTyConApp happy_var_1; + return (c,map (\t -> UnBangedTy (ann t) t) ts,ann happy_var_1) })} + ) (\r -> happyReturn (happyIn103 r)) + +happyReduce_236 = happySpecReduce_1 94# happyReduction_236 +happyReduction_236 happy_x_1 + = case happyOut104 happy_x_1 of { happy_var_1 -> + happyIn103 + (happy_var_1 + )} + +happyReduce_237 = happyMonadReduce 3# 95# happyReduction_237 +happyReduction_237 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Exclamation) -> + case happyOut77 happy_x_3 of { happy_var_3 -> + ( do { (c,ts) <- splitTyConApp happy_var_1; + return (c,map (\t -> UnBangedTy (ann t) t) ts++ + [BangedTy (nIS happy_var_2 <++> ann happy_var_3 <** [happy_var_2]) happy_var_3], happy_var_1 <> happy_var_3) })}}} + ) (\r -> happyReturn (happyIn104 r)) + +happyReduce_238 = happyMonadReduce 5# 95# happyReduction_238 +happyReduction_238 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut76 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 UNPACK) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 Exclamation) -> + case happyOut77 happy_x_5 of { happy_var_5 -> + ( do { (c,ts) <- splitTyConApp happy_var_1; + return (c,map (\t -> UnBangedTy (ann t) t) ts++ + [UnpackedTy (nIS happy_var_2 <++> ann happy_var_5 <** [happy_var_2,happy_var_3,happy_var_4]) happy_var_5], happy_var_1 <> happy_var_5) })}}}}} + ) (\r -> happyReturn (happyIn104 r)) + +happyReduce_239 = happySpecReduce_2 95# happyReduction_239 +happyReduction_239 happy_x_2 + happy_x_1 + = case happyOut104 happy_x_1 of { happy_var_1 -> + case happyOut105 happy_x_2 of { happy_var_2 -> + happyIn104 + (let (n,ts,l) = happy_var_1 in (n, ts ++ [happy_var_2],l <++> ann happy_var_2) + )}} + +happyReduce_240 = happySpecReduce_1 96# happyReduction_240 +happyReduction_240 happy_x_1 + = case happyOut77 happy_x_1 of { happy_var_1 -> + happyIn105 + (UnBangedTy (ann happy_var_1) happy_var_1 + )} + +happyReduce_241 = happySpecReduce_2 96# happyReduction_241 +happyReduction_241 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> + case happyOut77 happy_x_2 of { happy_var_2 -> + happyIn105 + (BangedTy (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 + )}} + +happyReduce_242 = happyReduce 4# 96# happyReduction_242 +happyReduction_242 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> + case happyOut77 happy_x_4 of { happy_var_4 -> + happyIn105 + (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 + ) `HappyStk` happyRest}}}} + +happyReduce_243 = happySpecReduce_1 97# happyReduction_243 +happyReduction_243 happy_x_1 + = case happyOut75 happy_x_1 of { happy_var_1 -> + happyIn106 + (UnBangedTy (ann happy_var_1) happy_var_1 + )} + +happyReduce_244 = happySpecReduce_2 97# happyReduction_244 +happyReduction_244 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> + case happyOut77 happy_x_2 of { happy_var_2 -> + happyIn106 + (BangedTy (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 + )}} + +happyReduce_245 = happyReduce 4# 97# happyReduction_245 +happyReduction_245 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> + case happyOut77 happy_x_4 of { happy_var_4 -> + happyIn106 + (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 + ) `HappyStk` happyRest}}}} + +happyReduce_246 = happySpecReduce_3 98# happyReduction_246 +happyReduction_246 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut107 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut108 happy_x_3 of { happy_var_3 -> + happyIn107 + ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) + )}}} + +happyReduce_247 = happySpecReduce_1 98# happyReduction_247 +happyReduction_247 happy_x_1 + = case happyOut108 happy_x_1 of { happy_var_1 -> + happyIn107 + (([happy_var_1],[]) + )} + +happyReduce_248 = happySpecReduce_3 99# happyReduction_248 +happyReduction_248 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut57 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> + case happyOut109 happy_x_3 of { happy_var_3 -> + happyIn108 + (let (ns,ss,l) = happy_var_1 in FieldDecl (l <++> ann happy_var_3 <** (reverse ss ++ [happy_var_2])) (reverse ns) happy_var_3 + )}}} + +happyReduce_249 = happySpecReduce_1 100# happyReduction_249 +happyReduction_249 happy_x_1 + = case happyOut82 happy_x_1 of { happy_var_1 -> + happyIn109 + (UnBangedTy (ann happy_var_1) happy_var_1 + )} + +happyReduce_250 = happySpecReduce_2 100# happyReduction_250 +happyReduction_250 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> + case happyOut77 happy_x_2 of { happy_var_2 -> + happyIn109 + (BangedTy (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 + )}} + +happyReduce_251 = happyReduce 4# 100# happyReduction_251 +happyReduction_251 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 UNPACK) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 PragmaEnd) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 Exclamation) -> + case happyOut77 happy_x_4 of { happy_var_4 -> + happyIn109 + (UnpackedTy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 + ) `HappyStk` happyRest}}}} + +happyReduce_252 = happySpecReduce_0 101# happyReduction_252 +happyReduction_252 = happyIn110 + (Nothing + ) + +happyReduce_253 = happySpecReduce_2 101# happyReduction_253 +happyReduction_253 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> + case happyOut112 happy_x_2 of { happy_var_2 -> + happyIn110 + (let l = nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1] in Just $ Deriving l [IHead (ann happy_var_2) happy_var_2 []] + )}} + +happyReduce_254 = happySpecReduce_3 101# happyReduction_254 +happyReduction_254 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn110 + (Just $ Deriving (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_2,happy_var_3]) [] + )}}} + +happyReduce_255 = happyReduce 4# 101# happyReduction_255 +happyReduction_255 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftParen) -> + case happyOut111 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> + happyIn110 + (Just $ Deriving (happy_var_1 <^^> happy_var_4 <** happy_var_1:happy_var_2: reverse (snd happy_var_3) ++ [happy_var_4]) (reverse (fst happy_var_3)) + ) `HappyStk` happyRest}}}} + +happyReduce_256 = happyMonadReduce 1# 102# happyReduction_256 +happyReduction_256 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut86 happy_x_1 of { happy_var_1 -> + ( checkDeriving (fst happy_var_1) >>= \ds -> return (ds, snd happy_var_1))} + ) (\r -> happyReturn (happyIn111 r)) + +happyReduce_257 = happySpecReduce_1 103# happyReduction_257 +happyReduction_257 happy_x_1 + = case happyOut207 happy_x_1 of { happy_var_1 -> + happyIn112 + (happy_var_1 + )} + +happyReduce_258 = happyMonadReduce 1# 104# happyReduction_258 +happyReduction_258 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut114 happy_x_1 of { happy_var_1 -> + ( checkEnabled KindSignatures >> return happy_var_1)} + ) (\r -> happyReturn (happyIn113 r)) + +happyReduce_259 = happySpecReduce_1 105# happyReduction_259 +happyReduction_259 happy_x_1 + = case happyOut115 happy_x_1 of { happy_var_1 -> + happyIn114 + (happy_var_1 + )} + +happyReduce_260 = happySpecReduce_3 105# happyReduction_260 +happyReduction_260 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut115 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> + case happyOut114 happy_x_3 of { happy_var_3 -> + happyIn114 + (KindFn (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_261 = happySpecReduce_1 106# happyReduction_261 +happyReduction_261 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> + happyIn115 + (KindStar (nIS happy_var_1) + )} + +happyReduce_262 = happySpecReduce_1 106# happyReduction_262 +happyReduction_262 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> + happyIn115 + (KindBang (nIS happy_var_1) + )} + +happyReduce_263 = happySpecReduce_3 106# happyReduction_263 +happyReduction_263 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut114 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn115 + (KindParen (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 + )}}} + +happyReduce_264 = happySpecReduce_0 107# happyReduction_264 +happyReduction_264 = happyIn116 + ((Nothing,[]) + ) + +happyReduce_265 = happySpecReduce_2 107# happyReduction_265 +happyReduction_265 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> + case happyOut113 happy_x_2 of { happy_var_2 -> + happyIn116 + ((Just happy_var_2,[happy_var_1]) + )}} + +happyReduce_266 = happyMonadReduce 4# 108# happyReduction_266 +happyReduction_266 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> + case happyOut118 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> + ( checkClassBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}} + ) (\r -> happyReturn (happyIn117 r)) + +happyReduce_267 = happyMonadReduce 4# 108# happyReduction_267 +happyReduction_267 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> + case happyOut217 happy_x_2 of { happy_var_2 -> + case happyOut118 happy_x_3 of { happy_var_3 -> + case happyOut218 happy_x_4 of { happy_var_4 -> + ( checkClassBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}} + ) (\r -> happyReturn (happyIn117 r)) + +happyReduce_268 = happySpecReduce_0 108# happyReduction_268 +happyReduction_268 = happyIn117 + ((Nothing,[],Nothing) + ) + +happyReduce_269 = happyMonadReduce 3# 109# happyReduction_269 +happyReduction_269 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut21 happy_x_1 of { happy_var_1 -> + case happyOut119 happy_x_2 of { happy_var_2 -> + case happyOut21 happy_x_3 of { happy_var_3 -> + ( checkRevClsDecls (fst happy_var_2) >>= \cs -> return (cs, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}} + ) (\r -> happyReturn (happyIn118 r)) + +happyReduce_270 = happySpecReduce_1 109# happyReduction_270 +happyReduction_270 happy_x_1 + = case happyOut21 happy_x_1 of { happy_var_1 -> + happyIn118 + (([],reverse happy_var_1) + )} + +happyReduce_271 = happySpecReduce_3 110# happyReduction_271 +happyReduction_271 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut119 happy_x_1 of { happy_var_1 -> + case happyOut20 happy_x_2 of { happy_var_2 -> + case happyOut120 happy_x_3 of { happy_var_3 -> + happyIn119 + ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) + )}}} + +happyReduce_272 = happySpecReduce_1 110# happyReduction_272 +happyReduction_272 happy_x_1 + = case happyOut120 happy_x_1 of { happy_var_1 -> + happyIn119 + (([happy_var_1],[]) + )} + +happyReduce_273 = happySpecReduce_1 111# happyReduction_273 +happyReduction_273 happy_x_1 + = case happyOut51 happy_x_1 of { happy_var_1 -> + happyIn120 + (ClsDecl (ann happy_var_1) happy_var_1 + )} + +happyReduce_274 = happyMonadReduce 1# 111# happyReduction_274 +happyReduction_274 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut121 happy_x_1 of { happy_var_1 -> + ( checkEnabled TypeFamilies >> return happy_var_1)} + ) (\r -> happyReturn (happyIn120 r)) + +happyReduce_275 = happyMonadReduce 3# 112# happyReduction_275 +happyReduction_275 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> + case happyOut74 happy_x_2 of { happy_var_2 -> + case happyOut116 happy_x_3 of { happy_var_3 -> + ( do { dh <- checkSimpleType happy_var_2; + return (ClsTyFam (nIS happy_var_1 <++> ann happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** happy_var_1:snd happy_var_3) dh (fst happy_var_3)) })}}} + ) (\r -> happyReturn (happyIn121 r)) + +happyReduce_276 = happyReduce 4# 112# happyReduction_276 +happyReduction_276 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> + case happyOut71 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> + case happyOut82 happy_x_4 of { happy_var_4 -> + happyIn121 + (ClsTyDef (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4 + ) `HappyStk` happyRest}}}} + +happyReduce_277 = happyMonadReduce 3# 112# happyReduction_277 +happyReduction_277 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> + case happyOut83 happy_x_2 of { happy_var_2 -> + case happyOut116 happy_x_3 of { happy_var_3 -> + ( do { (cs,dh) <- checkDataHeader happy_var_2; + return (ClsDataFam (nIS happy_var_1 <++> ann happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** happy_var_1:snd happy_var_3) cs dh (fst happy_var_3)) })}}} + ) (\r -> happyReturn (happyIn121 r)) + +happyReduce_278 = happyMonadReduce 4# 113# happyReduction_278 +happyReduction_278 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> + case happyOut123 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> + ( checkInstBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}} + ) (\r -> happyReturn (happyIn122 r)) + +happyReduce_279 = happyMonadReduce 4# 113# happyReduction_279 +happyReduction_279 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> + case happyOut217 happy_x_2 of { happy_var_2 -> + case happyOut123 happy_x_3 of { happy_var_3 -> + case happyOut218 happy_x_4 of { happy_var_4 -> + ( checkInstBody (fst happy_var_3) >>= \vs -> return (Just vs, happy_var_1:happy_var_2: snd happy_var_3 ++ [happy_var_4], Just (happy_var_1 <^^> happy_var_4)))}}}} + ) (\r -> happyReturn (happyIn122 r)) + +happyReduce_280 = happySpecReduce_0 113# happyReduction_280 +happyReduction_280 = happyIn122 + ((Nothing, [], Nothing) + ) + +happyReduce_281 = happyMonadReduce 3# 114# happyReduction_281 +happyReduction_281 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut21 happy_x_1 of { happy_var_1 -> + case happyOut124 happy_x_2 of { happy_var_2 -> + case happyOut21 happy_x_3 of { happy_var_3 -> + ( checkRevInstDecls (fst happy_var_2) >>= \is -> return (is, reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3))}}} + ) (\r -> happyReturn (happyIn123 r)) + +happyReduce_282 = happySpecReduce_1 114# happyReduction_282 +happyReduction_282 happy_x_1 + = case happyOut21 happy_x_1 of { happy_var_1 -> + happyIn123 + (([],reverse happy_var_1) + )} + +happyReduce_283 = happySpecReduce_3 115# happyReduction_283 +happyReduction_283 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut124 happy_x_1 of { happy_var_1 -> + case happyOut20 happy_x_2 of { happy_var_2 -> + case happyOut125 happy_x_3 of { happy_var_3 -> + happyIn124 + ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) + )}}} + +happyReduce_284 = happySpecReduce_1 115# happyReduction_284 +happyReduction_284 happy_x_1 + = case happyOut125 happy_x_1 of { happy_var_1 -> + happyIn124 + (([happy_var_1],[]) + )} + +happyReduce_285 = happySpecReduce_1 116# happyReduction_285 +happyReduction_285 happy_x_1 + = case happyOut128 happy_x_1 of { happy_var_1 -> + happyIn125 + (InsDecl (ann happy_var_1) happy_var_1 + )} + +happyReduce_286 = happyMonadReduce 1# 116# happyReduction_286 +happyReduction_286 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut127 happy_x_1 of { happy_var_1 -> + ( checkEnabled TypeFamilies >> return happy_var_1)} + ) (\r -> happyReturn (happyIn125 r)) + +happyReduce_287 = happySpecReduce_1 116# happyReduction_287 +happyReduction_287 happy_x_1 + = case happyOut126 happy_x_1 of { happy_var_1 -> + happyIn125 + (happy_var_1 + )} + +happyReduce_288 = happyReduce 4# 117# happyReduction_288 +happyReduction_288 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut63 happy_x_2 of { happy_var_2 -> + case happyOut190 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 PragmaEnd) -> + happyIn126 + (let Loc l (INLINE s) = happy_var_1 in InsInline (l <^^> happy_var_4 <** [l,happy_var_4]) s happy_var_2 happy_var_3 + ) `HappyStk` happyRest}}}} + +happyReduce_289 = happyMonadReduce 4# 118# happyReduction_289 +happyReduction_289 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> + case happyOut71 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> + case happyOut82 happy_x_4 of { happy_var_4 -> + ( do { -- no checkSimpleType happy_var_4 since dtype may contain type patterns + return (InsType (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4) })}}}} + ) (\r -> happyReturn (happyIn127 r)) + +happyReduce_290 = happyMonadReduce 4# 118# happyReduction_290 +happyReduction_290 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> + case happyOut82 happy_x_2 of { happy_var_2 -> + case happyOut98 happy_x_3 of { happy_var_3 -> + case happyOut110 happy_x_4 of { happy_var_4 -> + ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; + let {(ds,ss,minf) = happy_var_3}; + checkDataOrNew happy_var_1 ds; + return (InsData (happy_var_1 <> happy_var_2 <+?> minf <+?> fmap ann happy_var_4 <** ss ) happy_var_1 happy_var_2 (reverse ds) happy_var_4) })}}}} + ) (\r -> happyReturn (happyIn127 r)) + +happyReduce_291 = happyMonadReduce 5# 118# happyReduction_291 +happyReduction_291 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut47 happy_x_1 of { happy_var_1 -> + case happyOut82 happy_x_2 of { happy_var_2 -> + case happyOut116 happy_x_3 of { happy_var_3 -> + case happyOut94 happy_x_4 of { happy_var_4 -> + case happyOut110 happy_x_5 of { happy_var_5 -> + ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; + let { (gs,ss,minf) = happy_var_4 } ; + checkDataOrNew happy_var_1 gs; + return $ InsGData (ann happy_var_1 <+?> minf <+?> fmap ann happy_var_5 <** (snd happy_var_3 ++ ss)) happy_var_1 happy_var_2 (fst happy_var_3) (reverse gs) happy_var_5 })}}}}} + ) (\r -> happyReturn (happyIn127 r)) + +happyReduce_292 = happyMonadReduce 4# 119# happyReduction_292 +happyReduction_292 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut138 happy_x_1 of { happy_var_1 -> + case happyOut130 happy_x_2 of { happy_var_2 -> + case happyOut131 happy_x_3 of { happy_var_3 -> + case happyOut129 happy_x_4 of { happy_var_4 -> + ( checkValDef ((happy_var_1 <> happy_var_3 <+?> (fmap ann) (fst happy_var_4)) <** (snd happy_var_2 ++ snd happy_var_4)) happy_var_1 (fst happy_var_2) happy_var_3 (fst happy_var_4))}}}} + ) (\r -> happyReturn (happyIn128 r)) + +happyReduce_293 = happyMonadReduce 4# 119# happyReduction_293 +happyReduction_293 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> + case happyOut145 happy_x_2 of { happy_var_2 -> + case happyOut131 happy_x_3 of { happy_var_3 -> + case happyOut129 happy_x_4 of { happy_var_4 -> + ( do { checkEnabled BangPatterns ; + let { l = nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1] }; + p <- checkPattern (BangPat l happy_var_2); + return $ PatBind (p <> happy_var_3 <+?> (fmap ann) (fst happy_var_4) <** snd happy_var_4) + p Nothing happy_var_3 (fst happy_var_4) })}}}} + ) (\r -> happyReturn (happyIn128 r)) + +happyReduce_294 = happySpecReduce_2 120# happyReduction_294 +happyReduction_294 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> + case happyOut56 happy_x_2 of { happy_var_2 -> + happyIn129 + ((Just happy_var_2, [happy_var_1]) + )}} + +happyReduce_295 = happySpecReduce_0 120# happyReduction_295 +happyReduction_295 = happyIn129 + ((Nothing, []) + ) + +happyReduce_296 = happyMonadReduce 2# 121# happyReduction_296 +happyReduction_296 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 DoubleColon) -> + case happyOut82 happy_x_2 of { happy_var_2 -> + ( checkEnabled ScopedTypeVariables >> return (Just happy_var_2, [happy_var_1]))}} + ) (\r -> happyReturn (happyIn130 r)) + +happyReduce_297 = happySpecReduce_0 121# happyReduction_297 +happyReduction_297 = happyIn130 + ((Nothing,[]) + ) + +happyReduce_298 = happySpecReduce_2 122# happyReduction_298 +happyReduction_298 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Equals) -> + case happyOut134 happy_x_2 of { happy_var_2 -> + happyIn131 + (UnGuardedRhs (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 + )}} + +happyReduce_299 = happySpecReduce_1 122# happyReduction_299 +happyReduction_299 happy_x_1 + = case happyOut132 happy_x_1 of { happy_var_1 -> + happyIn131 + (GuardedRhss (snd happy_var_1) (reverse $ fst happy_var_1) + )} + +happyReduce_300 = happySpecReduce_2 123# happyReduction_300 +happyReduction_300 happy_x_2 + happy_x_1 + = case happyOut132 happy_x_1 of { happy_var_1 -> + case happyOut133 happy_x_2 of { happy_var_2 -> + happyIn132 + ((happy_var_2 : fst happy_var_1, snd happy_var_1 <++> ann happy_var_2) + )}} + +happyReduce_301 = happySpecReduce_1 123# happyReduction_301 +happyReduction_301 happy_x_1 + = case happyOut133 happy_x_1 of { happy_var_1 -> + happyIn132 + (([happy_var_1],ann happy_var_1) + )} + +happyReduce_302 = happyMonadReduce 4# 124# happyReduction_302 +happyReduction_302 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> + case happyOut168 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 Equals) -> + case happyOut134 happy_x_4 of { happy_var_4 -> + ( do { checkPatternGuards (fst happy_var_2); + return $ GuardedRhs (nIS happy_var_1 <++> ann happy_var_4 <** (happy_var_1:snd happy_var_2 ++ [happy_var_3])) (reverse (fst happy_var_2)) happy_var_4 })}}}} + ) (\r -> happyReturn (happyIn133 r)) + +happyReduce_303 = happyMonadReduce 1# 125# happyReduction_303 +happyReduction_303 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut135 happy_x_1 of { happy_var_1 -> + ( checkExpr happy_var_1)} + ) (\r -> happyReturn (happyIn134 r)) + +happyReduce_304 = happySpecReduce_3 126# happyReduction_304 +happyReduction_304 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut138 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 DoubleColon) -> + case happyOut82 happy_x_3 of { happy_var_3 -> + happyIn135 + (ExpTypeSig (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_305 = happySpecReduce_1 126# happyReduction_305 +happyReduction_305 happy_x_1 + = case happyOut136 happy_x_1 of { happy_var_1 -> + happyIn135 + (happy_var_1 + )} + +happyReduce_306 = happySpecReduce_2 126# happyReduction_306 +happyReduction_306 happy_x_2 + happy_x_1 + = case happyOut138 happy_x_1 of { happy_var_1 -> + case happyOut200 happy_x_2 of { happy_var_2 -> + happyIn135 + (PostOp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2 + )}} + +happyReduce_307 = happySpecReduce_3 126# happyReduction_307 +happyReduction_307 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut138 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrowTail) -> + case happyOut135 happy_x_3 of { happy_var_3 -> + happyIn135 + (LeftArrApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_308 = happySpecReduce_3 126# happyReduction_308 +happyReduction_308 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut138 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrowTail) -> + case happyOut135 happy_x_3 of { happy_var_3 -> + happyIn135 + (RightArrApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_309 = happySpecReduce_3 126# happyReduction_309 +happyReduction_309 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut138 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftDblArrowTail) -> + case happyOut135 happy_x_3 of { happy_var_3 -> + happyIn135 + (LeftArrHighApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_310 = happySpecReduce_3 126# happyReduction_310 +happyReduction_310 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut138 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RightDblArrowTail) -> + case happyOut135 happy_x_3 of { happy_var_3 -> + happyIn135 + (RightArrHighApp (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_311 = happySpecReduce_1 127# happyReduction_311 +happyReduction_311 happy_x_1 + = case happyOut137 happy_x_1 of { happy_var_1 -> + happyIn136 + (happy_var_1 + )} + +happyReduce_312 = happySpecReduce_1 127# happyReduction_312 +happyReduction_312 happy_x_1 + = case happyOut138 happy_x_1 of { happy_var_1 -> + happyIn136 + (happy_var_1 + )} + +happyReduce_313 = happySpecReduce_3 128# happyReduction_313 +happyReduction_313 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut138 happy_x_1 of { happy_var_1 -> + case happyOut200 happy_x_2 of { happy_var_2 -> + case happyOut139 happy_x_3 of { happy_var_3 -> + happyIn137 + (InfixApp (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 + )}}} + +happyReduce_314 = happySpecReduce_1 128# happyReduction_314 +happyReduction_314 happy_x_1 + = case happyOut139 happy_x_1 of { happy_var_1 -> + happyIn137 + (happy_var_1 + )} + +happyReduce_315 = happySpecReduce_3 129# happyReduction_315 +happyReduction_315 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut138 happy_x_1 of { happy_var_1 -> + case happyOut200 happy_x_2 of { happy_var_2 -> + case happyOut140 happy_x_3 of { happy_var_3 -> + happyIn138 + (InfixApp (happy_var_1 <> happy_var_3) happy_var_1 happy_var_2 happy_var_3 + )}}} + +happyReduce_316 = happySpecReduce_1 129# happyReduction_316 +happyReduction_316 happy_x_1 + = case happyOut140 happy_x_1 of { happy_var_1 -> + happyIn138 + (happy_var_1 + )} + +happyReduce_317 = happyReduce 4# 130# happyReduction_317 +happyReduction_317 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Backslash) -> + case happyOut143 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> + case happyOut135 happy_x_4 of { happy_var_4 -> + happyIn139 + (Lambda (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) (reverse happy_var_2) happy_var_4 + ) `HappyStk` happyRest}}}} + +happyReduce_318 = happyReduce 4# 130# happyReduction_318 +happyReduction_318 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> + case happyOut56 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_In) -> + case happyOut135 happy_x_4 of { happy_var_4 -> + happyIn139 + (Let (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4 + ) `HappyStk` happyRest}}}} + +happyReduce_319 = happyReduce 6# 130# happyReduction_319 +happyReduction_319 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_If) -> + case happyOut135 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Then) -> + case happyOut135 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Else) -> + case happyOut135 happy_x_6 of { happy_var_6 -> + happyIn139 + (If (nIS happy_var_1 <++> ann happy_var_6 <** [happy_var_1,happy_var_3,happy_var_5]) happy_var_2 happy_var_4 happy_var_6 + ) `HappyStk` happyRest}}}}}} + +happyReduce_320 = happyReduce 4# 130# happyReduction_320 +happyReduction_320 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Proc) -> + case happyOut144 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> + case happyOut135 happy_x_4 of { happy_var_4 -> + happyIn139 + (Proc (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4 + ) `HappyStk` happyRest}}}} + +happyReduce_321 = happySpecReduce_1 130# happyReduction_321 +happyReduction_321 happy_x_1 + = case happyOut141 happy_x_1 of { happy_var_1 -> + happyIn139 + (happy_var_1 + )} + +happyReduce_322 = happyReduce 4# 131# happyReduction_322 +happyReduction_322 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Case) -> + case happyOut135 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Of) -> + case happyOut170 happy_x_4 of { happy_var_4 -> + happyIn140 + (let (als, inf, ss) = happy_var_4 in Case (nIS happy_var_1 <++> inf <** (happy_var_1:happy_var_3:ss)) happy_var_2 als + ) `HappyStk` happyRest}}}} + +happyReduce_323 = happySpecReduce_2 131# happyReduction_323 +happyReduction_323 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Minus) -> + case happyOut142 happy_x_2 of { happy_var_2 -> + happyIn140 + (NegApp (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 + )}} + +happyReduce_324 = happySpecReduce_2 131# happyReduction_324 +happyReduction_324 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Do) -> + case happyOut178 happy_x_2 of { happy_var_2 -> + happyIn140 + (let (sts, inf, ss) = happy_var_2 in Do (nIS happy_var_1 <++> inf <** happy_var_1:ss) sts + )}} + +happyReduce_325 = happySpecReduce_2 131# happyReduction_325 +happyReduction_325 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_MDo) -> + case happyOut178 happy_x_2 of { happy_var_2 -> + happyIn140 + (let (sts, inf, ss) = happy_var_2 in MDo (nIS happy_var_1 <++> inf <** happy_var_1:ss) sts + )}} + +happyReduce_326 = happySpecReduce_1 131# happyReduction_326 +happyReduction_326 happy_x_1 + = case happyOut142 happy_x_1 of { happy_var_1 -> + happyIn140 + (happy_var_1 + )} + +happyReduce_327 = happyReduce 4# 132# happyReduction_327 +happyReduction_327 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 CORE) -> + case happyOutTok happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> + case happyOut135 happy_x_4 of { happy_var_4 -> + happyIn141 + (let Loc l (StringTok (s,_)) = happy_var_2 in CorePragma (nIS happy_var_1 <++> ann happy_var_4 <** [l,happy_var_3]) s happy_var_4 + ) `HappyStk` happyRest}}}} + +happyReduce_328 = happyReduce 4# 132# happyReduction_328 +happyReduction_328 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 SCC) -> + case happyOutTok happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 PragmaEnd) -> + case happyOut135 happy_x_4 of { happy_var_4 -> + happyIn141 + (let Loc l (StringTok (s,_)) = happy_var_2 in SCCPragma (nIS happy_var_1 <++> ann happy_var_4 <** [l,happy_var_3]) s happy_var_4 + ) `HappyStk` happyRest}}}} + +happyReduce_329 = happyReduce 11# 132# happyReduction_329 +happyReduction_329 (happy_x_11 `HappyStk` + happy_x_10 `HappyStk` + happy_x_9 `HappyStk` + happy_x_8 `HappyStk` + happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 GENERATED) -> + case happyOutTok happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 Colon) -> + case happyOutTok happy_x_5 of { happy_var_5 -> + case happyOutTok happy_x_6 of { (Loc happy_var_6 Minus) -> + case happyOutTok happy_x_7 of { happy_var_7 -> + case happyOutTok happy_x_8 of { (Loc happy_var_8 Colon) -> + case happyOutTok happy_x_9 of { happy_var_9 -> + case happyOutTok happy_x_10 of { (Loc happy_var_10 PragmaEnd) -> + case happyOut135 happy_x_11 of { happy_var_11 -> + happyIn141 + (let { Loc l0 (StringTok (s,_)) = happy_var_2; + Loc l1 (IntTok (i1,_)) = happy_var_3; + Loc l2 (IntTok (i2,_)) = happy_var_5; + Loc l3 (IntTok (i3,_)) = happy_var_7; + Loc l4 (IntTok (i4,_)) = happy_var_9} + in GenPragma (nIS happy_var_1 <++> ann happy_var_11 <** [happy_var_1,l0,l1,happy_var_4,l2,happy_var_6,l3,happy_var_8,l4,happy_var_10]) + s (fromInteger i1, fromInteger i2) + (fromInteger i3, fromInteger i4) happy_var_11 + ) `HappyStk` happyRest}}}}}}}}}}} + +happyReduce_330 = happySpecReduce_2 133# happyReduction_330 +happyReduction_330 happy_x_2 + happy_x_1 + = case happyOut142 happy_x_1 of { happy_var_1 -> + case happyOut145 happy_x_2 of { happy_var_2 -> + happyIn142 + (App (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2 + )}} + +happyReduce_331 = happySpecReduce_1 133# happyReduction_331 +happyReduction_331 happy_x_1 + = case happyOut145 happy_x_1 of { happy_var_1 -> + happyIn142 + (happy_var_1 + )} + +happyReduce_332 = happySpecReduce_2 134# happyReduction_332 +happyReduction_332 happy_x_2 + happy_x_1 + = case happyOut143 happy_x_1 of { happy_var_1 -> + case happyOut144 happy_x_2 of { happy_var_2 -> + happyIn143 + (happy_var_2 : happy_var_1 + )}} + +happyReduce_333 = happySpecReduce_1 134# happyReduction_333 +happyReduction_333 happy_x_1 + = case happyOut144 happy_x_1 of { happy_var_1 -> + happyIn143 + ([happy_var_1] + )} + +happyReduce_334 = happyMonadReduce 1# 135# happyReduction_334 +happyReduction_334 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut145 happy_x_1 of { happy_var_1 -> + ( checkPattern happy_var_1)} + ) (\r -> happyReturn (happyIn144 r)) + +happyReduce_335 = happyMonadReduce 2# 135# happyReduction_335 +happyReduction_335 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> + case happyOut145 happy_x_2 of { happy_var_2 -> + ( checkPattern (BangPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2))}} + ) (\r -> happyReturn (happyIn144 r)) + +happyReduce_336 = happyMonadReduce 3# 136# happyReduction_336 +happyReduction_336 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut190 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 At) -> + case happyOut145 happy_x_3 of { happy_var_3 -> + ( do { n <- checkUnQual happy_var_1; + return (AsPat (happy_var_1 <> happy_var_3 <** [happy_var_2]) n happy_var_3) })}}} + ) (\r -> happyReturn (happyIn145 r)) + +happyReduce_337 = happyMonadReduce 3# 136# happyReduction_337 +happyReduction_337 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut190 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RPCAt) -> + case happyOut145 happy_x_3 of { happy_var_3 -> + ( do { n <- checkUnQual happy_var_1; + return (CAsRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) n happy_var_3) })}}} + ) (\r -> happyReturn (happyIn145 r)) + +happyReduce_338 = happySpecReduce_2 136# happyReduction_338 +happyReduction_338 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Tilde) -> + case happyOut145 happy_x_2 of { happy_var_2 -> + happyIn145 + (IrrPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 + )}} + +happyReduce_339 = happySpecReduce_1 136# happyReduction_339 +happyReduction_339 happy_x_1 + = case happyOut146 happy_x_1 of { happy_var_1 -> + happyIn145 + (happy_var_1 + )} + +happyReduce_340 = happyMonadReduce 3# 137# happyReduction_340 +happyReduction_340 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut146 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> + ( liftM (amap (const (ann happy_var_1 <++> nIS happy_var_3 <** [happy_var_2,happy_var_3]))) $ mkRecConstrOrUpdate happy_var_1 [])}}} + ) (\r -> happyReturn (happyIn146 r)) + +happyReduce_341 = happyMonadReduce 4# 137# happyReduction_341 +happyReduction_341 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut146 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurly) -> + case happyOut182 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurly) -> + ( liftM (amap (const (ann happy_var_1 <++> nIS happy_var_4 <** (happy_var_2:reverse (snd happy_var_3) ++ [happy_var_4])))) + $ mkRecConstrOrUpdate happy_var_1 (reverse (fst happy_var_3)))}}}} + ) (\r -> happyReturn (happyIn146 r)) + +happyReduce_342 = happyReduce 4# 137# happyReduction_342 +happyReduction_342 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut190 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftCurlyBar) -> + case happyOut73 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightCurlyBar) -> + happyIn146 + (ExplTypeArg (ann happy_var_1 <++> nIS happy_var_4 <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3 + ) `HappyStk` happyRest}}}} + +happyReduce_343 = happySpecReduce_1 137# happyReduction_343 +happyReduction_343 happy_x_1 + = case happyOut147 happy_x_1 of { happy_var_1 -> + happyIn146 + (happy_var_1 + )} + +happyReduce_344 = happySpecReduce_1 138# happyReduction_344 +happyReduction_344 happy_x_1 + = case happyOut191 happy_x_1 of { happy_var_1 -> + happyIn147 + (IPVar (ann happy_var_1) happy_var_1 + )} + +happyReduce_345 = happySpecReduce_1 138# happyReduction_345 +happyReduction_345 happy_x_1 + = case happyOut190 happy_x_1 of { happy_var_1 -> + happyIn147 + (Var (ann happy_var_1) happy_var_1 + )} + +happyReduce_346 = happySpecReduce_1 138# happyReduction_346 +happyReduction_346 happy_x_1 + = case happyOut187 happy_x_1 of { happy_var_1 -> + happyIn147 + (happy_var_1 + )} + +happyReduce_347 = happySpecReduce_1 138# happyReduction_347 +happyReduction_347 happy_x_1 + = case happyOut216 happy_x_1 of { happy_var_1 -> + happyIn147 + (Lit (ann happy_var_1) happy_var_1 + )} + +happyReduce_348 = happySpecReduce_3 138# happyReduction_348 +happyReduction_348 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut149 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn147 + (Paren (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 + )}}} + +happyReduce_349 = happySpecReduce_3 138# happyReduction_349 +happyReduction_349 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut149 happy_x_2 of { happy_var_2 -> + case happyOut150 happy_x_3 of { happy_var_3 -> + happyIn147 + (TupleSection (happy_var_1 <^^> head (snd happy_var_3) <** happy_var_1:reverse (snd happy_var_3)) (Just happy_var_2 : fst happy_var_3) + )}}} + +happyReduce_350 = happyReduce 4# 138# happyReduction_350 +happyReduction_350 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut148 happy_x_2 of { happy_var_2 -> + case happyOut149 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 RightParen) -> + happyIn147 + (TupleSection (happy_var_1 <^^> happy_var_4 <** happy_var_1:reverse (happy_var_4:happy_var_2)) + (replicate (length happy_var_2 - 1) Nothing ++ [Just happy_var_3]) + ) `HappyStk` happyRest}}}} + +happyReduce_351 = happyReduce 4# 138# happyReduction_351 +happyReduction_351 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut148 happy_x_2 of { happy_var_2 -> + case happyOut149 happy_x_3 of { happy_var_3 -> + case happyOut150 happy_x_4 of { happy_var_4 -> + happyIn147 + (TupleSection (happy_var_1 <^^> head (snd happy_var_4) <** happy_var_1:reverse (snd happy_var_4 ++ happy_var_2)) + (replicate (length happy_var_2 - 1) Nothing ++ Just happy_var_3 : fst happy_var_4) + ) `HappyStk` happyRest}}}} + +happyReduce_352 = happySpecReduce_3 138# happyReduction_352 +happyReduction_352 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> + case happyOut162 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightSquare) -> + happyIn147 + (amap (\l -> l <** [happy_var_3]) $ happy_var_2 (happy_var_1 <^^> happy_var_3 <** [happy_var_1]) + )}}} + +happyReduce_353 = happySpecReduce_1 138# happyReduction_353 +happyReduction_353 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Underscore) -> + happyIn147 + (WildCard (nIS happy_var_1) + )} + +happyReduce_354 = happyMonadReduce 3# 138# happyReduction_354 +happyReduction_354 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut152 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + ( checkEnabled RegularPatterns >> return (Paren (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2))}}} + ) (\r -> happyReturn (happyIn147 r)) + +happyReduce_355 = happySpecReduce_3 138# happyReduction_355 +happyReduction_355 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 RPGuardOpen) -> + case happyOut151 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RPGuardClose) -> + happyIn147 + (SeqRP (happy_var_1 <^^> happy_var_3 <** (happy_var_1:reverse (snd happy_var_2) ++ [happy_var_3])) $ reverse (fst happy_var_2) + )}}} + +happyReduce_356 = happyReduce 5# 138# happyReduction_356 +happyReduction_356 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 RPGuardOpen) -> + case happyOut135 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 Bar) -> + case happyOut168 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 RPGuardClose) -> + happyIn147 + (GuardRP (happy_var_1 <^^> happy_var_5 <** (happy_var_1:happy_var_3 : snd happy_var_4 ++ [happy_var_5])) happy_var_2 $ (reverse $ fst happy_var_4) + ) `HappyStk` happyRest}}}}} + +happyReduce_357 = happySpecReduce_1 138# happyReduction_357 +happyReduction_357 happy_x_1 + = case happyOut153 happy_x_1 of { happy_var_1 -> + happyIn147 + (happy_var_1 + )} + +happyReduce_358 = happySpecReduce_1 138# happyReduction_358 +happyReduction_358 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn147 + (let Loc l (THIdEscape s) = happy_var_1 in SpliceExp (nIS l) $ IdSplice (nIS l) s + )} + +happyReduce_359 = happySpecReduce_3 138# happyReduction_359 +happyReduction_359 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 THParenEscape) -> + case happyOut134 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn147 + (SpliceExp (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ ParenSplice (ann happy_var_2) happy_var_2 + )}}} + +happyReduce_360 = happySpecReduce_3 138# happyReduction_360 +happyReduction_360 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 THExpQuote) -> + case happyOut134 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> + happyIn147 + (BracketExp (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ ExpBracket (ann happy_var_2) happy_var_2 + )}}} + +happyReduce_361 = happyMonadReduce 3# 138# happyReduction_361 +happyReduction_361 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 THPatQuote) -> + case happyOut136 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> + ( do { p <- checkPattern happy_var_2; + return $ BracketExp (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) $ PatBracket (ann p) p })}}} + ) (\r -> happyReturn (happyIn147 r)) + +happyReduce_362 = happySpecReduce_3 138# happyReduction_362 +happyReduction_362 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 THTypQuote) -> + case happyOut82 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 THCloseQuote) -> + happyIn147 + (let l = happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3] in BracketExp l $ TypeBracket l happy_var_2 + )}}} + +happyReduce_363 = happyReduce 5# 138# happyReduction_363 +happyReduction_363 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 THDecQuote) -> + case happyOut44 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 THCloseQuote) -> + happyIn147 + (let l = happy_var_1 <^^> happy_var_5 <** (happy_var_1:snd happy_var_3 ++ [happy_var_5]) in BracketExp l $ DeclBracket l (fst happy_var_3) + ) `HappyStk` happyRest}}} + +happyReduce_364 = happySpecReduce_2 138# happyReduction_364 +happyReduction_364 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> + case happyOut190 happy_x_2 of { happy_var_2 -> + happyIn147 + (VarQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 + )}} + +happyReduce_365 = happySpecReduce_2 138# happyReduction_365 +happyReduction_365 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 THVarQuote) -> + case happyOut193 happy_x_2 of { happy_var_2 -> + happyIn147 + (VarQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 + )}} + +happyReduce_366 = happySpecReduce_2 138# happyReduction_366 +happyReduction_366 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 THTyQuote) -> + case happyOut222 happy_x_2 of { happy_var_2 -> + happyIn147 + (TypQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) (UnQual (ann happy_var_2) happy_var_2) + )}} + +happyReduce_367 = happySpecReduce_2 138# happyReduction_367 +happyReduction_367 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 THTyQuote) -> + case happyOut79 happy_x_2 of { happy_var_2 -> + happyIn147 + (TypQuote (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 + )}} + +happyReduce_368 = happySpecReduce_1 138# happyReduction_368 +happyReduction_368 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn147 + (let Loc l (THQuasiQuote (n,q)) = happy_var_1 in QuasiQuote (nIS l) n q + )} + +happyReduce_369 = happySpecReduce_2 139# happyReduction_369 +happyReduction_369 happy_x_2 + happy_x_1 + = case happyOut148 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + happyIn148 + (happy_var_2 : happy_var_1 + )}} + +happyReduce_370 = happySpecReduce_1 139# happyReduction_370 +happyReduction_370 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Comma) -> + happyIn148 + ([happy_var_1] + )} + +happyReduce_371 = happySpecReduce_1 140# happyReduction_371 +happyReduction_371 happy_x_1 + = case happyOut135 happy_x_1 of { happy_var_1 -> + happyIn149 + (happy_var_1 + )} + +happyReduce_372 = happySpecReduce_2 140# happyReduction_372 +happyReduction_372 happy_x_2 + happy_x_1 + = case happyOut201 happy_x_1 of { happy_var_1 -> + case happyOut136 happy_x_2 of { happy_var_2 -> + happyIn149 + (PreOp (happy_var_1 <> happy_var_2) happy_var_1 happy_var_2 + )}} + +happyReduce_373 = happyMonadReduce 3# 140# happyReduction_373 +happyReduction_373 (happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut135 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RightArrow) -> + case happyOut135 happy_x_3 of { happy_var_3 -> + ( do {checkEnabled ViewPatterns; + return $ ViewPat (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3})}}} + ) (\r -> happyReturn (happyIn149 r)) + +happyReduce_374 = happySpecReduce_3 141# happyReduction_374 +happyReduction_374 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut148 happy_x_1 of { happy_var_1 -> + case happyOut149 happy_x_2 of { happy_var_2 -> + case happyOut150 happy_x_3 of { happy_var_3 -> + happyIn150 + (let (mes, ss) = happy_var_3 in (replicate (length happy_var_1 - 1) Nothing ++ Just happy_var_2 : mes, ss ++ happy_var_1) + )}}} + +happyReduce_375 = happySpecReduce_3 141# happyReduction_375 +happyReduction_375 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut148 happy_x_1 of { happy_var_1 -> + case happyOut149 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn150 + ((replicate (length happy_var_1 - 1) Nothing ++ [Just happy_var_2], happy_var_3 : happy_var_1) + )}}} + +happyReduce_376 = happySpecReduce_2 141# happyReduction_376 +happyReduction_376 happy_x_2 + happy_x_1 + = case happyOut148 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> + happyIn150 + ((replicate (length happy_var_1) Nothing, happy_var_2 : happy_var_1) + )}} + +happyReduce_377 = happySpecReduce_3 142# happyReduction_377 +happyReduction_377 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut151 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut135 happy_x_3 of { happy_var_3 -> + happyIn151 + ((happy_var_3 : fst happy_var_1, happy_var_2 : snd happy_var_1) + )}}} + +happyReduce_378 = happySpecReduce_1 142# happyReduction_378 +happyReduction_378 happy_x_1 + = case happyOut135 happy_x_1 of { happy_var_1 -> + happyIn151 + (([happy_var_1],[]) + )} + +happyReduce_379 = happySpecReduce_3 143# happyReduction_379 +happyReduction_379 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut135 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> + case happyOut152 happy_x_3 of { happy_var_3 -> + happyIn152 + (EitherRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_380 = happySpecReduce_3 143# happyReduction_380 +happyReduction_380 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut135 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> + case happyOut135 happy_x_3 of { happy_var_3 -> + happyIn152 + (EitherRP (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_381 = happyMonadReduce 9# 144# happyReduction_381 +happyReduction_381 (happy_x_9 `HappyStk` + happy_x_8 `HappyStk` + happy_x_7 `HappyStk` + happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> + case happyOut156 happy_x_2 of { happy_var_2 -> + case happyOut159 happy_x_3 of { happy_var_3 -> + case happyOut161 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 XStdTagClose) -> + case happyOut154 happy_x_6 of { happy_var_6 -> + case happyOutTok happy_x_7 of { (Loc happy_var_7 XCloseTagOpen) -> + case happyOut156 happy_x_8 of { happy_var_8 -> + case happyOutTok happy_x_9 of { (Loc happy_var_9 XStdTagClose) -> + ( do { n <- checkEqNames happy_var_2 happy_var_8; + let { cn = reverse happy_var_6; + as = reverse happy_var_3; + l = happy_var_1 <^^> happy_var_9 <** [happy_var_1,happy_var_5,happy_var_7,srcInfoSpan (ann happy_var_8),happy_var_9] }; + return $ XTag l n as happy_var_4 cn })}}}}}}}}} + ) (\r -> happyReturn (happyIn153 r)) + +happyReduce_382 = happyReduce 5# 144# happyReduction_382 +happyReduction_382 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 XStdTagOpen) -> + case happyOut156 happy_x_2 of { happy_var_2 -> + case happyOut159 happy_x_3 of { happy_var_3 -> + case happyOut161 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 XEmptyTagClose) -> + happyIn153 + (XETag (happy_var_1 <^^> happy_var_5 <** [happy_var_1,happy_var_5]) happy_var_2 (reverse happy_var_3) happy_var_4 + ) `HappyStk` happyRest}}}}} + +happyReduce_383 = happySpecReduce_3 144# happyReduction_383 +happyReduction_383 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 XCodeTagOpen) -> + case happyOut135 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 XCodeTagClose) -> + happyIn153 + (XExpTag (happy_var_1 <^^> happy_var_3 <** [happy_var_1,happy_var_3]) happy_var_2 + )}}} + +happyReduce_384 = happySpecReduce_2 145# happyReduction_384 +happyReduction_384 happy_x_2 + happy_x_1 + = case happyOut154 happy_x_1 of { happy_var_1 -> + case happyOut155 happy_x_2 of { happy_var_2 -> + happyIn154 + (happy_var_2 : happy_var_1 + )}} + +happyReduce_385 = happySpecReduce_0 145# happyReduction_385 +happyReduction_385 = happyIn154 + ([] + ) + +happyReduce_386 = happySpecReduce_1 146# happyReduction_386 +happyReduction_386 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn155 + (let Loc l (XPCDATA pcd) = happy_var_1 in XPcdata (nIS l) pcd + )} + +happyReduce_387 = happySpecReduce_3 146# happyReduction_387 +happyReduction_387 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 XRPatOpen) -> + case happyOut151 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 XRPatClose) -> + happyIn155 + (XRPats (happy_var_1 <^^> happy_var_3 <** (snd happy_var_2 ++ [happy_var_1,happy_var_3])) $ reverse (fst happy_var_2) + )}}} + +happyReduce_388 = happySpecReduce_1 146# happyReduction_388 +happyReduction_388 happy_x_1 + = case happyOut153 happy_x_1 of { happy_var_1 -> + happyIn155 + (happy_var_1 + )} + +happyReduce_389 = happySpecReduce_3 147# happyReduction_389 +happyReduction_389 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut157 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Colon) -> + case happyOut157 happy_x_3 of { happy_var_3 -> + happyIn156 + (let {Loc l1 s1 = happy_var_1; Loc l2 s2 = happy_var_3} + in XDomName (nIS l1 <++> nIS l2 <** [l1,happy_var_2,l2]) s1 s2 + )}}} + +happyReduce_390 = happySpecReduce_1 147# happyReduction_390 +happyReduction_390 happy_x_1 + = case happyOut157 happy_x_1 of { happy_var_1 -> + happyIn156 + (let Loc l str = happy_var_1 in XName (nIS l) str + )} + +happyReduce_391 = happySpecReduce_1 148# happyReduction_391 +happyReduction_391 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn157 + (let Loc l (VarId s) = happy_var_1 in Loc l s + )} + +happyReduce_392 = happySpecReduce_1 148# happyReduction_392 +happyReduction_392 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn157 + (let Loc l (ConId s) = happy_var_1 in Loc l s + )} + +happyReduce_393 = happySpecReduce_1 148# happyReduction_393 +happyReduction_393 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn157 + (let Loc l (DVarId s) = happy_var_1 in Loc l $ mkDVar s + )} + +happyReduce_394 = happySpecReduce_1 148# happyReduction_394 +happyReduction_394 happy_x_1 + = case happyOut158 happy_x_1 of { happy_var_1 -> + happyIn157 + (happy_var_1 + )} + +happyReduce_395 = happySpecReduce_1 149# happyReduction_395 +happyReduction_395 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Type) -> + happyIn158 + (Loc happy_var_1 "type" + )} + +happyReduce_396 = happySpecReduce_1 149# happyReduction_396 +happyReduction_396 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Class) -> + happyIn158 + (Loc happy_var_1 "class" + )} + +happyReduce_397 = happySpecReduce_1 149# happyReduction_397 +happyReduction_397 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Data) -> + happyIn158 + (Loc happy_var_1 "data" + )} + +happyReduce_398 = happySpecReduce_1 149# happyReduction_398 +happyReduction_398 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Foreign) -> + happyIn158 + (Loc happy_var_1 "foreign" + )} + +happyReduce_399 = happySpecReduce_1 149# happyReduction_399 +happyReduction_399 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Export) -> + happyIn158 + (Loc happy_var_1 "export" + )} + +happyReduce_400 = happySpecReduce_1 149# happyReduction_400 +happyReduction_400 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> + happyIn158 + (Loc happy_var_1 "safe" + )} + +happyReduce_401 = happySpecReduce_1 149# happyReduction_401 +happyReduction_401 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> + happyIn158 + (Loc happy_var_1 "unsafe" + )} + +happyReduce_402 = happySpecReduce_1 149# happyReduction_402 +happyReduction_402 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> + happyIn158 + (Loc happy_var_1 "threadsafe" + )} + +happyReduce_403 = happySpecReduce_1 149# happyReduction_403 +happyReduction_403 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> + happyIn158 + (Loc happy_var_1 "stdcall" + )} + +happyReduce_404 = happySpecReduce_1 149# happyReduction_404 +happyReduction_404 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> + happyIn158 + (Loc happy_var_1 "ccall" + )} + +happyReduce_405 = happySpecReduce_1 149# happyReduction_405 +happyReduction_405 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> + happyIn158 + (Loc happy_var_1 "as" + )} + +happyReduce_406 = happySpecReduce_1 149# happyReduction_406 +happyReduction_406 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_By) -> + happyIn158 + (Loc happy_var_1 "by" + )} + +happyReduce_407 = happySpecReduce_1 149# happyReduction_407 +happyReduction_407 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Case) -> + happyIn158 + (Loc happy_var_1 "case" + )} + +happyReduce_408 = happySpecReduce_1 149# happyReduction_408 +happyReduction_408 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Default) -> + happyIn158 + (Loc happy_var_1 "default" + )} + +happyReduce_409 = happySpecReduce_1 149# happyReduction_409 +happyReduction_409 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Deriving) -> + happyIn158 + (Loc happy_var_1 "deriving" + )} + +happyReduce_410 = happySpecReduce_1 149# happyReduction_410 +happyReduction_410 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Do) -> + happyIn158 + (Loc happy_var_1 "do" + )} + +happyReduce_411 = happySpecReduce_1 149# happyReduction_411 +happyReduction_411 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Else) -> + happyIn158 + (Loc happy_var_1 "else" + )} + +happyReduce_412 = happySpecReduce_1 149# happyReduction_412 +happyReduction_412 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Family) -> + happyIn158 + (Loc happy_var_1 "family" + )} + +happyReduce_413 = happySpecReduce_1 149# happyReduction_413 +happyReduction_413 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Forall) -> + happyIn158 + (Loc happy_var_1 "forall" + )} + +happyReduce_414 = happySpecReduce_1 149# happyReduction_414 +happyReduction_414 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Group) -> + happyIn158 + (Loc happy_var_1 "group" + )} + +happyReduce_415 = happySpecReduce_1 149# happyReduction_415 +happyReduction_415 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> + happyIn158 + (Loc happy_var_1 "hiding" + )} + +happyReduce_416 = happySpecReduce_1 149# happyReduction_416 +happyReduction_416 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_If) -> + happyIn158 + (Loc happy_var_1 "if" + )} + +happyReduce_417 = happySpecReduce_1 149# happyReduction_417 +happyReduction_417 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Import) -> + happyIn158 + (Loc happy_var_1 "import" + )} + +happyReduce_418 = happySpecReduce_1 149# happyReduction_418 +happyReduction_418 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_In) -> + happyIn158 + (Loc happy_var_1 "in" + )} + +happyReduce_419 = happySpecReduce_1 149# happyReduction_419 +happyReduction_419 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Infix) -> + happyIn158 + (Loc happy_var_1 "infix" + )} + +happyReduce_420 = happySpecReduce_1 149# happyReduction_420 +happyReduction_420 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixL) -> + happyIn158 + (Loc happy_var_1 "infixl" + )} + +happyReduce_421 = happySpecReduce_1 149# happyReduction_421 +happyReduction_421 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_InfixR) -> + happyIn158 + (Loc happy_var_1 "infixr" + )} + +happyReduce_422 = happySpecReduce_1 149# happyReduction_422 +happyReduction_422 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Instance) -> + happyIn158 + (Loc happy_var_1 "instance" + )} + +happyReduce_423 = happySpecReduce_1 149# happyReduction_423 +happyReduction_423 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> + happyIn158 + (Loc happy_var_1 "let" + )} + +happyReduce_424 = happySpecReduce_1 149# happyReduction_424 +happyReduction_424 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_MDo) -> + happyIn158 + (Loc happy_var_1 "mdo" + )} + +happyReduce_425 = happySpecReduce_1 149# happyReduction_425 +happyReduction_425 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Module) -> + happyIn158 + (Loc happy_var_1 "module" + )} + +happyReduce_426 = happySpecReduce_1 149# happyReduction_426 +happyReduction_426 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_NewType) -> + happyIn158 + (Loc happy_var_1 "newtype" + )} + +happyReduce_427 = happySpecReduce_1 149# happyReduction_427 +happyReduction_427 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Of) -> + happyIn158 + (Loc happy_var_1 "of" + )} + +happyReduce_428 = happySpecReduce_1 149# happyReduction_428 +happyReduction_428 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Proc) -> + happyIn158 + (Loc happy_var_1 "proc" + )} + +happyReduce_429 = happySpecReduce_1 149# happyReduction_429 +happyReduction_429 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Rec) -> + happyIn158 + (Loc happy_var_1 "rec" + )} + +happyReduce_430 = happySpecReduce_1 149# happyReduction_430 +happyReduction_430 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> + happyIn158 + (Loc happy_var_1 "then" + )} + +happyReduce_431 = happySpecReduce_1 149# happyReduction_431 +happyReduction_431 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Using) -> + happyIn158 + (Loc happy_var_1 "using" + )} + +happyReduce_432 = happySpecReduce_1 149# happyReduction_432 +happyReduction_432 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Where) -> + happyIn158 + (Loc happy_var_1 "where" + )} + +happyReduce_433 = happySpecReduce_1 149# happyReduction_433 +happyReduction_433 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> + happyIn158 + (Loc happy_var_1 "qualified" + )} + +happyReduce_434 = happySpecReduce_2 150# happyReduction_434 +happyReduction_434 happy_x_2 + happy_x_1 + = case happyOut159 happy_x_1 of { happy_var_1 -> + case happyOut160 happy_x_2 of { happy_var_2 -> + happyIn159 + (happy_var_2 : happy_var_1 + )}} + +happyReduce_435 = happySpecReduce_0 150# happyReduction_435 +happyReduction_435 = happyIn159 + ([] + ) + +happyReduce_436 = happySpecReduce_3 151# happyReduction_436 +happyReduction_436 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut156 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> + case happyOut145 happy_x_3 of { happy_var_3 -> + happyIn160 + (XAttr (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_437 = happySpecReduce_1 152# happyReduction_437 +happyReduction_437 happy_x_1 + = case happyOut145 happy_x_1 of { happy_var_1 -> + happyIn161 + (Just happy_var_1 + )} + +happyReduce_438 = happySpecReduce_0 152# happyReduction_438 +happyReduction_438 = happyIn161 + (Nothing + ) + +happyReduce_439 = happySpecReduce_1 153# happyReduction_439 +happyReduction_439 happy_x_1 + = case happyOut149 happy_x_1 of { happy_var_1 -> + happyIn162 + (\l -> List l [happy_var_1] + )} + +happyReduce_440 = happySpecReduce_1 153# happyReduction_440 +happyReduction_440 happy_x_1 + = case happyOut163 happy_x_1 of { happy_var_1 -> + happyIn162 + (\l -> let (ps,ss) = happy_var_1 in List (l <** reverse ss) (reverse ps) + )} + +happyReduce_441 = happySpecReduce_2 153# happyReduction_441 +happyReduction_441 happy_x_2 + happy_x_1 + = case happyOut149 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 DotDot) -> + happyIn162 + (\l -> EnumFrom (l <** [happy_var_2]) happy_var_1 + )}} + +happyReduce_442 = happyReduce 4# 153# happyReduction_442 +happyReduction_442 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut149 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut135 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 DotDot) -> + happyIn162 + (\l -> EnumFromThen (l <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3 + ) `HappyStk` happyRest}}}} + +happyReduce_443 = happySpecReduce_3 153# happyReduction_443 +happyReduction_443 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut149 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 DotDot) -> + case happyOut135 happy_x_3 of { happy_var_3 -> + happyIn162 + (\l -> EnumFromTo (l <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_444 = happyReduce 5# 153# happyReduction_444 +happyReduction_444 (happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOut149 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut135 happy_x_3 of { happy_var_3 -> + case happyOutTok happy_x_4 of { (Loc happy_var_4 DotDot) -> + case happyOut135 happy_x_5 of { happy_var_5 -> + happyIn162 + (\l -> EnumFromThenTo (l <** [happy_var_2,happy_var_4]) happy_var_1 happy_var_3 happy_var_5 + ) `HappyStk` happyRest}}}}} + +happyReduce_445 = happySpecReduce_3 153# happyReduction_445 +happyReduction_445 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut149 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> + case happyOut164 happy_x_3 of { happy_var_3 -> + happyIn162 + (\l -> let (stss, ss) = happy_var_3 in ParComp (l <** (happy_var_2:ss)) happy_var_1 (reverse stss) + )}}} + +happyReduce_446 = happySpecReduce_3 154# happyReduction_446 +happyReduction_446 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut163 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut149 happy_x_3 of { happy_var_3 -> + happyIn163 + (let (es, ss) = happy_var_1 in (happy_var_3 : es, happy_var_2 : ss) + )}}} + +happyReduce_447 = happySpecReduce_3 154# happyReduction_447 +happyReduction_447 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut149 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut149 happy_x_3 of { happy_var_3 -> + happyIn163 + (([happy_var_3,happy_var_1], [happy_var_2]) + )}}} + +happyReduce_448 = happySpecReduce_3 155# happyReduction_448 +happyReduction_448 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut164 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Bar) -> + case happyOut165 happy_x_3 of { happy_var_3 -> + happyIn164 + (let { (stss, ss1) = happy_var_1; + (sts, ss2) = happy_var_3 } + in (reverse sts : stss, ss1 ++ [happy_var_2] ++ reverse ss2) + )}}} + +happyReduce_449 = happySpecReduce_1 155# happyReduction_449 +happyReduction_449 happy_x_1 + = case happyOut165 happy_x_1 of { happy_var_1 -> + happyIn164 + (let (sts, ss) = happy_var_1 in ([reverse sts], reverse ss) + )} + +happyReduce_450 = happySpecReduce_3 156# happyReduction_450 +happyReduction_450 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut165 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut166 happy_x_3 of { happy_var_3 -> + happyIn165 + (let (sts, ss) = happy_var_1 in (happy_var_3 : sts, happy_var_2 : ss) + )}}} + +happyReduce_451 = happySpecReduce_1 156# happyReduction_451 +happyReduction_451 happy_x_1 + = case happyOut166 happy_x_1 of { happy_var_1 -> + happyIn165 + (([happy_var_1],[]) + )} + +happyReduce_452 = happySpecReduce_1 157# happyReduction_452 +happyReduction_452 happy_x_1 + = case happyOut167 happy_x_1 of { happy_var_1 -> + happyIn166 + (happy_var_1 + )} + +happyReduce_453 = happySpecReduce_1 157# happyReduction_453 +happyReduction_453 happy_x_1 + = case happyOut169 happy_x_1 of { happy_var_1 -> + happyIn166 + (QualStmt (ann happy_var_1) happy_var_1 + )} + +happyReduce_454 = happySpecReduce_2 158# happyReduction_454 +happyReduction_454 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> + case happyOut134 happy_x_2 of { happy_var_2 -> + happyIn167 + (ThenTrans (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 + )}} + +happyReduce_455 = happyReduce 4# 158# happyReduction_455 +happyReduction_455 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> + case happyOut134 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> + case happyOut134 happy_x_4 of { happy_var_4 -> + happyIn167 + (ThenBy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_3]) happy_var_2 happy_var_4 + ) `HappyStk` happyRest}}}} + +happyReduce_456 = happyReduce 4# 158# happyReduction_456 +happyReduction_456 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> + case happyOut134 happy_x_4 of { happy_var_4 -> + happyIn167 + (GroupBy (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 + ) `HappyStk` happyRest}}}} + +happyReduce_457 = happyReduce 4# 158# happyReduction_457 +happyReduction_457 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_Using) -> + case happyOut134 happy_x_4 of { happy_var_4 -> + happyIn167 + (GroupUsing (nIS happy_var_1 <++> ann happy_var_4 <** [happy_var_1,happy_var_2,happy_var_3]) happy_var_4 + ) `HappyStk` happyRest}}}} + +happyReduce_458 = happyReduce 6# 158# happyReduction_458 +happyReduction_458 (happy_x_6 `HappyStk` + happy_x_5 `HappyStk` + happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Then) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 KW_Group) -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 KW_By) -> + case happyOut134 happy_x_4 of { happy_var_4 -> + case happyOutTok happy_x_5 of { (Loc happy_var_5 KW_Using) -> + case happyOut134 happy_x_6 of { happy_var_6 -> + happyIn167 + (GroupByUsing (nIS happy_var_1 <++> ann happy_var_6 <** [happy_var_1,happy_var_2,happy_var_3,happy_var_5]) happy_var_4 happy_var_6 + ) `HappyStk` happyRest}}}}}} + +happyReduce_459 = happySpecReduce_3 159# happyReduction_459 +happyReduction_459 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut168 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut169 happy_x_3 of { happy_var_3 -> + happyIn168 + (let (sts, ss) = happy_var_1 in (happy_var_3 : sts, happy_var_2 : ss) + )}}} + +happyReduce_460 = happySpecReduce_1 159# happyReduction_460 +happyReduction_460 happy_x_1 + = case happyOut169 happy_x_1 of { happy_var_1 -> + happyIn168 + (([happy_var_1],[]) + )} + +happyReduce_461 = happySpecReduce_3 160# happyReduction_461 +happyReduction_461 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut177 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrow) -> + case happyOut134 happy_x_3 of { happy_var_3 -> + happyIn169 + (Generator (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_462 = happySpecReduce_1 160# happyReduction_462 +happyReduction_462 happy_x_1 + = case happyOut134 happy_x_1 of { happy_var_1 -> + happyIn169 + (Qualifier (ann happy_var_1) happy_var_1 + )} + +happyReduce_463 = happySpecReduce_2 160# happyReduction_463 +happyReduction_463 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> + case happyOut56 happy_x_2 of { happy_var_2 -> + happyIn169 + (LetStmt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 + )}} + +happyReduce_464 = happySpecReduce_3 161# happyReduction_464 +happyReduction_464 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> + case happyOut171 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> + happyIn170 + ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3]) + )}}} + +happyReduce_465 = happySpecReduce_3 161# happyReduction_465 +happyReduction_465 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut217 happy_x_1 of { happy_var_1 -> + case happyOut171 happy_x_2 of { happy_var_2 -> + case happyOut218 happy_x_3 of { happy_var_3 -> + happyIn170 + ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3]) + )}}} + +happyReduce_466 = happySpecReduce_3 162# happyReduction_466 +happyReduction_466 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut21 happy_x_1 of { happy_var_1 -> + case happyOut172 happy_x_2 of { happy_var_2 -> + case happyOut21 happy_x_3 of { happy_var_3 -> + happyIn171 + ((reverse $ fst happy_var_2, happy_var_1 ++ snd happy_var_2 ++ happy_var_3) + )}}} + +happyReduce_467 = happySpecReduce_3 163# happyReduction_467 +happyReduction_467 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut172 happy_x_1 of { happy_var_1 -> + case happyOut20 happy_x_2 of { happy_var_2 -> + case happyOut173 happy_x_3 of { happy_var_3 -> + happyIn172 + ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ happy_var_2) + )}}} + +happyReduce_468 = happySpecReduce_1 163# happyReduction_468 +happyReduction_468 happy_x_1 + = case happyOut173 happy_x_1 of { happy_var_1 -> + happyIn172 + (([happy_var_1],[]) + )} + +happyReduce_469 = happySpecReduce_3 164# happyReduction_469 +happyReduction_469 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut177 happy_x_1 of { happy_var_1 -> + case happyOut174 happy_x_2 of { happy_var_2 -> + case happyOut129 happy_x_3 of { happy_var_3 -> + happyIn173 + (Alt (happy_var_1 <> happy_var_2 <+?> (fmap ann) (fst happy_var_3) <** snd happy_var_3) happy_var_1 happy_var_2 (fst happy_var_3) + )}}} + +happyReduce_470 = happySpecReduce_2 165# happyReduction_470 +happyReduction_470 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 RightArrow) -> + case happyOut134 happy_x_2 of { happy_var_2 -> + happyIn174 + (UnGuardedAlt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 + )}} + +happyReduce_471 = happySpecReduce_1 165# happyReduction_471 +happyReduction_471 happy_x_1 + = case happyOut175 happy_x_1 of { happy_var_1 -> + happyIn174 + (GuardedAlts (snd happy_var_1) (reverse $ fst happy_var_1) + )} + +happyReduce_472 = happySpecReduce_2 166# happyReduction_472 +happyReduction_472 happy_x_2 + happy_x_1 + = case happyOut175 happy_x_1 of { happy_var_1 -> + case happyOut176 happy_x_2 of { happy_var_2 -> + happyIn175 + ((happy_var_2 : fst happy_var_1, snd happy_var_1 <++> ann happy_var_2) + )}} + +happyReduce_473 = happySpecReduce_1 166# happyReduction_473 +happyReduction_473 happy_x_1 + = case happyOut176 happy_x_1 of { happy_var_1 -> + happyIn175 + (([happy_var_1], ann happy_var_1) + )} + +happyReduce_474 = happyMonadReduce 4# 167# happyReduction_474 +happyReduction_474 (happy_x_4 `HappyStk` + happy_x_3 `HappyStk` + happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Bar) -> + case happyOut168 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightArrow) -> + case happyOut134 happy_x_4 of { happy_var_4 -> + ( do { checkPatternGuards (fst happy_var_2); + let {l = nIS happy_var_1 <++> ann happy_var_4 <** (happy_var_1:snd happy_var_2 ++ [happy_var_3])}; + return (GuardedAlt l (reverse (fst happy_var_2)) happy_var_4) })}}}} + ) (\r -> happyReturn (happyIn176 r)) + +happyReduce_475 = happyMonadReduce 1# 168# happyReduction_475 +happyReduction_475 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut135 happy_x_1 of { happy_var_1 -> + ( checkPattern happy_var_1)} + ) (\r -> happyReturn (happyIn177 r)) + +happyReduce_476 = happyMonadReduce 2# 168# happyReduction_476 +happyReduction_476 (happy_x_2 `HappyStk` + happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> + case happyOut145 happy_x_2 of { happy_var_2 -> + ( checkPattern (BangPat (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2))}} + ) (\r -> happyReturn (happyIn177 r)) + +happyReduce_477 = happySpecReduce_3 169# happyReduction_477 +happyReduction_477 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftCurly) -> + case happyOut179 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightCurly) -> + happyIn178 + ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3]) + )}}} + +happyReduce_478 = happySpecReduce_3 169# happyReduction_478 +happyReduction_478 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut217 happy_x_1 of { happy_var_1 -> + case happyOut179 happy_x_2 of { happy_var_2 -> + case happyOut218 happy_x_3 of { happy_var_3 -> + happyIn178 + ((fst happy_var_2, happy_var_1 <^^> happy_var_3, happy_var_1:snd happy_var_2 ++ [happy_var_3]) + )}}} + +happyReduce_479 = happySpecReduce_2 170# happyReduction_479 +happyReduction_479 happy_x_2 + happy_x_1 + = case happyOut181 happy_x_1 of { happy_var_1 -> + case happyOut180 happy_x_2 of { happy_var_2 -> + happyIn179 + ((happy_var_1 : fst happy_var_2, snd happy_var_2) + )}} + +happyReduce_480 = happySpecReduce_2 170# happyReduction_480 +happyReduction_480 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 SemiColon) -> + case happyOut179 happy_x_2 of { happy_var_2 -> + happyIn179 + ((fst happy_var_2, happy_var_1 : snd happy_var_2) + )}} + +happyReduce_481 = happySpecReduce_0 170# happyReduction_481 +happyReduction_481 = happyIn179 + (([],[]) + ) + +happyReduce_482 = happySpecReduce_2 171# happyReduction_482 +happyReduction_482 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 SemiColon) -> + case happyOut179 happy_x_2 of { happy_var_2 -> + happyIn180 + ((fst happy_var_2, happy_var_1 : snd happy_var_2) + )}} + +happyReduce_483 = happySpecReduce_0 171# happyReduction_483 +happyReduction_483 = happyIn180 + (([],[]) + ) + +happyReduce_484 = happySpecReduce_2 172# happyReduction_484 +happyReduction_484 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Let) -> + case happyOut56 happy_x_2 of { happy_var_2 -> + happyIn181 + (LetStmt (nIS happy_var_1 <++> ann happy_var_2 <** [happy_var_1]) happy_var_2 + )}} + +happyReduce_485 = happySpecReduce_3 172# happyReduction_485 +happyReduction_485 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut177 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 LeftArrow) -> + case happyOut134 happy_x_3 of { happy_var_3 -> + happyIn181 + (Generator (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_486 = happySpecReduce_1 172# happyReduction_486 +happyReduction_486 happy_x_1 + = case happyOut134 happy_x_1 of { happy_var_1 -> + happyIn181 + (Qualifier (ann happy_var_1) happy_var_1 + )} + +happyReduce_487 = happySpecReduce_2 172# happyReduction_487 +happyReduction_487 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Rec) -> + case happyOut178 happy_x_2 of { happy_var_2 -> + happyIn181 + (let (stms,inf,ss) = happy_var_2 in RecStmt (nIS happy_var_1 <++> inf <** happy_var_1:ss) stms + )}} + +happyReduce_488 = happySpecReduce_3 173# happyReduction_488 +happyReduction_488 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut182 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Comma) -> + case happyOut183 happy_x_3 of { happy_var_3 -> + happyIn182 + (let (fbs, ss) = happy_var_1 in (happy_var_3 : fbs, happy_var_2 : ss) + )}}} + +happyReduce_489 = happySpecReduce_1 173# happyReduction_489 +happyReduction_489 happy_x_1 + = case happyOut183 happy_x_1 of { happy_var_1 -> + happyIn182 + (([happy_var_1],[]) + )} + +happyReduce_490 = happySpecReduce_3 174# happyReduction_490 +happyReduction_490 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut190 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> + case happyOut135 happy_x_3 of { happy_var_3 -> + happyIn183 + (FieldUpdate (happy_var_1 <>happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_491 = happyMonadReduce 1# 174# happyReduction_491 +happyReduction_491 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOut190 happy_x_1 of { happy_var_1 -> + ( checkEnabled NamedFieldPuns >> checkUnQual happy_var_1 >>= return . FieldPun (ann happy_var_1))} + ) (\r -> happyReturn (happyIn183 r)) + +happyReduce_492 = happyMonadReduce 1# 174# happyReduction_492 +happyReduction_492 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (case happyOutTok happy_x_1 of { (Loc happy_var_1 DotDot) -> + ( checkEnabled RecordWildCards >> return (FieldWildcard (nIS happy_var_1)))} + ) (\r -> happyReturn (happyIn183 r)) + +happyReduce_493 = happySpecReduce_3 175# happyReduction_493 +happyReduction_493 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut21 happy_x_1 of { happy_var_1 -> + case happyOut185 happy_x_2 of { happy_var_2 -> + case happyOut21 happy_x_3 of { happy_var_3 -> + happyIn184 + ((reverse (fst happy_var_2), reverse happy_var_1 ++ snd happy_var_2 ++ reverse happy_var_3) + )}}} + +happyReduce_494 = happySpecReduce_3 176# happyReduction_494 +happyReduction_494 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut185 happy_x_1 of { happy_var_1 -> + case happyOut20 happy_x_2 of { happy_var_2 -> + case happyOut186 happy_x_3 of { happy_var_3 -> + happyIn185 + ((happy_var_3 : fst happy_var_1, snd happy_var_1 ++ reverse happy_var_2) + )}}} + +happyReduce_495 = happySpecReduce_1 176# happyReduction_495 +happyReduction_495 happy_x_1 + = case happyOut186 happy_x_1 of { happy_var_1 -> + happyIn185 + (([happy_var_1],[]) + )} + +happyReduce_496 = happySpecReduce_3 177# happyReduction_496 +happyReduction_496 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOut191 happy_x_1 of { happy_var_1 -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 Equals) -> + case happyOut134 happy_x_3 of { happy_var_3 -> + happyIn186 + (IPBind (happy_var_1 <> happy_var_3 <** [happy_var_2]) happy_var_1 happy_var_3 + )}}} + +happyReduce_497 = happySpecReduce_2 178# happyReduction_497 +happyReduction_497 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RightParen) -> + happyIn187 + (p_unit_con (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) + )}} + +happyReduce_498 = happySpecReduce_2 178# happyReduction_498 +happyReduction_498 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftSquare) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RightSquare) -> + happyIn187 + (List (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) [] + )}} + +happyReduce_499 = happySpecReduce_3 178# happyReduction_499 +happyReduction_499 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut148 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn187 + (p_tuple_con (happy_var_1 <^^> happy_var_3 <** happy_var_1:reverse (happy_var_3:happy_var_2)) Boxed (length happy_var_2) + )}}} + +happyReduce_500 = happySpecReduce_2 178# happyReduction_500 +happyReduction_500 happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> + case happyOutTok happy_x_2 of { (Loc happy_var_2 RightHashParen) -> + happyIn187 + (p_unboxed_singleton_con (happy_var_1 <^^> happy_var_2 <** [happy_var_1,happy_var_2]) + )}} + +happyReduce_501 = happySpecReduce_3 178# happyReduction_501 +happyReduction_501 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftHashParen) -> + case happyOut148 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightHashParen) -> + happyIn187 + (p_tuple_con (happy_var_1 <^^> happy_var_3 <** happy_var_1:reverse (happy_var_3:happy_var_2)) Unboxed (length happy_var_2) + )}}} + +happyReduce_502 = happySpecReduce_1 178# happyReduction_502 +happyReduction_502 happy_x_1 + = case happyOut193 happy_x_1 of { happy_var_1 -> + happyIn187 + (Con (ann happy_var_1) happy_var_1 + )} + +happyReduce_503 = happySpecReduce_1 179# happyReduction_503 +happyReduction_503 happy_x_1 + = case happyOut205 happy_x_1 of { happy_var_1 -> + happyIn188 + (happy_var_1 + )} + +happyReduce_504 = happySpecReduce_3 179# happyReduction_504 +happyReduction_504 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut213 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn188 + (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 + )}}} + +happyReduce_505 = happySpecReduce_1 180# happyReduction_505 +happyReduction_505 happy_x_1 + = case happyOut204 happy_x_1 of { happy_var_1 -> + happyIn189 + (happy_var_1 + )} + +happyReduce_506 = happySpecReduce_3 180# happyReduction_506 +happyReduction_506 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut213 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn189 + (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 + )}}} + +happyReduce_507 = happySpecReduce_1 181# happyReduction_507 +happyReduction_507 happy_x_1 + = case happyOut203 happy_x_1 of { happy_var_1 -> + happyIn190 + (happy_var_1 + )} + +happyReduce_508 = happySpecReduce_3 181# happyReduction_508 +happyReduction_508 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut211 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn190 + (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 + )}}} + +happyReduce_509 = happySpecReduce_1 182# happyReduction_509 +happyReduction_509 happy_x_1 + = case happyOut206 happy_x_1 of { happy_var_1 -> + happyIn191 + (happy_var_1 + )} + +happyReduce_510 = happySpecReduce_1 183# happyReduction_510 +happyReduction_510 happy_x_1 + = case happyOut208 happy_x_1 of { happy_var_1 -> + happyIn192 + (happy_var_1 + )} + +happyReduce_511 = happySpecReduce_3 183# happyReduction_511 +happyReduction_511 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut210 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn192 + (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 + )}}} + +happyReduce_512 = happySpecReduce_1 184# happyReduction_512 +happyReduction_512 happy_x_1 + = case happyOut207 happy_x_1 of { happy_var_1 -> + happyIn193 + (happy_var_1 + )} + +happyReduce_513 = happySpecReduce_3 184# happyReduction_513 +happyReduction_513 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 LeftParen) -> + case happyOut202 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 RightParen) -> + happyIn193 + (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 + )}}} + +happyReduce_514 = happySpecReduce_1 185# happyReduction_514 +happyReduction_514 happy_x_1 + = case happyOut213 happy_x_1 of { happy_var_1 -> + happyIn194 + (happy_var_1 + )} + +happyReduce_515 = happySpecReduce_3 185# happyReduction_515 +happyReduction_515 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> + case happyOut205 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> + happyIn194 + (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 + )}}} + +happyReduce_516 = happySpecReduce_1 186# happyReduction_516 +happyReduction_516 happy_x_1 + = case happyOut211 happy_x_1 of { happy_var_1 -> + happyIn195 + (happy_var_1 + )} + +happyReduce_517 = happySpecReduce_3 186# happyReduction_517 +happyReduction_517 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> + case happyOut203 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> + happyIn195 + (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 + )}}} + +happyReduce_518 = happySpecReduce_1 187# happyReduction_518 +happyReduction_518 happy_x_1 + = case happyOut212 happy_x_1 of { happy_var_1 -> + happyIn196 + (happy_var_1 + )} + +happyReduce_519 = happySpecReduce_3 187# happyReduction_519 +happyReduction_519 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> + case happyOut203 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> + happyIn196 + (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 + )}}} + +happyReduce_520 = happySpecReduce_1 188# happyReduction_520 +happyReduction_520 happy_x_1 + = case happyOut210 happy_x_1 of { happy_var_1 -> + happyIn197 + (happy_var_1 + )} + +happyReduce_521 = happySpecReduce_3 188# happyReduction_521 +happyReduction_521 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> + case happyOut208 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> + happyIn197 + (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 + )}}} + +happyReduce_522 = happySpecReduce_1 189# happyReduction_522 +happyReduction_522 happy_x_1 + = case happyOut202 happy_x_1 of { happy_var_1 -> + happyIn198 + (happy_var_1 + )} + +happyReduce_523 = happySpecReduce_3 189# happyReduction_523 +happyReduction_523 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> + case happyOut207 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> + happyIn198 + (fmap (const (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3])) happy_var_2 + )}}} + +happyReduce_524 = happySpecReduce_1 190# happyReduction_524 +happyReduction_524 happy_x_1 + = case happyOut194 happy_x_1 of { happy_var_1 -> + happyIn199 + (VarOp (ann happy_var_1) happy_var_1 + )} + +happyReduce_525 = happySpecReduce_1 190# happyReduction_525 +happyReduction_525 happy_x_1 + = case happyOut197 happy_x_1 of { happy_var_1 -> + happyIn199 + (ConOp (ann happy_var_1) happy_var_1 + )} + +happyReduce_526 = happySpecReduce_1 191# happyReduction_526 +happyReduction_526 happy_x_1 + = case happyOut195 happy_x_1 of { happy_var_1 -> + happyIn200 + (QVarOp (ann happy_var_1) happy_var_1 + )} + +happyReduce_527 = happySpecReduce_1 191# happyReduction_527 +happyReduction_527 happy_x_1 + = case happyOut198 happy_x_1 of { happy_var_1 -> + happyIn200 + (QConOp (ann happy_var_1) happy_var_1 + )} + +happyReduce_528 = happySpecReduce_1 192# happyReduction_528 +happyReduction_528 happy_x_1 + = case happyOut196 happy_x_1 of { happy_var_1 -> + happyIn201 + (QVarOp (ann happy_var_1) happy_var_1 + )} + +happyReduce_529 = happySpecReduce_1 192# happyReduction_529 +happyReduction_529 happy_x_1 + = case happyOut198 happy_x_1 of { happy_var_1 -> + happyIn201 + (QConOp (ann happy_var_1) happy_var_1 + )} + +happyReduce_530 = happySpecReduce_1 193# happyReduction_530 +happyReduction_530 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Colon) -> + happyIn202 + (list_cons_name (nIS happy_var_1) + )} + +happyReduce_531 = happySpecReduce_1 193# happyReduction_531 +happyReduction_531 happy_x_1 + = case happyOut209 happy_x_1 of { happy_var_1 -> + happyIn202 + (happy_var_1 + )} + +happyReduce_532 = happySpecReduce_1 194# happyReduction_532 +happyReduction_532 happy_x_1 + = case happyOut205 happy_x_1 of { happy_var_1 -> + happyIn203 + (UnQual (ann happy_var_1) happy_var_1 + )} + +happyReduce_533 = happySpecReduce_1 194# happyReduction_533 +happyReduction_533 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn203 + (let {Loc l (QVarId q) = happy_var_1; nis = nIS l} + in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) + )} + +happyReduce_534 = happySpecReduce_1 195# happyReduction_534 +happyReduction_534 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn204 + (let Loc l (VarId v) = happy_var_1 in Ident (nIS l) v + )} + +happyReduce_535 = happySpecReduce_1 195# happyReduction_535 +happyReduction_535 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_As) -> + happyIn204 + (as_name (nIS happy_var_1) + )} + +happyReduce_536 = happySpecReduce_1 195# happyReduction_536 +happyReduction_536 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Qualified) -> + happyIn204 + (qualified_name (nIS happy_var_1) + )} + +happyReduce_537 = happySpecReduce_1 195# happyReduction_537 +happyReduction_537 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Hiding) -> + happyIn204 + (hiding_name (nIS happy_var_1) + )} + +happyReduce_538 = happySpecReduce_1 195# happyReduction_538 +happyReduction_538 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Export) -> + happyIn204 + (export_name (nIS happy_var_1) + )} + +happyReduce_539 = happySpecReduce_1 195# happyReduction_539 +happyReduction_539 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_StdCall) -> + happyIn204 + (stdcall_name (nIS happy_var_1) + )} + +happyReduce_540 = happySpecReduce_1 195# happyReduction_540 +happyReduction_540 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_CCall) -> + happyIn204 + (ccall_name (nIS happy_var_1) + )} + +happyReduce_541 = happySpecReduce_1 196# happyReduction_541 +happyReduction_541 happy_x_1 + = case happyOut204 happy_x_1 of { happy_var_1 -> + happyIn205 + (happy_var_1 + )} + +happyReduce_542 = happySpecReduce_1 196# happyReduction_542 +happyReduction_542 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Safe) -> + happyIn205 + (safe_name (nIS happy_var_1) + )} + +happyReduce_543 = happySpecReduce_1 196# happyReduction_543 +happyReduction_543 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Unsafe) -> + happyIn205 + (unsafe_name (nIS happy_var_1) + )} + +happyReduce_544 = happySpecReduce_1 196# happyReduction_544 +happyReduction_544 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 KW_Threadsafe) -> + happyIn205 + (threadsafe_name (nIS happy_var_1) + )} + +happyReduce_545 = happySpecReduce_1 197# happyReduction_545 +happyReduction_545 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn206 + (let Loc l (IDupVarId i) = happy_var_1 in IPDup (nIS l) i + )} + +happyReduce_546 = happySpecReduce_1 197# happyReduction_546 +happyReduction_546 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn206 + (let Loc l (ILinVarId i) = happy_var_1 in IPLin (nIS l) i + )} + +happyReduce_547 = happySpecReduce_1 198# happyReduction_547 +happyReduction_547 happy_x_1 + = case happyOut208 happy_x_1 of { happy_var_1 -> + happyIn207 + (UnQual (ann happy_var_1) happy_var_1 + )} + +happyReduce_548 = happySpecReduce_1 198# happyReduction_548 +happyReduction_548 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn207 + (let {Loc l (QConId q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) + )} + +happyReduce_549 = happySpecReduce_1 199# happyReduction_549 +happyReduction_549 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn208 + (let Loc l (ConId c) = happy_var_1 in Ident (nIS l) c + )} + +happyReduce_550 = happySpecReduce_1 200# happyReduction_550 +happyReduction_550 happy_x_1 + = case happyOut210 happy_x_1 of { happy_var_1 -> + happyIn209 + (UnQual (ann happy_var_1) happy_var_1 + )} + +happyReduce_551 = happySpecReduce_1 200# happyReduction_551 +happyReduction_551 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn209 + (let {Loc l (QConSym q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) + )} + +happyReduce_552 = happySpecReduce_1 201# happyReduction_552 +happyReduction_552 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn210 + (let Loc l (ConSym c) = happy_var_1 in Symbol (nIS l) c + )} + +happyReduce_553 = happySpecReduce_1 202# happyReduction_553 +happyReduction_553 happy_x_1 + = case happyOut213 happy_x_1 of { happy_var_1 -> + happyIn211 + (UnQual (ann happy_var_1) happy_var_1 + )} + +happyReduce_554 = happySpecReduce_1 202# happyReduction_554 +happyReduction_554 happy_x_1 + = case happyOut215 happy_x_1 of { happy_var_1 -> + happyIn211 + (happy_var_1 + )} + +happyReduce_555 = happySpecReduce_1 203# happyReduction_555 +happyReduction_555 happy_x_1 + = case happyOut214 happy_x_1 of { happy_var_1 -> + happyIn212 + (UnQual (ann happy_var_1) happy_var_1 + )} + +happyReduce_556 = happySpecReduce_1 203# happyReduction_556 +happyReduction_556 happy_x_1 + = case happyOut215 happy_x_1 of { happy_var_1 -> + happyIn212 + (happy_var_1 + )} + +happyReduce_557 = happySpecReduce_1 204# happyReduction_557 +happyReduction_557 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn213 + (let Loc l (VarSym v) = happy_var_1 in Symbol (nIS l) v + )} + +happyReduce_558 = happySpecReduce_1 204# happyReduction_558 +happyReduction_558 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Minus) -> + happyIn213 + (minus_name (nIS happy_var_1) + )} + +happyReduce_559 = happySpecReduce_1 204# happyReduction_559 +happyReduction_559 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> + happyIn213 + (bang_name (nIS happy_var_1) + )} + +happyReduce_560 = happySpecReduce_1 204# happyReduction_560 +happyReduction_560 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Dot) -> + happyIn213 + (dot_name (nIS happy_var_1) + )} + +happyReduce_561 = happySpecReduce_1 204# happyReduction_561 +happyReduction_561 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> + happyIn213 + (star_name (nIS happy_var_1) + )} + +happyReduce_562 = happySpecReduce_1 205# happyReduction_562 +happyReduction_562 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn214 + (let Loc l (VarSym v) = happy_var_1 in Symbol (nIS l) v + )} + +happyReduce_563 = happySpecReduce_1 205# happyReduction_563 +happyReduction_563 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Exclamation) -> + happyIn214 + (bang_name (nIS happy_var_1) + )} + +happyReduce_564 = happySpecReduce_1 205# happyReduction_564 +happyReduction_564 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Dot) -> + happyIn214 + (dot_name (nIS happy_var_1) + )} + +happyReduce_565 = happySpecReduce_1 205# happyReduction_565 +happyReduction_565 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 Star) -> + happyIn214 + (star_name (nIS happy_var_1) + )} + +happyReduce_566 = happySpecReduce_1 206# happyReduction_566 +happyReduction_566 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn215 + (let {Loc l (QVarSym q) = happy_var_1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) + )} + +happyReduce_567 = happySpecReduce_1 207# happyReduction_567 +happyReduction_567 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn216 + (let Loc l (IntTok (i,raw)) = happy_var_1 in Int (nIS l) i raw + )} + +happyReduce_568 = happySpecReduce_1 207# happyReduction_568 +happyReduction_568 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn216 + (let Loc l (Character (c,raw)) = happy_var_1 in Char (nIS l) c raw + )} + +happyReduce_569 = happySpecReduce_1 207# happyReduction_569 +happyReduction_569 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn216 + (let Loc l (FloatTok (r,raw)) = happy_var_1 in Frac (nIS l) r raw + )} + +happyReduce_570 = happySpecReduce_1 207# happyReduction_570 +happyReduction_570 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn216 + (let Loc l (StringTok (s,raw)) = happy_var_1 in String (nIS l) s raw + )} + +happyReduce_571 = happySpecReduce_1 207# happyReduction_571 +happyReduction_571 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn216 + (let Loc l (IntTokHash (i,raw)) = happy_var_1 in PrimInt (nIS l) i raw + )} + +happyReduce_572 = happySpecReduce_1 207# happyReduction_572 +happyReduction_572 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn216 + (let Loc l (WordTokHash (w,raw)) = happy_var_1 in PrimWord (nIS l) w raw + )} + +happyReduce_573 = happySpecReduce_1 207# happyReduction_573 +happyReduction_573 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn216 + (let Loc l (FloatTokHash (f,raw)) = happy_var_1 in PrimFloat (nIS l) f raw + )} + +happyReduce_574 = happySpecReduce_1 207# happyReduction_574 +happyReduction_574 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn216 + (let Loc l (DoubleTokHash (d,raw)) = happy_var_1 in PrimDouble (nIS l) d raw + )} + +happyReduce_575 = happySpecReduce_1 207# happyReduction_575 +happyReduction_575 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn216 + (let Loc l (CharacterHash (c,raw)) = happy_var_1 in PrimChar (nIS l) c raw + )} + +happyReduce_576 = happySpecReduce_1 207# happyReduction_576 +happyReduction_576 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn216 + (let Loc l (StringHash (s,raw)) = happy_var_1 in PrimString (nIS l) s raw + )} + +happyReduce_577 = happyMonadReduce 0# 208# happyReduction_577 +happyReduction_577 (happyRest) tk + = happyThen (( pushCurrentContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x) (return x) -}) + ) (\r -> happyReturn (happyIn217 r)) + +happyReduce_578 = happySpecReduce_1 209# happyReduction_578 +happyReduction_578 happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 VRightCurly) -> + happyIn218 + (happy_var_1 {- >>= \x -> trace (show x ++ show x ++ show x) (return x) -} + )} + +happyReduce_579 = happyMonadReduce 1# 209# happyReduction_579 +happyReduction_579 (happy_x_1 `HappyStk` + happyRest) tk + = happyThen (( popContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x ++ show x) (return x) -}) + ) (\r -> happyReturn (happyIn218 r)) + +happyReduce_580 = happySpecReduce_1 210# happyReduction_580 +happyReduction_580 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn219 + (let Loc l (ConId n) = happy_var_1 in ModuleName (nIS l) n + )} + +happyReduce_581 = happySpecReduce_1 210# happyReduction_581 +happyReduction_581 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn219 + (let Loc l (QConId n) = happy_var_1 in ModuleName (nIS l) (fst n ++ '.':snd n) + )} + +happyReduce_582 = happySpecReduce_1 211# happyReduction_582 +happyReduction_582 happy_x_1 + = case happyOut192 happy_x_1 of { happy_var_1 -> + happyIn220 + (happy_var_1 + )} + +happyReduce_583 = happySpecReduce_1 212# happyReduction_583 +happyReduction_583 happy_x_1 + = case happyOut193 happy_x_1 of { happy_var_1 -> + happyIn221 + (happy_var_1 + )} + +happyReduce_584 = happySpecReduce_1 213# happyReduction_584 +happyReduction_584 happy_x_1 + = case happyOut205 happy_x_1 of { happy_var_1 -> + happyIn222 + (happy_var_1 + )} + +happyReduce_585 = happySpecReduce_3 214# happyReduction_585 +happyReduction_585 happy_x_3 + happy_x_2 + happy_x_1 + = case happyOutTok happy_x_1 of { (Loc happy_var_1 BackQuote) -> + case happyOut222 happy_x_2 of { happy_var_2 -> + case happyOutTok happy_x_3 of { (Loc happy_var_3 BackQuote) -> + happyIn223 + (UnQual (happy_var_1 <^^> happy_var_3 <** [happy_var_1, srcInfoSpan (ann happy_var_2), happy_var_3]) happy_var_2 + )}}} + +happyReduce_586 = happySpecReduce_1 214# happyReduction_586 +happyReduction_586 happy_x_1 + = case happyOut224 happy_x_1 of { happy_var_1 -> + happyIn223 + (UnQual (ann happy_var_1) happy_var_1 + )} + +happyReduce_587 = happySpecReduce_1 215# happyReduction_587 +happyReduction_587 happy_x_1 + = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn224 + (let Loc l (VarSym x) = happy_var_1 in Symbol (nIS l) x + )} + +happyNewToken action sts stk + = lexer(\tk -> + let cont i = happyDoAction i tk action sts stk in + case tk of { + Loc _ EOF -> happyDoAction 133# tk action sts stk; + Loc _ (VarId _) -> cont 1#; + Loc _ (QVarId _) -> cont 2#; + Loc _ (IDupVarId _) -> cont 3#; + Loc _ (ILinVarId _) -> cont 4#; + Loc _ (ConId _) -> cont 5#; + Loc _ (QConId _) -> cont 6#; + Loc _ (DVarId _) -> cont 7#; + Loc _ (VarSym _) -> cont 8#; + Loc _ (ConSym _) -> cont 9#; + Loc _ (QVarSym _) -> cont 10#; + Loc _ (QConSym _) -> cont 11#; + Loc _ (IntTok _) -> cont 12#; + Loc _ (FloatTok _) -> cont 13#; + Loc _ (Character _) -> cont 14#; + Loc _ (StringTok _) -> cont 15#; + Loc _ (IntTokHash _) -> cont 16#; + Loc _ (WordTokHash _) -> cont 17#; + Loc _ (FloatTokHash _) -> cont 18#; + Loc _ (DoubleTokHash _) -> cont 19#; + Loc _ (CharacterHash _) -> cont 20#; + Loc _ (StringHash _) -> cont 21#; + Loc happy_dollar_dollar LeftParen -> cont 22#; + Loc happy_dollar_dollar RightParen -> cont 23#; + Loc happy_dollar_dollar LeftHashParen -> cont 24#; + Loc happy_dollar_dollar RightHashParen -> cont 25#; + Loc happy_dollar_dollar LeftCurlyBar -> cont 26#; + Loc happy_dollar_dollar RightCurlyBar -> cont 27#; + Loc happy_dollar_dollar SemiColon -> cont 28#; + Loc happy_dollar_dollar LeftCurly -> cont 29#; + Loc happy_dollar_dollar RightCurly -> cont 30#; + Loc happy_dollar_dollar VRightCurly -> cont 31#; + Loc happy_dollar_dollar LeftSquare -> cont 32#; + Loc happy_dollar_dollar RightSquare -> cont 33#; + Loc happy_dollar_dollar Comma -> cont 34#; + Loc happy_dollar_dollar Underscore -> cont 35#; + Loc happy_dollar_dollar BackQuote -> cont 36#; + Loc happy_dollar_dollar Dot -> cont 37#; + Loc happy_dollar_dollar DotDot -> cont 38#; + Loc happy_dollar_dollar Colon -> cont 39#; + Loc happy_dollar_dollar DoubleColon -> cont 40#; + Loc happy_dollar_dollar Equals -> cont 41#; + Loc happy_dollar_dollar Backslash -> cont 42#; + Loc happy_dollar_dollar Bar -> cont 43#; + Loc happy_dollar_dollar LeftArrow -> cont 44#; + Loc happy_dollar_dollar RightArrow -> cont 45#; + Loc happy_dollar_dollar At -> cont 46#; + Loc happy_dollar_dollar Tilde -> cont 47#; + Loc happy_dollar_dollar DoubleArrow -> cont 48#; + Loc happy_dollar_dollar Minus -> cont 49#; + Loc happy_dollar_dollar Exclamation -> cont 50#; + Loc happy_dollar_dollar Star -> cont 51#; + Loc happy_dollar_dollar LeftArrowTail -> cont 52#; + Loc happy_dollar_dollar RightArrowTail -> cont 53#; + Loc happy_dollar_dollar LeftDblArrowTail -> cont 54#; + Loc happy_dollar_dollar RightDblArrowTail -> cont 55#; + Loc happy_dollar_dollar RPGuardOpen -> cont 56#; + Loc happy_dollar_dollar RPGuardClose -> cont 57#; + Loc happy_dollar_dollar RPCAt -> cont 58#; + Loc _ (THIdEscape _) -> cont 59#; + Loc happy_dollar_dollar THParenEscape -> cont 60#; + Loc happy_dollar_dollar THExpQuote -> cont 61#; + Loc happy_dollar_dollar THPatQuote -> cont 62#; + Loc happy_dollar_dollar THTypQuote -> cont 63#; + Loc happy_dollar_dollar THDecQuote -> cont 64#; + Loc happy_dollar_dollar THCloseQuote -> cont 65#; + Loc happy_dollar_dollar THVarQuote -> cont 66#; + Loc happy_dollar_dollar THTyQuote -> cont 67#; + Loc _ (THQuasiQuote _) -> cont 68#; + Loc _ (XPCDATA _) -> cont 69#; + Loc happy_dollar_dollar XStdTagOpen -> cont 70#; + Loc happy_dollar_dollar XCloseTagOpen -> cont 71#; + Loc happy_dollar_dollar XCodeTagOpen -> cont 72#; + Loc happy_dollar_dollar XStdTagClose -> cont 73#; + Loc happy_dollar_dollar XEmptyTagClose -> cont 74#; + Loc happy_dollar_dollar XCodeTagClose -> cont 75#; + Loc happy_dollar_dollar XRPatOpen -> cont 76#; + Loc happy_dollar_dollar XRPatClose -> cont 77#; + Loc happy_dollar_dollar KW_Foreign -> cont 78#; + Loc happy_dollar_dollar KW_Export -> cont 79#; + Loc happy_dollar_dollar KW_Safe -> cont 80#; + Loc happy_dollar_dollar KW_Unsafe -> cont 81#; + Loc happy_dollar_dollar KW_Threadsafe -> cont 82#; + Loc happy_dollar_dollar KW_StdCall -> cont 83#; + Loc happy_dollar_dollar KW_CCall -> cont 84#; + Loc happy_dollar_dollar KW_As -> cont 85#; + Loc happy_dollar_dollar KW_By -> cont 86#; + Loc happy_dollar_dollar KW_Case -> cont 87#; + Loc happy_dollar_dollar KW_Class -> cont 88#; + Loc happy_dollar_dollar KW_Data -> cont 89#; + Loc happy_dollar_dollar KW_Default -> cont 90#; + Loc happy_dollar_dollar KW_Deriving -> cont 91#; + Loc happy_dollar_dollar KW_Do -> cont 92#; + Loc happy_dollar_dollar KW_Else -> cont 93#; + Loc happy_dollar_dollar KW_Family -> cont 94#; + Loc happy_dollar_dollar KW_Forall -> cont 95#; + Loc happy_dollar_dollar KW_Group -> cont 96#; + Loc happy_dollar_dollar KW_Hiding -> cont 97#; + Loc happy_dollar_dollar KW_If -> cont 98#; + Loc happy_dollar_dollar KW_Import -> cont 99#; + Loc happy_dollar_dollar KW_In -> cont 100#; + Loc happy_dollar_dollar KW_Infix -> cont 101#; + Loc happy_dollar_dollar KW_InfixL -> cont 102#; + Loc happy_dollar_dollar KW_InfixR -> cont 103#; + Loc happy_dollar_dollar KW_Instance -> cont 104#; + Loc happy_dollar_dollar KW_Let -> cont 105#; + Loc happy_dollar_dollar KW_MDo -> cont 106#; + Loc happy_dollar_dollar KW_Module -> cont 107#; + Loc happy_dollar_dollar KW_NewType -> cont 108#; + Loc happy_dollar_dollar KW_Of -> cont 109#; + Loc happy_dollar_dollar KW_Proc -> cont 110#; + Loc happy_dollar_dollar KW_Rec -> cont 111#; + Loc happy_dollar_dollar KW_Then -> cont 112#; + Loc happy_dollar_dollar KW_Type -> cont 113#; + Loc happy_dollar_dollar KW_Using -> cont 114#; + Loc happy_dollar_dollar KW_Where -> cont 115#; + Loc happy_dollar_dollar KW_Qualified -> cont 116#; + Loc _ (INLINE _) -> cont 117#; + Loc happy_dollar_dollar SPECIALISE -> cont 118#; + Loc _ (SPECIALISE_INLINE _) -> cont 119#; + Loc happy_dollar_dollar SOURCE -> cont 120#; + Loc happy_dollar_dollar RULES -> cont 121#; + Loc happy_dollar_dollar CORE -> cont 122#; + Loc happy_dollar_dollar SCC -> cont 123#; + Loc happy_dollar_dollar GENERATED -> cont 124#; + Loc happy_dollar_dollar DEPRECATED -> cont 125#; + Loc happy_dollar_dollar WARNING -> cont 126#; + Loc happy_dollar_dollar UNPACK -> cont 127#; + Loc _ (OPTIONS _) -> cont 128#; + Loc _ (CFILES _) -> cont 129#; + Loc _ (INCLUDE _) -> cont 130#; + Loc happy_dollar_dollar LANGUAGE -> cont 131#; + Loc happy_dollar_dollar PragmaEnd -> cont 132#; + _ -> happyError' tk + }) + +happyError_ tk = happyError' tk + +happyThen :: () => P a -> (a -> P b) -> P b +happyThen = (>>=) +happyReturn :: () => a -> P a +happyReturn = (return) +happyThen1 = happyThen +happyReturn1 :: () => a -> P a +happyReturn1 = happyReturn +happyError' :: () => (Loc Token) -> P a +happyError' tk = parseError tk + +mparseModule = happySomeParser where + happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut9 x)) + +mparseExp = happySomeParser where + happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut134 x)) + +mparsePat = happySomeParser where + happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut177 x)) + +mparseDecl = happySomeParser where + happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut46 x)) + +mparseType = happySomeParser where + happySomeParser = happyThen (happyParse 4#) (\x -> happyReturn (happyOut82 x)) + +mfindOptPragmas = happySomeParser where + happySomeParser = happyThen (happyParse 5#) (\x -> happyReturn (happyOut11 x)) + +happySeq = happyDontSeq + + +type L = SrcSpanInfo -- just for convenience +type S = SrcSpan + +parseError :: Loc Token -> P a +parseError t = fail $ "Parse error: " ++ show t + +(<>) :: (Annotated a, Annotated b) => a SrcSpanInfo -> b SrcSpanInfo -> SrcSpanInfo +a <> b = ann a <++> ann b +infixl 6 <> + +nIS = noInfoSpan +iS = infoSpan + + +-- | Parse of a string, which should contain a complete Haskell module. +parseModule :: String -> ParseResult (Module L) +parseModule = simpleParse mparseModule + +-- | Parse of a string containing a complete Haskell module, using an explicit mode. +parseModuleWithMode :: ParseMode -> String -> ParseResult (Module L) +parseModuleWithMode = modeParse mparseModule + +-- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. +parseModuleWithComments :: ParseMode -> String -> ParseResult (Module L, [Comment]) +parseModuleWithComments = commentParse mparseModule + +-- | Parse of a string containing a Haskell expression. +parseExp :: String -> ParseResult (Exp L) +parseExp = simpleParse mparseExp + +-- | Parse of a string containing a Haskell expression, using an explicit mode. +parseExpWithMode :: ParseMode -> String -> ParseResult (Exp L) +parseExpWithMode = modeParse mparseExp + +-- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. +parseExpWithComments :: ParseMode -> String -> ParseResult (Exp L, [Comment]) +parseExpWithComments = commentParse mparseExp + +-- | Parse of a string containing a Haskell pattern. +parsePat :: String -> ParseResult (Pat L) +parsePat = simpleParse mparsePat + +-- | Parse of a string containing a Haskell pattern, using an explicit mode. +parsePatWithMode :: ParseMode -> String -> ParseResult (Pat L) +parsePatWithMode = modeParse mparsePat + +-- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. +parsePatWithComments :: ParseMode -> String -> ParseResult (Pat L, [Comment]) +parsePatWithComments = commentParse mparsePat + +-- | Parse of a string containing a Haskell top-level declaration. +parseDecl :: String -> ParseResult (Decl L) +parseDecl = simpleParse mparseDecl + +-- | Parse of a string containing a Haskell top-level declaration, using an explicit mode. +parseDeclWithMode :: ParseMode -> String -> ParseResult (Decl L) +parseDeclWithMode = modeParse mparseDecl + +-- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. +parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl L, [Comment]) +parseDeclWithComments = commentParse mparseDecl + +-- | Parse of a string containing a Haskell type. +parseType :: String -> ParseResult (Type L) +parseType = runParser mparseType + +-- | Parse of a string containing a Haskell type, using an explicit mode. +parseTypeWithMode :: ParseMode -> String -> ParseResult (Type L) +parseTypeWithMode mode = runParserWithMode mode mparseType + +-- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. +parseTypeWithComments :: ParseMode -> String -> ParseResult (Type L, [Comment]) +parseTypeWithComments mode str = runParserWithModeComments mode mparseType str + + +simpleParse :: AppFixity a => P (a L) -> String -> ParseResult (a L) +simpleParse p = fmap (applyFixities preludeFixities) . runParser p + +modeParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L) +modeParse p mode = fmap (applyFixities (fixities mode)) . runParserWithMode mode p + +commentParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L, [Comment]) +commentParse p mode str = runParserWithModeComments mode p str + >>= \(ast, cs) -> return (applyFixities (fixities mode) ast, cs) + +-- | Partial parse of a string starting with a series of top-level option pragmas. +getTopPragmas :: String -> ParseResult [OptionPragma L] +getTopPragmas = runParser (mfindOptPragmas >>= \(ps,_,_) -> return ps) +{-# LINE 1 "templates\GenericTemplate.hs" #-} +{-# LINE 1 "templates\\GenericTemplate.hs" #-} +{-# LINE 1 "<built-in>" #-} +{-# LINE 1 "<command line>" #-} +{-# LINE 1 "templates\\GenericTemplate.hs" #-} +-- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp + +{-# LINE 28 "templates\\GenericTemplate.hs" #-} + + +data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList + + + + + +{-# LINE 49 "templates\\GenericTemplate.hs" #-} + +{-# LINE 59 "templates\\GenericTemplate.hs" #-} + +{-# LINE 68 "templates\\GenericTemplate.hs" #-} + +infixr 9 `HappyStk` +data HappyStk a = HappyStk a (HappyStk a) + +----------------------------------------------------------------------------- +-- starting the parse + +happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll + +----------------------------------------------------------------------------- +-- Accepting the parse + +-- If the current token is 0#, it means we've just accepted a partial +-- parse (a %partial parser). We must ignore the saved token on the top of +-- the stack in this case. +happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) = + happyReturn1 ans +happyAccept j tk st sts (HappyStk ans _) = + (happyTcHack j (happyTcHack st)) (happyReturn1 ans) + +----------------------------------------------------------------------------- +-- Arrays only: do the next action + + + +happyDoAction i tk st + = {- nothing -} + + + case action of + 0# -> {- nothing -} + happyFail i tk st + -1# -> {- nothing -} + happyAccept i tk st + n | (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#)) -> {- nothing -} + + (happyReduceArr Happy_Data_Array.! rule) i tk st + where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#)))))) + n -> {- nothing -} + + + happyShift new_state i tk st + where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) + where off = indexShortOffAddr happyActOffsets st + off_i = (off Happy_GHC_Exts.+# i) + check = if (off_i Happy_GHC_Exts.>=# (0# :: Happy_GHC_Exts.Int#)) + then (indexShortOffAddr happyCheck off_i Happy_GHC_Exts.==# i) + else False + action | check = indexShortOffAddr happyTable off_i + | otherwise = indexShortOffAddr happyDefActions st + +{-# LINE 127 "templates\\GenericTemplate.hs" #-} + + +indexShortOffAddr (HappyA# arr) off = +#if __GLASGOW_HASKELL__ > 500 + Happy_GHC_Exts.narrow16Int# i +#elif __GLASGOW_HASKELL__ == 500 + Happy_GHC_Exts.intToInt16# i +#else + Happy_GHC_Exts.iShiftRA# (Happy_GHC_Exts.iShiftL# i 16#) 16# +#endif + where +#if __GLASGOW_HASKELL__ >= 503 + i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low) +#else + i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.shiftL# high 8#) low) +#endif + high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#))) + low = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off')) + off' = off Happy_GHC_Exts.*# 2# + + + + + +data HappyAddr = HappyA# Happy_GHC_Exts.Addr# + + + + +----------------------------------------------------------------------------- +-- HappyState data type (not arrays) + +{-# LINE 170 "templates\\GenericTemplate.hs" #-} + +----------------------------------------------------------------------------- +-- Shifting a token + +happyShift new_state 0# tk st sts stk@(x `HappyStk` _) = + let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in +-- trace "shifting the error token" $ + happyDoAction i tk new_state (HappyCons (st) (sts)) (stk) + +happyShift new_state i tk st sts stk = + happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk) + +-- happyReduce is specialised for the common cases. + +happySpecReduce_0 i fn 0# tk st sts stk + = happyFail 0# tk st sts stk +happySpecReduce_0 nt fn j tk st@((action)) sts stk + = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk) + +happySpecReduce_1 i fn 0# tk st sts stk + = happyFail 0# tk st sts stk +happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk') + = let r = fn v1 in + happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) + +happySpecReduce_2 i fn 0# tk st sts stk + = happyFail 0# tk st sts stk +happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk') + = let r = fn v1 v2 in + happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) + +happySpecReduce_3 i fn 0# tk st sts stk + = happyFail 0# tk st sts stk +happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk') + = let r = fn v1 v2 v3 in + happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) + +happyReduce k i fn 0# tk st sts stk + = happyFail 0# tk st sts stk +happyReduce k nt fn j tk st sts stk + = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of + sts1@((HappyCons (st1@(action)) (_))) -> + let r = fn stk in -- it doesn't hurt to always seq here... + happyDoSeq r (happyGoto nt j tk st1 sts1 r) + +happyMonadReduce k nt fn 0# tk st sts stk + = happyFail 0# tk st sts stk +happyMonadReduce k nt fn j tk st sts stk = + happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk)) + where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) + drop_stk = happyDropStk k stk + +happyMonad2Reduce k nt fn 0# tk st sts stk + = happyFail 0# tk st sts stk +happyMonad2Reduce k nt fn j tk st sts stk = + happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk)) + where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) + drop_stk = happyDropStk k stk + + off = indexShortOffAddr happyGotoOffsets st1 + off_i = (off Happy_GHC_Exts.+# nt) + new_state = indexShortOffAddr happyTable off_i + + + + +happyDrop 0# l = l +happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t + +happyDropStk 0# l = l +happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs + +----------------------------------------------------------------------------- +-- Moving to a new state after a reduction + + +happyGoto nt j tk st = + {- nothing -} + happyDoAction j tk new_state + where off = indexShortOffAddr happyGotoOffsets st + off_i = (off Happy_GHC_Exts.+# nt) + new_state = indexShortOffAddr happyTable off_i + + + + +----------------------------------------------------------------------------- +-- Error recovery (0# is the error token) + +-- parse error if we are in recovery and we fail again +happyFail 0# tk old_st _ stk = +-- trace "failing" $ + happyError_ tk + +{- We don't need state discarding for our restricted implementation of + "error". In fact, it can cause some bogus parses, so I've disabled it + for now --SDM + +-- discard a state +happyFail 0# tk old_st (HappyCons ((action)) (sts)) + (saved_tok `HappyStk` _ `HappyStk` stk) = +-- trace ("discarding state, depth " ++ show (length stk)) $ + happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk)) +-} + +-- Enter error recovery: generate an error token, +-- save the old token and carry on. +happyFail i tk (action) sts stk = +-- trace "entering error recovery" $ + happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk) + +-- Internal happy errors: + +notHappyAtAll = error "Internal Happy error\n" + +----------------------------------------------------------------------------- +-- Hack to get the typechecker to accept our action functions + + +happyTcHack :: Happy_GHC_Exts.Int# -> a -> a +happyTcHack x y = y +{-# INLINE happyTcHack #-} + + +----------------------------------------------------------------------------- +-- Seq-ing. If the --strict flag is given, then Happy emits +-- happySeq = happyDoSeq +-- otherwise it emits +-- happySeq = happyDontSeq + +happyDoSeq, happyDontSeq :: a -> b -> b +happyDoSeq a b = a `seq` b +happyDontSeq a b = b + +----------------------------------------------------------------------------- +-- Don't inline any functions from the template. GHC has a nasty habit +-- of deciding to inline happyGoto everywhere, which increases the size of +-- the generated parser quite a bit. + + +{-# NOINLINE happyDoAction #-} +{-# NOINLINE happyTable #-} +{-# NOINLINE happyCheck #-} +{-# NOINLINE happyActOffsets #-} +{-# NOINLINE happyGotoOffsets #-} +{-# NOINLINE happyDefActions #-} + +{-# NOINLINE happyShift #-} +{-# NOINLINE happySpecReduce_0 #-} +{-# NOINLINE happySpecReduce_1 #-} +{-# NOINLINE happySpecReduce_2 #-} +{-# NOINLINE happySpecReduce_3 #-} +{-# NOINLINE happyReduce #-} +{-# NOINLINE happyMonadReduce #-} +{-# NOINLINE happyGoto #-} +{-# NOINLINE happyFail #-} + +-- end of Happy Template.
− dist/build/Language/Haskell/Exts/Parser.hs
@@ -1,7547 +0,0 @@-{-# OPTIONS_GHC -fno-warn-overlapping-patterns #-} -{-# OPTIONS -fglasgow-exts -cpp #-} ------------------------------------------------------------------------------ --- | --- Module : Language.Haskell.Exts.Parser --- Copyright : (c) Niklas Broberg 2004-2009, --- Original (c) Simon Marlow, Sven Panne 1997-2000 --- License : BSD-style (see the file LICENSE.txt) --- --- Maintainer : Niklas Broberg, d00nibro@chalmers.se --- Stability : stable --- Portability : portable --- --- ------------------------------------------------------------------------------ -module Language.Haskell.Exts.Parser ( - -- * General parsing - Parseable(..), - ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult, - -- * Parsing of specific AST elements - -- ** Modules - parseModule, parseModuleWithMode, parseModuleWithComments, - -- ** Expressions - parseExp, parseExpWithMode, parseExpWithComments, - -- ** Patterns - parsePat, parsePatWithMode, parsePatWithComments, - -- ** Declarations - parseDecl, parseDeclWithMode, parseDeclWithComments, - -- ** Types - parseType, parseTypeWithMode, parseTypeWithComments, - -- ** Option pragmas - getTopPragmas - ) where -import Language.Haskell.Exts.Syntax hiding ( Type(..), Exp(..), Asst(..), XAttr(..), FieldUpdate(..) ) -import Language.Haskell.Exts.Syntax ( Type, Exp, Asst ) -import Language.Haskell.Exts.ParseMonad -import Language.Haskell.Exts.Lexer -import Language.Haskell.Exts.ParseUtils -import Language.Haskell.Exts.Extension -import Language.Haskell.Exts.Fixity -import Language.Haskell.Exts.Comments ( Comment ) -#if __GLASGOW_HASKELL__ >= 503 -import qualified Data.Array as Happy_Data_Array -#else -import qualified Array as Happy_Data_Array -#endif -#if __GLASGOW_HASKELL__ >= 503 -import qualified GHC.Exts as Happy_GHC_Exts -#else -import qualified GlaExts as Happy_GHC_Exts -#endif - --- parser produced by Happy Version 1.18.4 - -newtype HappyAbsSyn = HappyAbsSyn HappyAny -#if __GLASGOW_HASKELL__ >= 607 -type HappyAny = Happy_GHC_Exts.Any -#else -type HappyAny = forall a . a -#endif -happyIn9 :: (Module) -> (HappyAbsSyn ) -happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn9 #-} -happyOut9 :: (HappyAbsSyn ) -> (Module) -happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut9 #-} -happyIn10 :: (PExp) -> (HappyAbsSyn ) -happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn10 #-} -happyOut10 :: (HappyAbsSyn ) -> (PExp) -happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut10 #-} -happyIn11 :: ([OptionPragma]) -> (HappyAbsSyn ) -happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn11 #-} -happyOut11 :: (HappyAbsSyn ) -> ([OptionPragma]) -happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut11 #-} -happyIn12 :: ([OptionPragma]) -> (HappyAbsSyn ) -happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn12 #-} -happyOut12 :: (HappyAbsSyn ) -> ([OptionPragma]) -happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut12 #-} -happyIn13 :: (OptionPragma) -> (HappyAbsSyn ) -happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn13 #-} -happyOut13 :: (HappyAbsSyn ) -> (OptionPragma) -happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut13 #-} -happyIn14 :: ([Name]) -> (HappyAbsSyn ) -happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn14 #-} -happyOut14 :: (HappyAbsSyn ) -> ([Name]) -happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut14 #-} -happyIn15 :: ([OptionPragma] -> Module) -> (HappyAbsSyn ) -happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn15 #-} -happyOut15 :: (HappyAbsSyn ) -> ([OptionPragma] -> Module) -happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut15 #-} -happyIn16 :: (Maybe WarningText) -> (HappyAbsSyn ) -happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn16 #-} -happyOut16 :: (HappyAbsSyn ) -> (Maybe WarningText) -happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut16 #-} -happyIn17 :: (([ImportDecl],[Decl])) -> (HappyAbsSyn ) -happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn17 #-} -happyOut17 :: (HappyAbsSyn ) -> (([ImportDecl],[Decl])) -happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut17 #-} -happyIn18 :: (([ImportDecl],[Decl])) -> (HappyAbsSyn ) -happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn18 #-} -happyOut18 :: (HappyAbsSyn ) -> (([ImportDecl],[Decl])) -happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut18 #-} -happyIn19 :: (()) -> (HappyAbsSyn ) -happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn19 #-} -happyOut19 :: (HappyAbsSyn ) -> (()) -happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut19 #-} -happyIn20 :: (()) -> (HappyAbsSyn ) -happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn20 #-} -happyOut20 :: (HappyAbsSyn ) -> (()) -happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut20 #-} -happyIn21 :: (Maybe [ExportSpec]) -> (HappyAbsSyn ) -happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn21 #-} -happyOut21 :: (HappyAbsSyn ) -> (Maybe [ExportSpec]) -happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut21 #-} -happyIn22 :: ([ExportSpec]) -> (HappyAbsSyn ) -happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn22 #-} -happyOut22 :: (HappyAbsSyn ) -> ([ExportSpec]) -happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut22 #-} -happyIn23 :: (()) -> (HappyAbsSyn ) -happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn23 #-} -happyOut23 :: (HappyAbsSyn ) -> (()) -happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut23 #-} -happyIn24 :: ([ExportSpec]) -> (HappyAbsSyn ) -happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn24 #-} -happyOut24 :: (HappyAbsSyn ) -> ([ExportSpec]) -happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut24 #-} -happyIn25 :: (ExportSpec) -> (HappyAbsSyn ) -happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn25 #-} -happyOut25 :: (HappyAbsSyn ) -> (ExportSpec) -happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut25 #-} -happyIn26 :: ([ImportDecl]) -> (HappyAbsSyn ) -happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn26 #-} -happyOut26 :: (HappyAbsSyn ) -> ([ImportDecl]) -happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut26 #-} -happyIn27 :: (ImportDecl) -> (HappyAbsSyn ) -happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn27 #-} -happyOut27 :: (HappyAbsSyn ) -> (ImportDecl) -happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut27 #-} -happyIn28 :: (Bool) -> (HappyAbsSyn ) -happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn28 #-} -happyOut28 :: (HappyAbsSyn ) -> (Bool) -happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut28 #-} -happyIn29 :: (Bool) -> (HappyAbsSyn ) -happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn29 #-} -happyOut29 :: (HappyAbsSyn ) -> (Bool) -happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut29 #-} -happyIn30 :: (Maybe String) -> (HappyAbsSyn ) -happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn30 #-} -happyOut30 :: (HappyAbsSyn ) -> (Maybe String) -happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut30 #-} -happyIn31 :: (Maybe ModuleName) -> (HappyAbsSyn ) -happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn31 #-} -happyOut31 :: (HappyAbsSyn ) -> (Maybe ModuleName) -happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut31 #-} -happyIn32 :: (Maybe (Bool, [ImportSpec])) -> (HappyAbsSyn ) -happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn32 #-} -happyOut32 :: (HappyAbsSyn ) -> (Maybe (Bool, [ImportSpec])) -happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut32 #-} -happyIn33 :: ((Bool, [ImportSpec])) -> (HappyAbsSyn ) -happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn33 #-} -happyOut33 :: (HappyAbsSyn ) -> ((Bool, [ImportSpec])) -happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut33 #-} -happyIn34 :: (Bool) -> (HappyAbsSyn ) -happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn34 #-} -happyOut34 :: (HappyAbsSyn ) -> (Bool) -happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut34 #-} -happyIn35 :: ([ImportSpec]) -> (HappyAbsSyn ) -happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn35 #-} -happyOut35 :: (HappyAbsSyn ) -> ([ImportSpec]) -happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut35 #-} -happyIn36 :: (ImportSpec) -> (HappyAbsSyn ) -happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn36 #-} -happyOut36 :: (HappyAbsSyn ) -> (ImportSpec) -happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut36 #-} -happyIn37 :: ([CName]) -> (HappyAbsSyn ) -happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn37 #-} -happyOut37 :: (HappyAbsSyn ) -> ([CName]) -happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut37 #-} -happyIn38 :: (CName) -> (HappyAbsSyn ) -happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn38 #-} -happyOut38 :: (HappyAbsSyn ) -> (CName) -happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut38 #-} -happyIn39 :: (Decl) -> (HappyAbsSyn ) -happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn39 #-} -happyOut39 :: (HappyAbsSyn ) -> (Decl) -happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut39 #-} -happyIn40 :: (Int) -> (HappyAbsSyn ) -happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn40 #-} -happyOut40 :: (HappyAbsSyn ) -> (Int) -happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut40 #-} -happyIn41 :: (Assoc) -> (HappyAbsSyn ) -happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn41 #-} -happyOut41 :: (HappyAbsSyn ) -> (Assoc) -happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut41 #-} -happyIn42 :: ([Op]) -> (HappyAbsSyn ) -happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn42 #-} -happyOut42 :: (HappyAbsSyn ) -> ([Op]) -happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut42 #-} -happyIn43 :: ([Decl]) -> (HappyAbsSyn ) -happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn43 #-} -happyOut43 :: (HappyAbsSyn ) -> ([Decl]) -happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut43 #-} -happyIn44 :: ([Decl]) -> (HappyAbsSyn ) -happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn44 #-} -happyOut44 :: (HappyAbsSyn ) -> ([Decl]) -happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut44 #-} -happyIn45 :: (Decl) -> (HappyAbsSyn ) -happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn45 #-} -happyOut45 :: (HappyAbsSyn ) -> (Decl) -happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut45 #-} -happyIn46 :: (DataOrNew) -> (HappyAbsSyn ) -happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn46 #-} -happyOut46 :: (HappyAbsSyn ) -> (DataOrNew) -happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut46 #-} -happyIn47 :: ([Type]) -> (HappyAbsSyn ) -happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn47 #-} -happyOut47 :: (HappyAbsSyn ) -> ([Type]) -happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut47 #-} -happyIn48 :: ([Decl]) -> (HappyAbsSyn ) -happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn48 #-} -happyOut48 :: (HappyAbsSyn ) -> ([Decl]) -happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut48 #-} -happyIn49 :: ([Decl]) -> (HappyAbsSyn ) -happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn49 #-} -happyOut49 :: (HappyAbsSyn ) -> ([Decl]) -happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut49 #-} -happyIn50 :: (Decl) -> (HappyAbsSyn ) -happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn50 #-} -happyOut50 :: (HappyAbsSyn ) -> (Decl) -happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut50 #-} -happyIn51 :: ([Decl]) -> (HappyAbsSyn ) -happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn51 #-} -happyOut51 :: (HappyAbsSyn ) -> ([Decl]) -happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut51 #-} -happyIn52 :: (Decl) -> (HappyAbsSyn ) -happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn52 #-} -happyOut52 :: (HappyAbsSyn ) -> (Decl) -happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut52 #-} -happyIn53 :: ([Type]) -> (HappyAbsSyn ) -happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn53 #-} -happyOut53 :: (HappyAbsSyn ) -> ([Type]) -happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut53 #-} -happyIn54 :: (Type) -> (HappyAbsSyn ) -happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn54 #-} -happyOut54 :: (HappyAbsSyn ) -> (Type) -happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut54 #-} -happyIn55 :: (Binds) -> (HappyAbsSyn ) -happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn55 #-} -happyOut55 :: (HappyAbsSyn ) -> (Binds) -happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut55 #-} -happyIn56 :: ([Name]) -> (HappyAbsSyn ) -happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn56 #-} -happyOut56 :: (HappyAbsSyn ) -> ([Name]) -happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut56 #-} -happyIn57 :: (CallConv) -> (HappyAbsSyn ) -happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn57 #-} -happyOut57 :: (HappyAbsSyn ) -> (CallConv) -happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut57 #-} -happyIn58 :: (Safety) -> (HappyAbsSyn ) -happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn58 #-} -happyOut58 :: (HappyAbsSyn ) -> (Safety) -happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut58 #-} -happyIn59 :: ((String, Name, Type)) -> (HappyAbsSyn ) -happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn59 #-} -happyOut59 :: (HappyAbsSyn ) -> ((String, Name, Type)) -happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut59 #-} -happyIn60 :: ([Rule]) -> (HappyAbsSyn ) -happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn60 #-} -happyOut60 :: (HappyAbsSyn ) -> ([Rule]) -happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut60 #-} -happyIn61 :: (Rule) -> (HappyAbsSyn ) -happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn61 #-} -happyOut61 :: (HappyAbsSyn ) -> (Rule) -happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut61 #-} -happyIn62 :: (Activation) -> (HappyAbsSyn ) -happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn62 #-} -happyOut62 :: (HappyAbsSyn ) -> (Activation) -happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut62 #-} -happyIn63 :: (Maybe [RuleVar]) -> (HappyAbsSyn ) -happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn63 #-} -happyOut63 :: (HappyAbsSyn ) -> (Maybe [RuleVar]) -happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut63 #-} -happyIn64 :: ([RuleVar]) -> (HappyAbsSyn ) -happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn64 #-} -happyOut64 :: (HappyAbsSyn ) -> ([RuleVar]) -happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut64 #-} -happyIn65 :: (RuleVar) -> (HappyAbsSyn ) -happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn65 #-} -happyOut65 :: (HappyAbsSyn ) -> (RuleVar) -happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut65 #-} -happyIn66 :: ([([Name],String)]) -> (HappyAbsSyn ) -happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn66 #-} -happyOut66 :: (HappyAbsSyn ) -> ([([Name],String)]) -happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut66 #-} -happyIn67 :: (([Name], String)) -> (HappyAbsSyn ) -happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn67 #-} -happyOut67 :: (HappyAbsSyn ) -> (([Name], String)) -happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut67 #-} -happyIn68 :: ([Name]) -> (HappyAbsSyn ) -happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn68 #-} -happyOut68 :: (HappyAbsSyn ) -> ([Name]) -happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut68 #-} -happyIn69 :: (Name) -> (HappyAbsSyn ) -happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn69 #-} -happyOut69 :: (HappyAbsSyn ) -> (Name) -happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut69 #-} -happyIn70 :: (Type) -> (HappyAbsSyn ) -happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn70 #-} -happyOut70 :: (HappyAbsSyn ) -> (Type) -happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut70 #-} -happyIn71 :: (PType) -> (HappyAbsSyn ) -happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn71 #-} -happyOut71 :: (HappyAbsSyn ) -> (PType) -happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut71 #-} -happyIn72 :: (Type) -> (HappyAbsSyn ) -happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn72 #-} -happyOut72 :: (HappyAbsSyn ) -> (Type) -happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut72 #-} -happyIn73 :: (PType) -> (HappyAbsSyn ) -happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn73 #-} -happyOut73 :: (HappyAbsSyn ) -> (PType) -happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut73 #-} -happyIn74 :: (Type) -> (HappyAbsSyn ) -happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn74 #-} -happyOut74 :: (HappyAbsSyn ) -> (Type) -happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut74 #-} -happyIn75 :: (PType) -> (HappyAbsSyn ) -happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn75 #-} -happyOut75 :: (HappyAbsSyn ) -> (PType) -happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut75 #-} -happyIn76 :: (Type) -> (HappyAbsSyn ) -happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn76 #-} -happyOut76 :: (HappyAbsSyn ) -> (Type) -happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut76 #-} -happyIn77 :: (PType) -> (HappyAbsSyn ) -happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn77 #-} -happyOut77 :: (HappyAbsSyn ) -> (PType) -happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut77 #-} -happyIn78 :: (QName) -> (HappyAbsSyn ) -happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn78 #-} -happyOut78 :: (HappyAbsSyn ) -> (QName) -happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut78 #-} -happyIn79 :: (QName) -> (HappyAbsSyn ) -happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn79 #-} -happyOut79 :: (HappyAbsSyn ) -> (QName) -happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut79 #-} -happyIn80 :: (QName) -> (HappyAbsSyn ) -happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn80 #-} -happyOut80 :: (HappyAbsSyn ) -> (QName) -happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut80 #-} -happyIn81 :: (Type) -> (HappyAbsSyn ) -happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn81 #-} -happyOut81 :: (HappyAbsSyn ) -> (Type) -happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut81 #-} -happyIn82 :: (PType) -> (HappyAbsSyn ) -happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn82 #-} -happyOut82 :: (HappyAbsSyn ) -> (PType) -happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut82 #-} -happyIn83 :: (PContext) -> (HappyAbsSyn ) -happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn83 #-} -happyOut83 :: (HappyAbsSyn ) -> (PContext) -happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut83 #-} -happyIn84 :: ([PType]) -> (HappyAbsSyn ) -happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn84 #-} -happyOut84 :: (HappyAbsSyn ) -> ([PType]) -happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut84 #-} -happyIn85 :: ([PType]) -> (HappyAbsSyn ) -happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn85 #-} -happyOut85 :: (HappyAbsSyn ) -> ([PType]) -happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut85 #-} -happyIn86 :: ([TyVarBind]) -> (HappyAbsSyn ) -happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn86 #-} -happyOut86 :: (HappyAbsSyn ) -> ([TyVarBind]) -happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut86 #-} -happyIn87 :: (TyVarBind) -> (HappyAbsSyn ) -happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn87 #-} -happyOut87 :: (HappyAbsSyn ) -> (TyVarBind) -happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut87 #-} -happyIn88 :: ([Name]) -> (HappyAbsSyn ) -happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn88 #-} -happyOut88 :: (HappyAbsSyn ) -> ([Name]) -happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut88 #-} -happyIn89 :: ([FunDep]) -> (HappyAbsSyn ) -happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn89 #-} -happyOut89 :: (HappyAbsSyn ) -> ([FunDep]) -happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut89 #-} -happyIn90 :: ([FunDep]) -> (HappyAbsSyn ) -happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn90 #-} -happyOut90 :: (HappyAbsSyn ) -> ([FunDep]) -happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut90 #-} -happyIn91 :: (FunDep) -> (HappyAbsSyn ) -happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn91 #-} -happyOut91 :: (HappyAbsSyn ) -> (FunDep) -happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut91 #-} -happyIn92 :: ([GadtDecl]) -> (HappyAbsSyn ) -happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn92 #-} -happyOut92 :: (HappyAbsSyn ) -> ([GadtDecl]) -happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut92 #-} -happyIn93 :: ([GadtDecl]) -> (HappyAbsSyn ) -happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn93 #-} -happyOut93 :: (HappyAbsSyn ) -> ([GadtDecl]) -happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut93 #-} -happyIn94 :: ([GadtDecl]) -> (HappyAbsSyn ) -happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn94 #-} -happyOut94 :: (HappyAbsSyn ) -> ([GadtDecl]) -happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut94 #-} -happyIn95 :: ([GadtDecl]) -> (HappyAbsSyn ) -happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn95 #-} -happyOut95 :: (HappyAbsSyn ) -> ([GadtDecl]) -happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut95 #-} -happyIn96 :: (GadtDecl) -> (HappyAbsSyn ) -happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn96 #-} -happyOut96 :: (HappyAbsSyn ) -> (GadtDecl) -happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut96 #-} -happyIn97 :: ([QualConDecl]) -> (HappyAbsSyn ) -happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn97 #-} -happyOut97 :: (HappyAbsSyn ) -> ([QualConDecl]) -happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut97 #-} -happyIn98 :: ([QualConDecl]) -> (HappyAbsSyn ) -happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn98 #-} -happyOut98 :: (HappyAbsSyn ) -> ([QualConDecl]) -happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut98 #-} -happyIn99 :: (QualConDecl) -> (HappyAbsSyn ) -happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn99 #-} -happyOut99 :: (HappyAbsSyn ) -> (QualConDecl) -happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut99 #-} -happyIn100 :: ([TyVarBind]) -> (HappyAbsSyn ) -happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn100 #-} -happyOut100 :: (HappyAbsSyn ) -> ([TyVarBind]) -happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut100 #-} -happyIn101 :: (ConDecl) -> (HappyAbsSyn ) -happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn101 #-} -happyOut101 :: (HappyAbsSyn ) -> (ConDecl) -happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut101 #-} -happyIn102 :: ((Name, [BangType])) -> (HappyAbsSyn ) -happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn102 #-} -happyOut102 :: (HappyAbsSyn ) -> ((Name, [BangType])) -happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut102 #-} -happyIn103 :: ((Name, [BangType])) -> (HappyAbsSyn ) -happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn103 #-} -happyOut103 :: (HappyAbsSyn ) -> ((Name, [BangType])) -happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut103 #-} -happyIn104 :: (BangType) -> (HappyAbsSyn ) -happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn104 #-} -happyOut104 :: (HappyAbsSyn ) -> (BangType) -happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut104 #-} -happyIn105 :: (BangType) -> (HappyAbsSyn ) -happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn105 #-} -happyOut105 :: (HappyAbsSyn ) -> (BangType) -happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut105 #-} -happyIn106 :: ([([Name],BangType)]) -> (HappyAbsSyn ) -happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn106 #-} -happyOut106 :: (HappyAbsSyn ) -> ([([Name],BangType)]) -happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut106 #-} -happyIn107 :: (([Name],BangType)) -> (HappyAbsSyn ) -happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn107 #-} -happyOut107 :: (HappyAbsSyn ) -> (([Name],BangType)) -happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut107 #-} -happyIn108 :: (BangType) -> (HappyAbsSyn ) -happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn108 #-} -happyOut108 :: (HappyAbsSyn ) -> (BangType) -happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut108 #-} -happyIn109 :: ([Deriving]) -> (HappyAbsSyn ) -happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn109 #-} -happyOut109 :: (HappyAbsSyn ) -> ([Deriving]) -happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut109 #-} -happyIn110 :: ([Deriving]) -> (HappyAbsSyn ) -happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn110 #-} -happyOut110 :: (HappyAbsSyn ) -> ([Deriving]) -happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut110 #-} -happyIn111 :: (QName) -> (HappyAbsSyn ) -happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn111 #-} -happyOut111 :: (HappyAbsSyn ) -> (QName) -happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut111 #-} -happyIn112 :: (Kind) -> (HappyAbsSyn ) -happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn112 #-} -happyOut112 :: (HappyAbsSyn ) -> (Kind) -happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut112 #-} -happyIn113 :: (Kind) -> (HappyAbsSyn ) -happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn113 #-} -happyOut113 :: (HappyAbsSyn ) -> (Kind) -happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut113 #-} -happyIn114 :: (Kind) -> (HappyAbsSyn ) -happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn114 #-} -happyOut114 :: (HappyAbsSyn ) -> (Kind) -happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut114 #-} -happyIn115 :: (Maybe Kind) -> (HappyAbsSyn ) -happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn115 #-} -happyOut115 :: (HappyAbsSyn ) -> (Maybe Kind) -happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut115 #-} -happyIn116 :: ([ClassDecl]) -> (HappyAbsSyn ) -happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn116 #-} -happyOut116 :: (HappyAbsSyn ) -> ([ClassDecl]) -happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut116 #-} -happyIn117 :: ([ClassDecl]) -> (HappyAbsSyn ) -happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn117 #-} -happyOut117 :: (HappyAbsSyn ) -> ([ClassDecl]) -happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut117 #-} -happyIn118 :: ([ClassDecl]) -> (HappyAbsSyn ) -happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn118 #-} -happyOut118 :: (HappyAbsSyn ) -> ([ClassDecl]) -happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut118 #-} -happyIn119 :: ([ClassDecl]) -> (HappyAbsSyn ) -happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn119 #-} -happyOut119 :: (HappyAbsSyn ) -> ([ClassDecl]) -happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut119 #-} -happyIn120 :: (ClassDecl) -> (HappyAbsSyn ) -happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn120 #-} -happyOut120 :: (HappyAbsSyn ) -> (ClassDecl) -happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut120 #-} -happyIn121 :: (ClassDecl) -> (HappyAbsSyn ) -happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn121 #-} -happyOut121 :: (HappyAbsSyn ) -> (ClassDecl) -happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut121 #-} -happyIn122 :: ([InstDecl]) -> (HappyAbsSyn ) -happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn122 #-} -happyOut122 :: (HappyAbsSyn ) -> ([InstDecl]) -happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut122 #-} -happyIn123 :: ([InstDecl]) -> (HappyAbsSyn ) -happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn123 #-} -happyOut123 :: (HappyAbsSyn ) -> ([InstDecl]) -happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut123 #-} -happyIn124 :: ([InstDecl]) -> (HappyAbsSyn ) -happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn124 #-} -happyOut124 :: (HappyAbsSyn ) -> ([InstDecl]) -happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut124 #-} -happyIn125 :: (InstDecl) -> (HappyAbsSyn ) -happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn125 #-} -happyOut125 :: (HappyAbsSyn ) -> (InstDecl) -happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut125 #-} -happyIn126 :: (InstDecl) -> (HappyAbsSyn ) -happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn126 #-} -happyOut126 :: (HappyAbsSyn ) -> (InstDecl) -happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut126 #-} -happyIn127 :: (InstDecl) -> (HappyAbsSyn ) -happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn127 #-} -happyOut127 :: (HappyAbsSyn ) -> (InstDecl) -happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut127 #-} -happyIn128 :: (Decl) -> (HappyAbsSyn ) -happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn128 #-} -happyOut128 :: (HappyAbsSyn ) -> (Decl) -happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut128 #-} -happyIn129 :: (Binds) -> (HappyAbsSyn ) -happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn129 #-} -happyOut129 :: (HappyAbsSyn ) -> (Binds) -happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut129 #-} -happyIn130 :: (Maybe Type) -> (HappyAbsSyn ) -happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn130 #-} -happyOut130 :: (HappyAbsSyn ) -> (Maybe Type) -happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut130 #-} -happyIn131 :: (Rhs) -> (HappyAbsSyn ) -happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn131 #-} -happyOut131 :: (HappyAbsSyn ) -> (Rhs) -happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut131 #-} -happyIn132 :: ([GuardedRhs]) -> (HappyAbsSyn ) -happyIn132 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn132 #-} -happyOut132 :: (HappyAbsSyn ) -> ([GuardedRhs]) -happyOut132 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut132 #-} -happyIn133 :: (GuardedRhs) -> (HappyAbsSyn ) -happyIn133 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn133 #-} -happyOut133 :: (HappyAbsSyn ) -> (GuardedRhs) -happyOut133 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut133 #-} -happyIn134 :: (Exp) -> (HappyAbsSyn ) -happyIn134 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn134 #-} -happyOut134 :: (HappyAbsSyn ) -> (Exp) -happyOut134 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut134 #-} -happyIn135 :: (PExp) -> (HappyAbsSyn ) -happyIn135 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn135 #-} -happyOut135 :: (HappyAbsSyn ) -> (PExp) -happyOut135 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut135 #-} -happyIn136 :: (PExp) -> (HappyAbsSyn ) -happyIn136 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn136 #-} -happyOut136 :: (HappyAbsSyn ) -> (PExp) -happyOut136 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut136 #-} -happyIn137 :: (PExp) -> (HappyAbsSyn ) -happyIn137 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn137 #-} -happyOut137 :: (HappyAbsSyn ) -> (PExp) -happyOut137 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut137 #-} -happyIn138 :: (PExp) -> (HappyAbsSyn ) -happyIn138 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn138 #-} -happyOut138 :: (HappyAbsSyn ) -> (PExp) -happyOut138 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut138 #-} -happyIn139 :: (PExp) -> (HappyAbsSyn ) -happyIn139 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn139 #-} -happyOut139 :: (HappyAbsSyn ) -> (PExp) -happyOut139 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut139 #-} -happyIn140 :: (PExp) -> (HappyAbsSyn ) -happyIn140 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn140 #-} -happyOut140 :: (HappyAbsSyn ) -> (PExp) -happyOut140 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut140 #-} -happyIn141 :: (PExp) -> (HappyAbsSyn ) -happyIn141 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn141 #-} -happyOut141 :: (HappyAbsSyn ) -> (PExp) -happyOut141 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut141 #-} -happyIn142 :: (PExp) -> (HappyAbsSyn ) -happyIn142 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn142 #-} -happyOut142 :: (HappyAbsSyn ) -> (PExp) -happyOut142 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut142 #-} -happyIn143 :: ([Pat]) -> (HappyAbsSyn ) -happyIn143 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn143 #-} -happyOut143 :: (HappyAbsSyn ) -> ([Pat]) -happyOut143 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut143 #-} -happyIn144 :: (Pat) -> (HappyAbsSyn ) -happyIn144 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn144 #-} -happyOut144 :: (HappyAbsSyn ) -> (Pat) -happyOut144 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut144 #-} -happyIn145 :: (PExp) -> (HappyAbsSyn ) -happyIn145 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn145 #-} -happyOut145 :: (HappyAbsSyn ) -> (PExp) -happyOut145 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut145 #-} -happyIn146 :: (PExp) -> (HappyAbsSyn ) -happyIn146 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn146 #-} -happyOut146 :: (HappyAbsSyn ) -> (PExp) -happyOut146 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut146 #-} -happyIn147 :: (PExp) -> (HappyAbsSyn ) -happyIn147 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn147 #-} -happyOut147 :: (HappyAbsSyn ) -> (PExp) -happyOut147 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut147 #-} -happyIn148 :: (Int) -> (HappyAbsSyn ) -happyIn148 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn148 #-} -happyOut148 :: (HappyAbsSyn ) -> (Int) -happyOut148 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut148 #-} -happyIn149 :: (PExp) -> (HappyAbsSyn ) -happyIn149 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn149 #-} -happyOut149 :: (HappyAbsSyn ) -> (PExp) -happyOut149 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut149 #-} -happyIn150 :: ([Maybe PExp]) -> (HappyAbsSyn ) -happyIn150 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn150 #-} -happyOut150 :: (HappyAbsSyn ) -> ([Maybe PExp]) -happyOut150 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut150 #-} -happyIn151 :: ([PExp]) -> (HappyAbsSyn ) -happyIn151 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn151 #-} -happyOut151 :: (HappyAbsSyn ) -> ([PExp]) -happyOut151 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut151 #-} -happyIn152 :: (PExp) -> (HappyAbsSyn ) -happyIn152 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn152 #-} -happyOut152 :: (HappyAbsSyn ) -> (PExp) -happyOut152 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut152 #-} -happyIn153 :: (PExp) -> (HappyAbsSyn ) -happyIn153 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn153 #-} -happyOut153 :: (HappyAbsSyn ) -> (PExp) -happyOut153 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut153 #-} -happyIn154 :: ([PExp]) -> (HappyAbsSyn ) -happyIn154 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn154 #-} -happyOut154 :: (HappyAbsSyn ) -> ([PExp]) -happyOut154 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut154 #-} -happyIn155 :: (PExp) -> (HappyAbsSyn ) -happyIn155 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn155 #-} -happyOut155 :: (HappyAbsSyn ) -> (PExp) -happyOut155 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut155 #-} -happyIn156 :: (XName) -> (HappyAbsSyn ) -happyIn156 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn156 #-} -happyOut156 :: (HappyAbsSyn ) -> (XName) -happyOut156 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut156 #-} -happyIn157 :: (String) -> (HappyAbsSyn ) -happyIn157 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn157 #-} -happyOut157 :: (HappyAbsSyn ) -> (String) -happyOut157 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut157 #-} -happyIn158 :: (String) -> (HappyAbsSyn ) -happyIn158 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn158 #-} -happyOut158 :: (HappyAbsSyn ) -> (String) -happyOut158 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut158 #-} -happyIn159 :: ([ParseXAttr]) -> (HappyAbsSyn ) -happyIn159 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn159 #-} -happyOut159 :: (HappyAbsSyn ) -> ([ParseXAttr]) -happyOut159 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut159 #-} -happyIn160 :: (ParseXAttr) -> (HappyAbsSyn ) -happyIn160 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn160 #-} -happyOut160 :: (HappyAbsSyn ) -> (ParseXAttr) -happyOut160 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut160 #-} -happyIn161 :: (Maybe PExp) -> (HappyAbsSyn ) -happyIn161 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn161 #-} -happyOut161 :: (HappyAbsSyn ) -> (Maybe PExp) -happyOut161 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut161 #-} -happyIn162 :: (PExp) -> (HappyAbsSyn ) -happyIn162 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn162 #-} -happyOut162 :: (HappyAbsSyn ) -> (PExp) -happyOut162 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut162 #-} -happyIn163 :: (PExp) -> (HappyAbsSyn ) -happyIn163 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn163 #-} -happyOut163 :: (HappyAbsSyn ) -> (PExp) -happyOut163 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut163 #-} -happyIn164 :: ([PExp]) -> (HappyAbsSyn ) -happyIn164 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn164 #-} -happyOut164 :: (HappyAbsSyn ) -> ([PExp]) -happyOut164 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut164 #-} -happyIn165 :: ([[QualStmt]]) -> (HappyAbsSyn ) -happyIn165 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn165 #-} -happyOut165 :: (HappyAbsSyn ) -> ([[QualStmt]]) -happyOut165 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut165 #-} -happyIn166 :: ([QualStmt]) -> (HappyAbsSyn ) -happyIn166 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn166 #-} -happyOut166 :: (HappyAbsSyn ) -> ([QualStmt]) -happyOut166 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut166 #-} -happyIn167 :: (QualStmt) -> (HappyAbsSyn ) -happyIn167 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn167 #-} -happyOut167 :: (HappyAbsSyn ) -> (QualStmt) -happyOut167 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut167 #-} -happyIn168 :: (QualStmt) -> (HappyAbsSyn ) -happyIn168 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn168 #-} -happyOut168 :: (HappyAbsSyn ) -> (QualStmt) -happyOut168 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut168 #-} -happyIn169 :: ([Stmt]) -> (HappyAbsSyn ) -happyIn169 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn169 #-} -happyOut169 :: (HappyAbsSyn ) -> ([Stmt]) -happyOut169 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut169 #-} -happyIn170 :: (Stmt) -> (HappyAbsSyn ) -happyIn170 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn170 #-} -happyOut170 :: (HappyAbsSyn ) -> (Stmt) -happyOut170 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut170 #-} -happyIn171 :: ([Alt]) -> (HappyAbsSyn ) -happyIn171 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn171 #-} -happyOut171 :: (HappyAbsSyn ) -> ([Alt]) -happyOut171 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut171 #-} -happyIn172 :: ([Alt]) -> (HappyAbsSyn ) -happyIn172 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn172 #-} -happyOut172 :: (HappyAbsSyn ) -> ([Alt]) -happyOut172 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut172 #-} -happyIn173 :: ([Alt]) -> (HappyAbsSyn ) -happyIn173 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn173 #-} -happyOut173 :: (HappyAbsSyn ) -> ([Alt]) -happyOut173 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut173 #-} -happyIn174 :: (Alt) -> (HappyAbsSyn ) -happyIn174 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn174 #-} -happyOut174 :: (HappyAbsSyn ) -> (Alt) -happyOut174 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut174 #-} -happyIn175 :: (GuardedAlts) -> (HappyAbsSyn ) -happyIn175 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn175 #-} -happyOut175 :: (HappyAbsSyn ) -> (GuardedAlts) -happyOut175 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut175 #-} -happyIn176 :: ([GuardedAlt]) -> (HappyAbsSyn ) -happyIn176 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn176 #-} -happyOut176 :: (HappyAbsSyn ) -> ([GuardedAlt]) -happyOut176 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut176 #-} -happyIn177 :: (GuardedAlt) -> (HappyAbsSyn ) -happyIn177 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn177 #-} -happyOut177 :: (HappyAbsSyn ) -> (GuardedAlt) -happyOut177 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut177 #-} -happyIn178 :: (Pat) -> (HappyAbsSyn ) -happyIn178 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn178 #-} -happyOut178 :: (HappyAbsSyn ) -> (Pat) -happyOut178 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut178 #-} -happyIn179 :: ([Stmt]) -> (HappyAbsSyn ) -happyIn179 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn179 #-} -happyOut179 :: (HappyAbsSyn ) -> ([Stmt]) -happyOut179 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut179 #-} -happyIn180 :: ([Stmt]) -> (HappyAbsSyn ) -happyIn180 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn180 #-} -happyOut180 :: (HappyAbsSyn ) -> ([Stmt]) -happyOut180 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut180 #-} -happyIn181 :: ([Stmt]) -> (HappyAbsSyn ) -happyIn181 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn181 #-} -happyOut181 :: (HappyAbsSyn ) -> ([Stmt]) -happyOut181 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut181 #-} -happyIn182 :: (Stmt) -> (HappyAbsSyn ) -happyIn182 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn182 #-} -happyOut182 :: (HappyAbsSyn ) -> (Stmt) -happyOut182 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut182 #-} -happyIn183 :: ([PFieldUpdate]) -> (HappyAbsSyn ) -happyIn183 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn183 #-} -happyOut183 :: (HappyAbsSyn ) -> ([PFieldUpdate]) -happyOut183 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut183 #-} -happyIn184 :: (PFieldUpdate) -> (HappyAbsSyn ) -happyIn184 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn184 #-} -happyOut184 :: (HappyAbsSyn ) -> (PFieldUpdate) -happyOut184 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut184 #-} -happyIn185 :: ([IPBind]) -> (HappyAbsSyn ) -happyIn185 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn185 #-} -happyOut185 :: (HappyAbsSyn ) -> ([IPBind]) -happyOut185 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut185 #-} -happyIn186 :: ([IPBind]) -> (HappyAbsSyn ) -happyIn186 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn186 #-} -happyOut186 :: (HappyAbsSyn ) -> ([IPBind]) -happyOut186 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut186 #-} -happyIn187 :: (IPBind) -> (HappyAbsSyn ) -happyIn187 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn187 #-} -happyOut187 :: (HappyAbsSyn ) -> (IPBind) -happyOut187 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut187 #-} -happyIn188 :: (PExp) -> (HappyAbsSyn ) -happyIn188 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn188 #-} -happyOut188 :: (HappyAbsSyn ) -> (PExp) -happyOut188 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut188 #-} -happyIn189 :: (Name) -> (HappyAbsSyn ) -happyIn189 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn189 #-} -happyOut189 :: (HappyAbsSyn ) -> (Name) -happyOut189 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut189 #-} -happyIn190 :: (Name) -> (HappyAbsSyn ) -happyIn190 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn190 #-} -happyOut190 :: (HappyAbsSyn ) -> (Name) -happyOut190 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut190 #-} -happyIn191 :: (QName) -> (HappyAbsSyn ) -happyIn191 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn191 #-} -happyOut191 :: (HappyAbsSyn ) -> (QName) -happyOut191 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut191 #-} -happyIn192 :: (IPName) -> (HappyAbsSyn ) -happyIn192 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn192 #-} -happyOut192 :: (HappyAbsSyn ) -> (IPName) -happyOut192 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut192 #-} -happyIn193 :: (Name) -> (HappyAbsSyn ) -happyIn193 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn193 #-} -happyOut193 :: (HappyAbsSyn ) -> (Name) -happyOut193 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut193 #-} -happyIn194 :: (QName) -> (HappyAbsSyn ) -happyIn194 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn194 #-} -happyOut194 :: (HappyAbsSyn ) -> (QName) -happyOut194 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut194 #-} -happyIn195 :: (Name) -> (HappyAbsSyn ) -happyIn195 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn195 #-} -happyOut195 :: (HappyAbsSyn ) -> (Name) -happyOut195 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut195 #-} -happyIn196 :: (QName) -> (HappyAbsSyn ) -happyIn196 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn196 #-} -happyOut196 :: (HappyAbsSyn ) -> (QName) -happyOut196 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut196 #-} -happyIn197 :: (QName) -> (HappyAbsSyn ) -happyIn197 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn197 #-} -happyOut197 :: (HappyAbsSyn ) -> (QName) -happyOut197 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut197 #-} -happyIn198 :: (Name) -> (HappyAbsSyn ) -happyIn198 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn198 #-} -happyOut198 :: (HappyAbsSyn ) -> (Name) -happyOut198 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut198 #-} -happyIn199 :: (QName) -> (HappyAbsSyn ) -happyIn199 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn199 #-} -happyOut199 :: (HappyAbsSyn ) -> (QName) -happyOut199 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut199 #-} -happyIn200 :: (Op) -> (HappyAbsSyn ) -happyIn200 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn200 #-} -happyOut200 :: (HappyAbsSyn ) -> (Op) -happyOut200 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut200 #-} -happyIn201 :: (QOp) -> (HappyAbsSyn ) -happyIn201 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn201 #-} -happyOut201 :: (HappyAbsSyn ) -> (QOp) -happyOut201 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut201 #-} -happyIn202 :: (QOp) -> (HappyAbsSyn ) -happyIn202 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn202 #-} -happyOut202 :: (HappyAbsSyn ) -> (QOp) -happyOut202 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut202 #-} -happyIn203 :: (QName) -> (HappyAbsSyn ) -happyIn203 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn203 #-} -happyOut203 :: (HappyAbsSyn ) -> (QName) -happyOut203 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut203 #-} -happyIn204 :: (QName) -> (HappyAbsSyn ) -happyIn204 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn204 #-} -happyOut204 :: (HappyAbsSyn ) -> (QName) -happyOut204 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut204 #-} -happyIn205 :: (Name) -> (HappyAbsSyn ) -happyIn205 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn205 #-} -happyOut205 :: (HappyAbsSyn ) -> (Name) -happyOut205 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut205 #-} -happyIn206 :: (Name) -> (HappyAbsSyn ) -happyIn206 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn206 #-} -happyOut206 :: (HappyAbsSyn ) -> (Name) -happyOut206 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut206 #-} -happyIn207 :: (IPName) -> (HappyAbsSyn ) -happyIn207 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn207 #-} -happyOut207 :: (HappyAbsSyn ) -> (IPName) -happyOut207 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut207 #-} -happyIn208 :: (QName) -> (HappyAbsSyn ) -happyIn208 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn208 #-} -happyOut208 :: (HappyAbsSyn ) -> (QName) -happyOut208 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut208 #-} -happyIn209 :: (Name) -> (HappyAbsSyn ) -happyIn209 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn209 #-} -happyOut209 :: (HappyAbsSyn ) -> (Name) -happyOut209 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut209 #-} -happyIn210 :: (QName) -> (HappyAbsSyn ) -happyIn210 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn210 #-} -happyOut210 :: (HappyAbsSyn ) -> (QName) -happyOut210 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut210 #-} -happyIn211 :: (Name) -> (HappyAbsSyn ) -happyIn211 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn211 #-} -happyOut211 :: (HappyAbsSyn ) -> (Name) -happyOut211 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut211 #-} -happyIn212 :: (QName) -> (HappyAbsSyn ) -happyIn212 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn212 #-} -happyOut212 :: (HappyAbsSyn ) -> (QName) -happyOut212 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut212 #-} -happyIn213 :: (QName) -> (HappyAbsSyn ) -happyIn213 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn213 #-} -happyOut213 :: (HappyAbsSyn ) -> (QName) -happyOut213 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut213 #-} -happyIn214 :: (Name) -> (HappyAbsSyn ) -happyIn214 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn214 #-} -happyOut214 :: (HappyAbsSyn ) -> (Name) -happyOut214 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut214 #-} -happyIn215 :: (Name) -> (HappyAbsSyn ) -happyIn215 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn215 #-} -happyOut215 :: (HappyAbsSyn ) -> (Name) -happyOut215 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut215 #-} -happyIn216 :: (QName) -> (HappyAbsSyn ) -happyIn216 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn216 #-} -happyOut216 :: (HappyAbsSyn ) -> (QName) -happyOut216 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut216 #-} -happyIn217 :: (Literal) -> (HappyAbsSyn ) -happyIn217 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn217 #-} -happyOut217 :: (HappyAbsSyn ) -> (Literal) -happyOut217 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut217 #-} -happyIn218 :: (SrcLoc) -> (HappyAbsSyn ) -happyIn218 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn218 #-} -happyOut218 :: (HappyAbsSyn ) -> (SrcLoc) -happyOut218 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut218 #-} -happyIn219 :: (()) -> (HappyAbsSyn ) -happyIn219 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn219 #-} -happyOut219 :: (HappyAbsSyn ) -> (()) -happyOut219 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut219 #-} -happyIn220 :: (()) -> (HappyAbsSyn ) -happyIn220 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn220 #-} -happyOut220 :: (HappyAbsSyn ) -> (()) -happyOut220 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut220 #-} -happyIn221 :: (ModuleName) -> (HappyAbsSyn ) -happyIn221 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn221 #-} -happyOut221 :: (HappyAbsSyn ) -> (ModuleName) -happyOut221 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut221 #-} -happyIn222 :: (Name) -> (HappyAbsSyn ) -happyIn222 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn222 #-} -happyOut222 :: (HappyAbsSyn ) -> (Name) -happyOut222 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut222 #-} -happyIn223 :: (QName) -> (HappyAbsSyn ) -happyIn223 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn223 #-} -happyOut223 :: (HappyAbsSyn ) -> (QName) -happyOut223 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut223 #-} -happyIn224 :: (Name) -> (HappyAbsSyn ) -happyIn224 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn224 #-} -happyOut224 :: (HappyAbsSyn ) -> (Name) -happyOut224 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut224 #-} -happyIn225 :: (QName) -> (HappyAbsSyn ) -happyIn225 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn225 #-} -happyOut225 :: (HappyAbsSyn ) -> (QName) -happyOut225 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut225 #-} -happyIn226 :: (Name) -> (HappyAbsSyn ) -happyIn226 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyIn226 #-} -happyOut226 :: (HappyAbsSyn ) -> (Name) -happyOut226 x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOut226 #-} -happyInTok :: (Token) -> (HappyAbsSyn ) -happyInTok x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyInTok #-} -happyOutTok :: (HappyAbsSyn ) -> (Token) -happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x -{-# INLINE happyOutTok #-} - - -happyActOffsets :: HappyAddr -happyActOffsets = HappyA# "\x00\x00\x46\x14\xd2\x12\x00\x00\x1a\x1e\x00\x00\x00\x00\x00\x00\xd1\x04\x81\x08\x00\x00\x00\x00\x4e\x1d\x00\x00\x00\x00\x00\x00\x0f\x08\x00\x00\x4f\x08\x5e\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x1d\x29\x07\x17\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x08\x00\x00\x00\x00\x00\x00\x94\x0a\x00\x00\x00\x00\x00\x00\x4f\x1e\x00\x00\x00\x00\x00\x00\x6d\x1c\x00\x00\x5f\x08\x00\x00\x00\x00\x00\x00\xf4\x07\x00\x00\xf9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\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\x0a\x0c\x65\x03\x86\x0c\x00\x00\x00\x00\xc3\x1c\xc3\x1c\xc3\x1c\x46\x14\x00\x00\x46\x14\x46\x14\x46\x14\xf1\x1d\x00\x00\x40\x1b\x27\x1f\x00\x00\x46\x14\x46\x14\x5a\x08\x46\x14\x59\x08\x57\x08\x17\x1c\x62\x08\x61\x08\x56\x08\xe3\x07\x00\x00\xe3\x07\x1c\x08\x00\x00\x00\x00\x76\x00\x00\x00\x55\x08\xdf\x07\xde\x07\x32\x08\x00\x00\xc3\x1c\x00\x00\x7e\x0d\x7e\x0d\x00\x00\xf9\x07\x00\x00\x00\x00\xda\x07\x00\x00\xe0\x07\xfa\x07\x00\x00\x00\x00\xac\x07\x40\x03\x22\x08\x00\x00\x00\x00\x1e\x03\x00\x00\x08\x08\x07\x08\xe6\x03\xfc\x07\x23\x08\x04\x08\x3e\x01\x00\x00\xc1\x1b\x00\x00\x6b\x1b\x09\x08\xe3\x02\x1b\x08\x19\x08\x00\x00\x00\x00\x46\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x07\x00\x00\x00\x00\x00\x00\x00\x00\x14\x03\x00\x00\x00\x00\xe4\x04\x8e\x0b\xea\x02\x1d\x08\x17\x08\x16\x08\x00\x00\x15\x08\x14\x08\x00\x00\x13\x08\x15\x1b\x10\x08\x0e\x08\xa1\x1a\x86\x1e\xc3\x1c\xc3\x1c\xc0\x17\x00\x00\x00\x00\x00\x00\xca\x13\x00\x00\x00\x00\x00\x00\x92\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x13\x4e\x13\x4e\x13\x4e\x13\x18\x08\xc4\x1d\x1f\x1d\xc3\x1c\x4e\x13\x05\x01\xf1\x1d\xcb\x07\x0d\x08\xb9\x07\x00\x00\x00\x00\x00\x00\xf1\x1d\x00\x00\x5a\x1e\x02\x08\x9a\x1b\x02\x08\x0b\x08\x70\x1f\x70\x1f\x8b\x15\xf8\x07\x8e\x1d\x00\x00\x00\x00\xed\x02\x0f\x02\x00\x00\xb6\x01\x01\x08\xeb\x07\xcf\x02\xf2\x07\x00\x00\xf1\x07\x13\x1f\xf1\x1d\x00\x00\x13\x1f\x00\x00\x13\x1f\x00\x00\x00\x00\x57\x1f\xf1\x1d\x13\x1f\x87\x00\xe7\x07\xb4\x04\xd0\x07\xa1\x1a\x00\x00\x00\x00\x00\x00\xfd\x07\x0e\x04\x00\x00\x00\x00\x00\x00\xce\x1e\x00\x00\xdd\x07\xdb\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x1d\x00\x00\x00\x00\x61\x02\x00\x00\x00\x00\xf1\x1d\x13\x1f\x00\x00\x00\x00\x00\x00\xea\x1a\xf1\x1d\x68\x01\x00\x00\xe8\x07\xd4\x07\x00\x00\x00\x00\x00\x00\x00\x00\x98\x06\x1d\x01\x18\x01\x00\x00\xd5\x07\x9c\x1c\xb3\x00\xc6\x07\x79\x04\xf1\x1d\x9c\x1c\xc9\x07\x46\x1e\x13\x1f\x81\x07\xf1\x1d\xf1\x1d\xf1\x1d\xc4\x07\xb7\x06\xb7\x06\xd6\x07\xc3\x07\xc3\x07\x10\x1a\x9c\x1c\xf1\x1d\x8c\x02\xf1\x1d\x45\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x1d\xc7\x07\x00\x00\x00\x00\x1b\x03\x00\x00\xc1\x07\x00\x00\x00\x00\x00\x00\x00\x00\xce\x07\x00\x00\x00\x00\xb7\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x0b\x00\x00\x00\x00\xa8\x02\x00\x00\x4e\x13\x4e\x13\x00\x00\xbc\x07\x00\x00\x02\x0d\x00\x00\x02\x0d\x56\x12\x76\x0e\x7a\x1a\x00\x00\x4e\x13\x00\x00\xda\x11\x00\x00\x00\x00\xc2\x14\x00\x00\x00\x00\x87\x00\x00\x00\x00\x00\xc5\x07\x00\x00\xbd\x07\x4e\x13\x00\x00\xa3\x16\xba\x07\xb8\x07\x87\x00\x87\x00\x4e\x13\x00\x00\xa8\x07\x00\x00\xb3\x07\xb4\x07\x7e\x0d\xb2\x07\xae\x07\x87\x00\x00\x00\x4e\x13\x4e\x13\x4e\x13\xa5\x07\x7b\x07\x4e\x00\x00\x00\x00\x00\x00\x00\xc2\x06\x41\x06\x00\x00\x00\x00\xa4\x07\x9c\x08\x87\x00\x00\x00\xaa\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x07\x00\x00\x00\x00\x7e\x0d\x00\x00\x84\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7b\x17\x00\x00\x54\x07\x00\x00\x00\x00\x00\x00\x16\x0a\x90\x07\x6c\x07\x00\x00\x7d\x00\x00\x00\x00\x00\x8e\x07\x00\x00\x00\x00\x4e\x13\x7e\x07\x7f\x07\x00\x00\x00\x00\x00\x00\x5e\x11\x00\x00\x48\x02\x00\x00\x00\x00\x00\x00\x00\x00\x75\x07\x00\x00\x00\x00\x00\x00\x8e\x02\x00\x00\xa1\x1a\x46\x19\x00\x00\x4e\x13\x00\x00\x01\x16\x00\x00\x00\x00\x7a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x1f\x8c\x02\x3f\x07\x2c\x07\x61\x02\x00\x00\xd2\x04\x28\x01\x00\x00\x2b\x07\x6e\x07\x00\x00\x6b\x07\x4e\x13\x22\x07\xba\x19\xc6\x06\x00\x00\x00\x00\x74\x08\x1e\x07\x00\x00\x6a\x07\x79\x07\x00\x00\x6d\x07\x00\x00\x00\x00\x00\x00\x71\x07\x64\x07\x00\x00\x5f\x07\xf1\x1d\x08\x07\x07\x07\xf1\x1d\x65\x07\x78\x07\x58\x07\x17\x07\x66\x07\x00\x00\x46\x1c\x00\x00\x5d\x07\x5b\x07\x46\x1c\x00\x00\x00\x00\x00\x00\x49\x07\x13\x1f\x00\x00\x51\x07\x00\x00\x3a\x07\x61\x02\x00\x00\x00\x00\x44\x07\x00\x00\x00\x00\x00\x00\x00\x00\x42\x07\x11\x01\xf4\x00\xc2\x00\x00\x00\x46\x19\x00\x00\x00\x00\x00\x00\x5e\x07\x14\x00\x4b\x07\x61\x02\x00\x00\x61\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4e\x13\x43\x1f\xf1\x1d\x3e\x07\x00\x00\xd7\x06\x38\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x1d\x2f\x07\x00\x00\x00\x00\x33\x07\x00\x00\x27\x07\x00\x00\x73\x02\x91\x04\x74\x08\x00\x00\x00\x00\x00\x00\x00\x00\x31\x07\x00\x00\xe2\x10\x00\x00\x00\x00\x1e\x19\xf1\x1d\x21\x07\x00\x00\xeb\x06\x00\x00\x26\x07\x00\x00\xa5\x03\xe1\x06\xcd\x06\x15\x07\x11\x07\x45\x03\x00\x00\x00\x00\x00\x00\x09\x07\x00\x00\x6d\x06\xc0\x04\xac\x04\x48\x04\x34\x04\x20\x04\x13\x04\xed\x03\xbc\x03\xb8\x03\xa8\x03\x64\x03\x00\x00\x00\x00\x00\x00\x66\x10\xdb\x06\x2f\x00\x76\x0e\x76\x0e\x00\x00\xc7\x06\xfb\x06\xea\x0f\x00\x00\x00\x00\x00\x00\x06\x07\x05\x07\x87\x00\x4e\x13\xf3\x06\xa8\x06\xff\x06\x0f\x17\xff\x06\x4e\x13\x00\x00\xe9\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x09\x00\x00\x03\x07\x04\x07\xf7\x06\x7f\x06\x79\x06\x83\x06\x00\x00\x8e\x1e\x7b\x06\x1a\x09\xd5\x06\x00\x00\xdd\x06\x00\x00\x00\x00\x7b\x17\x00\x00\xa5\x06\x4e\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x0f\x00\x00\x4e\x13\xb3\x06\x00\x00\x4e\x13\x4e\x13\x4e\x13\x00\x00\x00\x00\x00\x00\xc3\x1c\x00\x00\x00\x00\x00\x00\xc9\x06\x00\x00\x00\x00\x00\x00\xbb\x1d\x87\x06\x00\x00\x00\x00\x00\x00\x46\x08\x00\x00\x00\x00\x00\x00\x00\x00\x91\x04\x0c\x01\x00\x00\x00\x00\xb8\x06\xa4\x06\x13\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x17\xa3\x06\x87\x00\x00\x00\xf1\x1d\x00\x00\x00\x00\x5d\x06\x8a\x06\x79\x16\x00\x00\xea\x1a\x7a\x06\x7d\x06\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x06\x00\x00\x00\x00\x00\x00\x4e\x13\x71\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x18\xea\x1a\x00\x00\x3e\x15\x78\x06\x87\x00\x00\x00\x13\x1f\x00\x00\x4e\x13\x00\x00\x1a\x08\x00\x00\x53\x07\x60\x06\x00\x00\x00\x00\x06\x08\x68\x00\x6e\x06\x6c\x06\x18\x1d\x13\x1f\x00\x06\x5e\x06\x5a\x06\x87\x00\x00\x00\x4b\x06\x3f\x06\x00\x00\xf8\x05\x00\x00\xda\x04\x00\x00\x00\x00\xf6\x05\x00\x00\x1f\x06\xfa\x0d\x35\x06\x00\x00\x03\x06\x1d\x06\x00\x00\x00\x00\xab\x05\xa5\x05\xff\x05\xdf\x05\x00\x00\x00\x00\x00\x00\xf2\x05\x00\x00\x38\x06\xf5\x05\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x1f\xe4\x05\xff\x1e\x00\x00\x00\x00\xe5\x05\x00\x00\xe1\x05\x00\x00\x74\x05\xb5\x05\x00\x00\xb1\x05\x4e\x13\x4e\x13\x00\x00\x00\x00\x00\x00\xa1\x1a\x4e\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x03\xa8\x05\x00\x00\x00\x00\xbf\x05\x31\x18\xff\x07\xcb\x05\x00\x00\x00\x00\xe7\x1e\x49\x05\xbf\x07\xe7\x1e\xe7\x1e\x3a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x16\xf1\x1d\x98\x1e\x00\x00\xe7\x1e\x9a\x05\x5c\x18\x98\x05\xf1\x1d\x00\x00\x61\x04\xa1\x1a\x9b\x05\x00\x00\xf0\x1b\x85\x05\xf1\x1d\x8c\x02\xf1\x1d\x46\x1e\xb5\x15\x88\x05\x76\x05\x00\x00\xe7\x1e\xa9\x07\x00\x00\x6e\x05\x00\x00\xe7\x1e\x00\x00\xea\x00\xf7\x02\x00\x00\x00\x00\x81\x05\xe7\x1e\x72\x05\x53\x02\x67\x02\x6d\x05\x00\x00\x5a\x00\x3e\x05\x00\x00\x00\x00\xf2\x0e\x00\x00\x00\x00\xff\x04\x38\x06\x00\x00\x00\x00\x00\x00\x79\x02\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x05\x00\x00\x00\x00\x53\x17\x1a\x05\x4e\x13\x68\x02\x00\x00\x00\x00\x00\x00\xf1\x1d\x00\x00\x00\x00\xa6\x18\x69\x07\xe7\x1e\xe7\x1e\x00\x00\x4a\x05\x36\x05\x39\x05\x39\x05\x00\x05\xe2\x04\x00\x00\xf1\x1d\xc4\x04\x00\x00\xfb\x04\x00\x00\x00\x00\x00\x00\x25\x05\x00\x00\x00\x00\x00\x00\xf1\x1d\x00\x00\x00\x00\x00\x00\x00\x00\xe7\x1e\xbc\x04\x00\x00\x00\x00\x4e\x13\x00\x00\x13\x00\x38\x06\x00\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x06\x05\x00\x00\x00\x00\xd5\x04\x00\x00\xe7\x1e\xe5\x19\x11\x05\xfe\x04\x00\x00\x00\x00\x00\x00\xf5\x04\x00\x00\x34\x1d\xe0\x04\xe7\x16\x00\x00\x00\x00\x00\x00\x6a\x02\x00\x00\xcc\x04\x00\x00\x00\x00\x00\x00"# - -happyGotoOffsets :: HappyAddr -happyGotoOffsets = HappyA# "\x01\x00\xa5\x26\xff\x28\x3d\x00\x42\x04\x08\x00\x06\x00\x05\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x30\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\xaa\x02\xee\x02\x99\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x76\x08\x00\x00\x00\x00\x00\x00\x0b\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x26\x35\x04\x15\x27\x00\x00\xeb\x03\xef\x2f\x53\x2e\xc7\x2f\xde\x28\x00\x00\x50\x26\x31\x26\x0f\x2e\x2e\x04\xe2\x03\x20\x06\xe7\x01\x00\x00\x5f\x2d\x43\x2d\x29\x01\xef\x2c\x17\x00\x10\x01\xb3\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x0d\x00\xfc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x2f\x00\x00\x5b\x22\x06\x22\x00\x00\x00\x00\x64\x00\x5f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x01\x1c\x04\x00\x00\x00\x00\x00\x00\x51\x05\x31\x00\x00\x00\x00\x00\xc2\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x2f\x00\x00\x6f\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\x27\xca\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x2e\x00\x00\x00\x00\xeb\x05\x71\x05\x79\x2f\x51\x2f\xb7\x02\x00\x00\x00\x00\x00\x00\x2b\x2e\x00\x00\x00\x00\x00\x00\x28\x06\x00\x00\xcc\x03\x00\x00\x00\x00\x00\x00\xd3\x2c\x7f\x2c\x63\x2c\x0f\x2c\x74\x04\x5d\x05\x77\x07\x35\x2f\xdc\x25\x00\x00\x46\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x05\x00\x00\xd3\x05\x54\x04\x6e\x04\x50\x04\xfd\x05\xee\x00\x3f\x00\xc4\xff\x00\x00\x30\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\xbe\x05\x1e\x05\x00\x00\xaa\x05\x00\x00\xb4\x01\x00\x00\x00\x00\x56\x03\x01\x05\x4d\x06\xac\x03\x00\x00\x00\x00\x00\x00\xd7\x05\x1c\x06\x05\x06\xf4\x05\x0f\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x8e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x04\x00\x00\x00\x00\xfb\x05\x00\x00\x00\x00\xce\x04\x48\x06\x00\x00\x00\x00\x00\x00\x36\x02\xba\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x02\x00\x00\x00\x00\x00\x00\x40\x04\x02\x04\x00\x00\x00\x00\x6e\x03\xa6\x04\x73\x03\x00\x00\x7b\x05\x07\x02\xfa\x03\x92\x04\x54\x01\x75\x04\x11\x04\x27\x04\x1d\x04\x00\x00\x04\x02\xcc\x01\x0e\x1a\xc6\x00\x1a\x04\x4b\x01\x06\x04\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x27\x00\x00\x00\x00\x60\x02\x00\x00\x8a\x28\xf3\x2b\x00\x00\x00\x00\x00\x00\x88\x27\x00\x00\x34\x27\x9f\x2b\x5e\x1f\x97\x2e\x00\x00\x83\x2b\x00\x00\xb1\x21\x00\x00\x00\x00\x2b\x2e\x00\x00\x00\x00\x70\x03\xe0\x05\x00\x00\x00\x00\x00\x00\xab\xff\x2f\x2b\x00\x00\xfb\xff\x00\x00\x00\x00\x58\x03\x54\x03\x13\x2b\x00\x00\x00\x00\x4b\x03\x00\x00\x60\x03\x5c\x21\x12\x00\xf1\x00\x32\x03\x00\x00\xbf\x2a\xa3\x2a\x4f\x2a\x00\x00\x00\x00\x0d\x00\x00\x00\x51\x06\x31\x06\x35\x03\xf6\x03\x00\x00\x00\x00\x00\x00\x1b\x00\x24\x03\x22\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x05\x00\x00\x6f\x05\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\x24\x00\x1d\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x03\xf7\xff\x00\x00\x00\x00\x33\x2a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\xff\x00\x00\xf9\x04\x03\x2f\x00\x00\xdf\x29\x00\x00\x43\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x02\x3f\x01\x71\x03\x00\x00\x9e\x05\x27\x00\x00\x00\x00\x00\x00\x00\x53\x03\xc6\xff\x00\x00\x00\x00\x68\x25\x49\x03\x00\x00\x8c\x03\x00\x00\x00\x00\x30\x00\x4c\x03\x2e\x03\x42\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x02\x00\x00\x00\x00\x31\x03\xb6\x03\x00\x00\x00\x00\xf2\x01\x00\x00\x00\x00\x00\x00\x5b\x03\x29\x03\x00\x00\x77\x02\x00\x00\x00\x00\x00\x00\xe9\x02\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x06\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x04\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x02\xdb\x2e\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\xad\x04\x00\x00\x8a\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x2d\x15\x01\xab\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x03\x98\x00\x8f\x00\x00\x00\x00\x00\x34\x02\x00\x00\x00\x00\x00\x00\xb0\xff\x00\x00\x00\x00\x00\x00\x49\x01\x5d\x02\xeb\xff\x00\x00\x00\x00\x00\x00\x00\x00\xf1\xff\x00\x00\xb2\x20\x00\x00\x00\x00\xe3\x01\x8e\x03\x00\x00\x00\x00\x09\x03\x00\x00\x2b\x00\x00\x00\xbc\xff\xb9\x02\x00\x00\x00\x00\x00\x00\xd8\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x29\x00\x00\x00\x00\x08\x20\xb3\x1f\x00\x00\x00\x00\x00\x00\xb0\x22\x00\x00\x00\x00\x00\x00\x2c\x02\x00\x00\x40\x02\x6f\x29\x00\x00\xbe\xff\x00\x00\x34\x00\x00\x00\x49\x25\x00\x00\x00\x00\x04\x00\x00\x00\xe3\x04\x00\x00\x00\x00\x92\x00\x00\x00\xcd\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\xe4\x02\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x00\x00\x00\x2d\x01\xf4\x24\x00\x00\x00\x00\x00\x00\xbe\x04\x00\x00\x6e\x28\x00\x00\xd5\x24\x00\x00\x00\x00\x80\x24\x61\x24\x0c\x24\x00\x00\x47\x02\x00\x00\x1f\x2f\x00\x00\x00\x00\x00\x00\xe1\xff\x00\x00\x00\x00\x00\x00\xbe\x02\x29\x02\x00\x00\x44\x02\x5f\x01\xe9\x05\x3b\x02\xc0\xff\x00\x00\x00\x00\x8d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x01\x00\x00\xd2\x01\xbc\x01\x5b\x02\x00\x00\xfb\x01\x19\x01\x00\x00\x6a\x01\x00\x00\x8c\x01\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x00\x00\x00\xeb\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x01\x00\x00\x00\x00\xed\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x04\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x01\x34\x02\x00\x00\xf5\xff\x00\x00\x4d\x01\x00\x00\xca\x01\x00\x00\x98\x23\x00\x00\xc4\xff\x00\x00\x8e\x06\x00\x00\x00\x00\x00\x00\x59\x06\x60\x01\x00\x00\x00\x00\x1b\x02\x99\x06\x00\x00\x37\x00\x00\x00\x43\x01\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x01\x00\x00\xa6\xff\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x00\x96\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x01\x00\x00\x00\x00\xd7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x01\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x78\x00\x00\x00\x2a\x00\x00\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x00\x00\x63\x01\xa2\xff\x00\x00\x00\x00\x79\x23\x24\x23\x00\x00\x00\x00\x00\x00\x37\x05\x1a\x28\x00\x00\x00\x00\x00\x00\x00\x00\x15\x04\x00\x00\x14\x02\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x13\x06\x07\x01\x00\x00\x00\x00\x80\x06\x00\x00\x09\x06\x37\x06\x76\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x02\x00\x00\x00\x00\xae\x00\x7a\x03\x77\x07\x00\x00\xfd\x00\x75\x01\xf4\x01\x00\x00\x5e\x03\x00\x00\xa6\xff\x2f\x05\x00\x00\x00\x00\x3f\x03\x00\x00\x4a\x03\x60\x00\x56\x04\xbf\x01\x2e\x00\x00\x00\x00\x00\x00\x00\x8e\x06\x8e\x06\x00\x00\x00\x00\x00\x00\x8e\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x06\x00\x00\xa4\x00\xbf\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x20\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x00\xe6\x00\x53\x29\x00\x00\x00\x00\x00\x00\x00\x00\x16\x03\x00\x00\x00\x00\x8e\x00\x5a\x02\x61\x06\x0a\x05\x00\x00\x00\x00\x00\x00\xe4\x00\xc8\x00\x6c\x00\x00\x00\x00\x00\x02\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\xff\x00\x00\x00\x00\x00\x00\xd2\x02\x00\x00\x00\x00\x00\x00\x00\x00\x12\x02\x00\x00\x00\x00\x00\x00\x05\x23\x00\x00\x80\x05\xdc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\xe0\x00\xfd\xff\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\xf6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"# - -happyDefActions :: HappyAddr -happyDefActions = HappyA# "\xbb\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbb\xfd\x00\x00\x00\x00\xf2\xff\x00\x00\x52\xff\x39\xff\x59\xff\x4f\xff\x4d\xff\x46\xff\x00\x00\x3c\xff\x00\x00\x00\x00\xe0\xfd\xb4\xfd\x00\xfe\x3f\xff\xda\xfd\x4c\xff\xe7\xfd\xdc\xfd\xdb\xfd\xd8\xfd\xd9\xfd\x00\x00\x00\x00\x00\x00\xe3\xfd\xdf\xfd\xde\xfd\xdd\xfd\xe2\xfd\xe1\xfd\xe6\xfd\x32\xff\xe4\xfd\xe5\xfd\x8b\xff\x00\x00\x96\xff\x8c\xff\x8a\xff\xbc\xfd\x22\xfe\xce\xfe\xc8\xfe\xc7\xfe\xc5\xfe\xc2\xfe\xbd\xfe\xb8\xfe\xb3\xfe\xab\xfe\xa7\xfe\x99\xfe\xc3\xfe\x00\x00\xa4\xfe\xa5\xfe\xa6\xfe\x07\xfe\x02\xfe\xe9\xfd\xfd\xfd\xa3\xfe\x00\x00\xe8\xfd\x47\xfe\xc6\xfd\xc4\xfd\xc5\xfd\xc3\xfd\xc2\xfd\xc1\xfd\xc0\xfd\xbf\xfd\xbe\xfd\xbd\xfd\xbc\xfd\x00\x00\xbc\xfd\x9d\xfe\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x98\xfe\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbb\xfd\x00\x00\x00\x00\x8e\xfe\xbc\xfd\xbc\xfd\xbb\xfd\xbc\xfd\xbb\xfd\xbb\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xfe\x00\x00\xbc\xfd\xf9\xff\xf7\xff\xbb\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xfe\xbc\xfd\xb9\xfe\x1c\xfe\x1c\xfe\x7e\xff\x00\x00\xde\xff\xde\xff\x00\x00\xba\xfe\x00\x00\x00\x00\x8f\xfe\x90\xfe\x00\x00\x00\x00\x00\x00\x92\xfe\x91\xfe\x00\x00\xbc\xfd\x00\x00\x00\x00\xc7\xfe\x00\x00\x00\x00\x84\xfe\x00\x00\x21\xfe\xbb\xfe\xac\xfe\xbc\xfd\x8b\xfe\x46\xfe\x00\x00\x45\xfe\xed\xfd\xec\xfd\xbc\xfd\xf3\xfd\xea\xfd\xd7\xfd\xf7\xfd\xd2\xfd\xd1\xfd\xcb\xfd\xd5\xfd\xc7\xfd\xd6\xfd\x0b\xfe\x00\x00\xc9\xfd\xeb\xfd\xca\xfd\xc8\xfd\x00\x00\x09\xfe\x8c\xfe\x8b\xfe\xbc\xfd\x00\x00\x00\x00\xf3\xfd\x00\x00\xd4\xfd\xd1\xfd\xcb\xfd\x0c\xfe\xc9\xfd\xcf\xfd\xca\xfd\xc8\xfd\x00\x00\x00\x00\xbc\xfd\xbc\xfd\x00\x00\xb4\xfe\xef\xfd\xee\xfd\xcd\xfe\xf9\xfd\xd3\xfd\xd0\xfd\x00\x00\xcd\xfd\xbc\xfd\xcf\xfd\xce\xfd\xcc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xb2\xff\x00\x00\xd6\xfe\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x95\xff\x00\x00\x00\x00\xb0\xff\xaf\xff\xae\xff\x00\x00\x94\xff\x00\x00\x6c\xff\x00\x00\x6c\xff\x6e\xff\x60\xff\x60\xff\x00\x00\x00\x00\x59\xff\x43\xff\x35\xff\x00\x00\x00\x00\x41\xff\x35\xff\x00\x00\x00\x00\x00\x00\x00\x00\x45\xff\x00\x00\x00\x00\x00\x00\x50\xff\x00\x00\x3d\xff\x00\x00\xb2\xfd\xb1\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xde\xff\xde\xff\xde\xff\x00\x00\xf2\xff\xf4\xff\xb9\xfd\xba\xfd\x55\xff\x56\xff\x00\x00\x00\x00\x57\xff\x58\xff\x3a\xff\x53\xff\x44\xff\x3e\xff\x42\xff\x8d\xfe\x00\x00\x4b\xff\x48\xff\x00\x00\x40\xff\x4a\xff\x00\x00\x00\x00\x49\xff\x33\xff\x31\xff\x00\x00\x00\x00\x00\x00\x61\xff\x00\x00\x5e\xff\x5b\xff\x5c\xff\x06\xfe\xff\xfd\x00\x00\x00\x00\x00\x00\x6f\xff\x6c\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe7\xfe\x00\x00\x91\xff\x00\x00\x2d\xff\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x21\xff\x00\x00\x00\x00\xb1\xff\xc9\xfe\xca\xfe\xcb\xfe\xcc\xfe\x00\x00\x00\x00\xc6\xfe\xc4\xfe\x00\x00\x14\xfe\x12\xfe\xaa\xfe\x11\xfe\xad\xfe\xae\xfe\x00\x00\x54\xff\x4b\xfe\x78\xfe\x74\xfe\x77\xfe\x76\xfe\x75\xfe\x70\xfe\x6f\xfe\x6e\xfe\x6d\xfe\x6c\xfe\x6b\xfe\x6a\xfe\x69\xfe\x68\xfe\x67\xfe\x72\xfe\x71\xfe\x66\xfe\x65\xfe\x64\xfe\x63\xfe\x62\xfe\x61\xfe\x60\xfe\x5f\xfe\x5e\xfe\x5d\xfe\x5c\xfe\x5b\xfe\x5a\xfe\x59\xfe\x58\xfe\x57\xfe\x56\xfe\x55\xfe\x54\xfe\x53\xfe\x52\xfe\x51\xfe\x50\xfe\x73\xfe\x4f\xfe\x4e\xfe\x4d\xfe\x01\xfe\xfc\xfd\x9c\xfe\xbc\xfd\xa1\xfe\xa2\xfe\x00\x00\x0a\xfe\xbc\xfd\xbc\xfd\x08\xfe\x00\x00\x8a\xfe\xbc\xfd\x9e\xfe\xbc\xfd\x44\xfe\xbc\xfd\xbc\xfd\xb1\xfe\xbc\xfd\x9b\xfe\xbc\xfd\x97\xfe\x96\xfe\xbc\xfd\x95\xfe\x94\xfe\x00\x00\xde\xff\xa9\xff\x00\x00\x7f\xfe\xbb\xfd\xbc\xfd\xdf\xff\x8f\xff\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x17\xfe\xd0\xfe\xbc\xfd\x00\x00\x1a\xfe\x1c\xfe\xbb\xfd\xbb\xfd\x00\x00\xaf\xfe\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\xbb\xfd\xea\xff\xde\xff\xde\xff\x00\x00\xe7\xff\xb8\xfd\xb7\xfd\x00\x00\xe1\xff\x00\x00\xbc\xfd\x00\x00\xb6\xfe\xb7\xfe\xbe\xfe\x1f\xfe\x16\xfe\x19\xfe\x1d\xfe\x1e\xfe\x1c\xfe\x20\xfe\x00\x00\xc0\xfe\x7c\xff\x88\xff\x7d\xff\x89\xff\xde\xff\x8d\xff\xde\xff\x0e\xfe\xbc\xfd\xe0\xff\x00\x00\xbc\xfe\xde\xff\xde\xff\xdf\xff\xab\xff\x00\x00\x2f\xfe\x00\x00\x31\xfe\xbc\xfd\xbb\xfd\x85\xfe\xb2\xfe\xbc\xfd\x40\xfe\x3c\xfe\x3a\xfe\x39\xfe\x38\xfe\xbc\xfd\x42\xfe\x8b\xfe\x3e\xfe\x3f\xfe\xf6\xfd\x89\xfe\x82\xfe\x83\xfe\x9f\xfe\xa0\xfe\x00\x00\x86\xfe\x00\x00\xbc\xfd\xa8\xfe\xbc\xfd\xa9\xfe\x00\x00\xf8\xfd\xcf\xfe\xb3\xff\xf1\xfd\xf0\xfd\xac\xff\xf5\xfd\xfb\xfd\x00\x00\x21\xff\x04\xff\x00\x00\x00\x00\xbc\xfd\x87\xff\x00\x00\x7a\xff\xd8\xfe\xd4\xfe\xd2\xfe\x00\x00\xbc\xfd\xd8\xfe\x9c\xff\x74\xff\x79\xff\x78\xff\x00\x00\xf5\xfe\x2e\xff\xf8\xfe\x00\x00\x92\xff\x54\xff\x93\xff\x9e\xff\x9f\xff\xbb\xfd\x00\x00\x5a\xff\xf8\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\xff\x70\xff\x99\xff\x62\xff\x98\xff\x00\x00\x00\x00\x00\x00\x5f\xff\x97\xff\x3b\xff\x00\x00\x55\xff\x34\xff\x00\x00\xfe\xfe\xfd\xfe\x00\x00\xfa\xfe\xfb\xfe\x36\xff\xb3\xfd\xf2\xfd\xf3\xff\xde\xff\xec\xff\x00\x00\x00\x00\x00\x00\x4b\xfe\xbc\xfd\xef\xff\xee\xff\xf0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x47\xff\x00\x00\x5d\xff\x05\xfe\xfe\xfd\x63\xff\x71\xff\xbc\xfd\x00\x00\x00\x00\x00\x00\x6b\xff\x00\x00\x81\xff\x7f\xff\x82\xff\x85\xff\xa8\xff\xa7\xff\x00\x00\xde\xff\xde\xff\x9d\xff\xa3\xff\x00\x00\x2c\xff\x2a\xff\xa0\xff\xbb\xfd\x9a\xff\x00\x00\x04\xfe\x00\x00\x00\x00\x00\x00\x77\xff\x76\xff\x75\xff\xda\xfe\xbb\xfd\xd5\xfe\xbc\xfd\xd3\xfe\xdb\xfe\x00\x00\x00\x00\x20\xff\x1e\xff\x1a\xff\xf7\xfe\xbb\xfd\xa5\xff\x00\x00\x04\xff\x00\x00\x00\x00\x00\x00\x00\x00\x15\xfe\x13\xfe\x49\xfe\x00\x00\x4c\xfe\x00\x00\xe7\xfd\xd8\xfd\xe3\xfd\xdf\xfd\xde\xfd\xdd\xfd\xe2\xfd\xe1\xfd\xe6\xfd\xe4\xfd\xe5\xfd\x79\xfe\x88\xfe\x87\xfe\x43\xfe\x37\xfe\x00\x00\xbc\xfd\xbc\xfd\xc1\xfe\x2e\xfe\x00\x00\xbc\xfd\x9a\xfe\x93\xfe\xaa\xff\xbc\xfd\x00\x00\x00\x00\xbc\xfd\xa6\xfe\xdf\xff\x10\xfe\xdf\xff\x90\xff\xbc\xfd\x1b\xfe\x00\x00\xbc\xfd\xe5\xff\xde\xff\xce\xff\xe3\xff\xbc\xfd\xe6\xff\xdc\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\xff\xd8\xff\xcb\xff\xdf\xff\xe2\xff\xf8\xff\x00\x00\x18\xfe\x8e\xff\xbc\xfd\x0f\xfe\x00\x00\xbc\xfd\xbf\xfe\x2c\xfe\x2d\xfe\xde\xff\x29\xfe\xbc\xfd\x32\xfe\xbc\xfd\x3d\xfe\x3b\xfe\xbc\xfd\xbc\xfd\xbc\xfd\x41\xfe\x7d\xfe\x80\xfe\xbc\xfd\xad\xff\xf4\xfd\xfa\xfd\xbb\xfd\xa2\xff\x03\xff\xff\xfe\x00\x00\x04\xff\x28\xff\xde\xff\xde\xff\x00\x00\x32\xff\xbc\xfd\x86\xff\x7b\xff\x00\x00\x00\x00\xd9\xfe\x9b\xff\x00\x00\x00\x00\x00\x00\xf6\xfe\xde\xff\xde\xff\x2e\xff\x2f\xff\x2e\xff\xe5\xfe\x00\x00\x00\x00\xa6\xff\x00\x00\x84\xff\x6a\xff\x00\x00\x00\x00\x67\xff\x65\xff\x00\x00\x00\x00\x00\x00\xfc\xfe\xf9\xfe\xf1\xff\xed\xff\x00\x00\x7d\xfe\xf5\xff\x30\xff\xbc\xfd\x00\x00\x66\xff\x68\xff\x83\xff\x80\xff\xe8\xfe\xe9\xfe\xde\xff\xe3\xfe\xe0\xfe\xe1\xfe\xe2\xfe\xbc\xfd\x29\xff\x2b\xff\xf1\xfe\x00\x00\x00\x00\x72\xff\x00\x00\x03\xfe\xbc\xfd\x1f\xff\x00\x00\x0d\xff\x15\xff\x00\x00\x1c\xff\x19\xff\x14\xff\x00\x00\x00\x00\x3f\xff\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xa4\xff\x00\xff\x00\x00\x02\xff\x04\xff\x4a\xfe\xbc\xfd\x36\xfe\x34\xfe\x35\xfe\x30\xfe\xbc\xfd\xdf\xff\x2b\xfe\x0d\xfe\x00\x00\x00\x00\xcf\xff\xe4\xff\xc9\xff\x00\x00\x00\x00\xd8\xff\xd6\xff\xd5\xff\xb5\xfd\xd4\xff\xd9\xff\x00\x00\xbb\xfd\xe9\xff\xe8\xff\xeb\xff\xd0\xff\x00\x00\x00\x00\xd9\xff\xda\xff\xcc\xff\xc7\xff\xca\xff\x00\x00\x2a\xfe\xd8\xfe\x26\xfe\x24\xfe\x00\x00\xbc\xfd\xbc\xfd\x7a\xfe\x7e\xfe\x7c\xfe\x00\x00\xbc\xfd\xa1\xff\x01\xff\x26\xff\x27\xff\xde\xff\x23\xff\x00\x00\x00\x00\x0c\xff\x4e\xff\x00\x00\x00\x00\x00\x00\x00\x00\x10\xff\x11\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\xff\xd1\xfe\x73\xff\xf3\xfe\xf4\xfe\xee\xfe\xde\xff\xef\xfe\xed\xfe\xbc\xfd\x00\x00\xd6\xfe\x95\xff\x00\x00\x6c\xff\xdf\xff\xe6\xfe\x00\x00\x6d\xff\xbc\xfd\x00\x00\x00\x00\xe4\xfe\x00\x00\x00\x00\x00\x00\x21\xff\x00\x00\x00\x00\xdf\xff\xf2\xfe\x00\x00\x13\xff\x37\xff\x15\xff\x1d\xff\x00\x00\x0f\xff\x51\xff\x18\xff\x00\x00\x00\x00\x09\xff\x17\xff\x3e\xff\x00\x00\x00\x00\x00\x00\xdf\xff\x25\xff\x84\xfe\x00\x00\x00\x00\x33\xfe\x27\xfe\xbc\xfd\x25\xfe\x28\xfe\x00\x00\x00\x00\xc8\xff\xd7\xff\xdb\xff\x00\x00\xb6\xff\xb5\xff\xb4\xff\xd2\xff\x00\x00\xd3\xff\xd1\xff\x00\x00\xc5\xff\xbc\xfd\x00\x00\x81\xfe\x7b\xfe\x24\xff\x00\x00\x0b\xff\x16\xff\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xfe\x00\x00\x52\xff\xf8\xfe\xf8\xfe\x04\xff\x00\x00\xd7\xfe\x00\x00\x00\x00\x64\xff\x00\x00\xf6\xff\xdf\xfe\xde\xfe\xbb\xfd\xdd\xfe\xea\xfe\xec\xfe\x00\x00\x12\xff\x0e\xff\x07\xff\x08\xff\x00\x00\x00\x00\x0a\xff\x22\xff\xbc\xfd\xb5\xfe\xc3\xff\x00\x00\xb7\xff\xc6\xff\xcd\xff\xc4\xff\x00\x00\xc0\xff\x23\xfe\x00\x00\x06\xff\xeb\xfe\x04\xff\xdc\xfe\x00\x00\xd8\xff\x00\x00\xd8\xff\xbd\xff\xbc\xff\xb6\xfd\xbb\xff\x05\xff\x00\x00\x00\x00\xd9\xff\xc1\xff\xbe\xff\xc2\xff\x00\x00\xb9\xff\x00\x00\xba\xff\xb8\xff"# - -happyCheck :: HappyAddr -happyCheck = HappyA# "\xff\xff\x00\x00\x06\x00\x02\x00\x01\x00\x01\x00\x01\x00\x08\x00\x02\x00\x06\x00\x02\x00\x0e\x00\x05\x00\x03\x00\x04\x00\x03\x00\x04\x00\x1b\x00\x4e\x00\x1e\x00\x05\x00\x08\x00\x57\x00\x1a\x00\x1b\x00\x1e\x00\x5a\x00\x2a\x00\x6c\x00\x32\x00\x29\x00\x2e\x00\x2b\x00\x2a\x00\x66\x00\x28\x00\x29\x00\x2e\x00\x2b\x00\x0a\x00\x0b\x00\x16\x00\x53\x00\x54\x00\x11\x00\x12\x00\x0a\x00\x0b\x00\x1c\x00\x0e\x00\x0f\x00\x10\x00\x53\x00\x54\x00\x90\x00\x12\x00\x92\x00\x1e\x00\x10\x00\xa5\x00\x2a\x00\x22\x00\x23\x00\x24\x00\x2e\x00\x2a\x00\x7c\x00\x1e\x00\x29\x00\x2e\x00\x2b\x00\x22\x00\x23\x00\x24\x00\xa8\x00\x1e\x00\x1e\x00\xa2\x00\x29\x00\x1e\x00\x2b\x00\x24\x00\x1e\x00\x22\x00\x23\x00\x24\x00\x29\x00\x29\x00\x2b\x00\x2b\x00\x29\x00\x1e\x00\x2b\x00\x29\x00\x8b\x00\x2b\x00\x8d\x00\x24\x00\x32\x00\x6e\x00\x6f\x00\x70\x00\x29\x00\xd1\x00\x2b\x00\x0a\x00\x0b\x00\x1d\x00\x77\x00\x21\x00\x0a\x00\x0b\x00\xb2\x00\x09\x00\x77\x00\xd1\x00\x61\x00\x1c\x00\x1d\x00\xd1\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x22\x00\xd2\x00\x53\x00\x54\x00\x59\x00\x5a\x00\xd2\x00\xc7\x00\xc8\x00\x56\x00\x27\x00\x00\x00\xc4\x00\xc5\x00\x0e\x00\x27\x00\x24\x00\x56\x00\x57\x00\xd1\x00\xd1\x00\xd1\x00\x77\x00\x1d\x00\x1c\x00\x1d\x00\x64\x00\xd1\x00\x84\x00\x0a\x00\x0b\x00\xd7\x00\x77\x00\x6f\x00\x70\x00\x22\x00\xb5\x00\x72\x00\x0a\x00\x0b\x00\x77\x00\x77\x00\x1f\x00\x4d\x00\x77\x00\xd2\x00\xb4\x00\x77\x00\xb1\x00\xb2\x00\xb8\x00\xc4\x00\xd4\x00\xb4\x00\x20\x00\xd2\x00\x77\x00\xb8\x00\x39\x00\x25\x00\x58\x00\x6b\x00\xc4\x00\xc5\x00\x46\x00\x2f\x00\xc8\x00\x0c\x00\xa3\x00\xc4\x00\xc5\x00\xd2\x00\x1d\x00\xc8\x00\xd1\x00\xa3\x00\x2f\x00\xd2\x00\x6a\x00\xd5\x00\xd1\x00\xd1\x00\x20\x00\xc8\x00\x64\x00\xd2\x00\xd5\x00\xd2\x00\xd1\x00\xd1\x00\xd1\x00\xc8\x00\xd2\x00\xb6\x00\xd2\x00\xd1\x00\xb9\x00\xd1\x00\x1c\x00\xd2\x00\xb6\x00\x6b\x00\x2f\x00\xb9\x00\xd2\x00\xb5\x00\xc3\x00\xc4\x00\xc5\x00\xd2\x00\xc7\x00\xc8\x00\xd1\x00\xc3\x00\xc4\x00\xc5\x00\x62\x00\xc7\x00\xc8\x00\xb4\x00\xc4\x00\x2f\x00\xd1\x00\xb8\x00\xd1\x00\xd6\x00\x61\x00\x62\x00\x16\x00\xd2\x00\xd1\x00\xd1\x00\xd6\x00\x72\x00\xd1\x00\xc4\x00\xc5\x00\xd1\x00\xba\x00\xc8\x00\xd1\x00\xbd\x00\x72\x00\xbf\x00\x22\x00\xb4\x00\xd1\x00\xb0\x00\x1c\x00\xb8\x00\x28\x00\x81\x00\xb0\x00\x83\x00\xca\x00\x85\x00\x20\x00\xcd\x00\x88\x00\x89\x00\x8a\x00\xc4\x00\xc5\x00\x37\x00\x38\x00\xc8\x00\x90\x00\x43\x00\x44\x00\x45\x00\x46\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x99\x00\xb4\x00\x1c\x00\x22\x00\x81\x00\xb8\x00\x83\x00\x6a\x00\x85\x00\x1c\x00\x29\x00\x88\x00\x89\x00\x8a\x00\x1c\x00\x3d\x00\x3e\x00\xc4\x00\xc5\x00\x90\x00\x42\x00\xc8\x00\x44\x00\x45\x00\x46\x00\xb6\x00\xb3\x00\x84\x00\x99\x00\xb6\x00\xb7\x00\x22\x00\xb9\x00\x37\x00\x38\x00\x6a\x00\xb6\x00\x28\x00\xc3\x00\xc4\x00\xc5\x00\x4f\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb4\x00\xc3\x00\xc4\x00\xc5\x00\xb8\x00\x22\x00\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xc2\x00\xb9\x00\x63\x00\x0a\x00\x0b\x00\xc4\x00\xc5\x00\xc9\x00\xca\x00\xc8\x00\xd4\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x39\x00\x84\x00\x81\x00\x26\x00\x83\x00\xb6\x00\x85\x00\xd0\x00\xd1\x00\x88\x00\x89\x00\x8a\x00\x25\x00\x1c\x00\xa6\x00\xa7\x00\xa8\x00\x90\x00\xc3\x00\xc4\x00\xc5\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x99\x00\x3e\x00\x3f\x00\x40\x00\x84\x00\x42\x00\x58\x00\x44\x00\x45\x00\x46\x00\xaa\x00\x84\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x84\x00\xb4\x00\x58\x00\xc4\x00\xc5\x00\xb8\x00\xc7\x00\xc8\x00\x6a\x00\x35\x00\xb3\x00\xc4\x00\xc5\x00\xb6\x00\xb7\x00\xd1\x00\xb9\x00\xc4\x00\xc5\x00\x55\x00\x6a\x00\xc8\x00\xd7\x00\x2c\x00\x2d\x00\xaa\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc4\x00\xc5\x00\xd2\x00\xc7\x00\xc8\x00\x0a\x00\x0b\x00\xd0\x00\xd1\x00\x3e\x00\x8b\x00\x40\x00\x17\x00\x42\x00\xc8\x00\x44\x00\x45\x00\x46\x00\xaa\x00\xd7\x00\x49\x00\x4a\x00\x2c\x00\x2d\x00\xc4\x00\xc5\x00\x78\x00\x0a\x00\x0b\x00\x28\x00\x81\x00\x15\x00\x83\x00\xd2\x00\x85\x00\xb7\x00\x0e\x00\x88\x00\x89\x00\x8a\x00\x3e\x00\xd1\x00\x40\x00\x84\x00\x42\x00\x90\x00\x44\x00\x45\x00\x46\x00\x3e\x00\xc6\x00\x49\x00\x4a\x00\x42\x00\x99\x00\x44\x00\x45\x00\x46\x00\xd2\x00\x3d\x00\x3e\x00\xb5\x00\x40\x00\xd4\x00\x42\x00\xc2\x00\x44\x00\x45\x00\x46\x00\x64\x00\x3d\x00\x3e\x00\xc9\x00\xca\x00\xb7\x00\x42\x00\xc4\x00\x44\x00\x45\x00\x46\x00\xb3\x00\x14\x00\x1a\x00\xb6\x00\xb7\x00\xd3\x00\xb9\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xbd\x00\x2c\x00\x2d\x00\xd3\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x2e\x00\x19\x00\x6d\x00\xca\x00\xd7\x00\x45\x00\x46\x00\xd0\x00\xd1\x00\x3e\x00\x22\x00\x40\x00\x3a\x00\x42\x00\x91\x00\x44\x00\x45\x00\x46\x00\x3d\x00\x3e\x00\x49\x00\x4a\x00\xd3\x00\x42\x00\x6d\x00\x44\x00\x45\x00\x46\x00\xb7\x00\x3d\x00\x3e\x00\x7a\x00\x7b\x00\x7c\x00\x42\x00\x4f\x00\x44\x00\x45\x00\x46\x00\x0a\x00\x0b\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x43\x00\x44\x00\x45\x00\x46\x00\x3e\x00\xcd\x00\x40\x00\x09\x00\x42\x00\x0b\x00\x44\x00\x45\x00\x46\x00\xb7\x00\xd7\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x74\x00\x75\x00\x76\x00\x77\x00\x05\x00\x06\x00\x26\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x01\x00\x2d\x00\xb7\x00\x16\x00\xc4\x00\xc5\x00\x27\x00\xc7\x00\xc8\x00\x16\x00\x7a\x00\x7b\x00\x7c\x00\x17\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x4d\x00\x16\x00\x22\x00\xd7\x00\x22\x00\x64\x00\xc4\x00\xc5\x00\x17\x00\xc7\x00\xc8\x00\x32\x00\x33\x00\x2d\x00\xd7\x00\xb4\x00\x3e\x00\x55\x00\x40\x00\x22\x00\x42\x00\xd1\x00\x44\x00\x45\x00\x46\x00\xd7\x00\x48\x00\x49\x00\x4a\x00\x17\x00\x8b\x00\xc4\x00\xc5\x00\xb7\x00\x4f\x00\xc4\x00\xc5\x00\x52\x00\xc7\x00\xc8\x00\x22\x00\x3a\x00\x3b\x00\x3c\x00\x28\x00\x29\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x0a\x00\x0b\x00\x63\x00\xd7\x00\x17\x00\xc4\x00\xc5\x00\x4f\x00\xc7\x00\xc8\x00\xd1\x00\x53\x00\x54\x00\x55\x00\xd7\x00\x22\x00\xc4\x00\xc5\x00\xb9\x00\xc7\x00\xc8\x00\xa4\x00\xa5\x00\xb7\x00\xd7\x00\x61\x00\xd1\x00\xc4\x00\xc5\x00\x91\x00\xc7\x00\xc8\x00\xc7\x00\xc8\x00\xc2\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\x17\x00\x74\x00\x3e\x00\xd7\x00\x40\x00\x8b\x00\x42\x00\x8d\x00\x44\x00\x45\x00\x46\x00\x22\x00\xd7\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x13\x00\xc4\x00\xc5\x00\xc4\x00\xc5\x00\x3e\x00\xd1\x00\x40\x00\x73\x00\x42\x00\x17\x00\x44\x00\x45\x00\x46\x00\x22\x00\x19\x00\x49\x00\x4a\x00\x26\x00\x4c\x00\xd7\x00\x22\x00\xd7\x00\x2b\x00\x22\x00\x3e\x00\xb7\x00\x40\x00\xd3\x00\x42\x00\x1e\x00\x44\x00\x45\x00\x46\x00\x22\x00\x48\x00\x49\x00\x4a\x00\x64\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x65\x00\x3b\x00\x3c\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xcd\x00\xb4\x00\x3e\x00\x19\x00\x40\x00\xb8\x00\x42\x00\xd7\x00\x44\x00\x45\x00\x46\x00\x8b\x00\x22\x00\x49\x00\x4a\x00\x1e\x00\x4c\x00\xc4\x00\xc5\x00\x22\x00\xca\x00\xc8\x00\x3e\x00\xcd\x00\x40\x00\x25\x00\x42\x00\x27\x00\x44\x00\x45\x00\x46\x00\x96\x00\x48\x00\x49\x00\x4a\x00\x08\x00\x09\x00\x31\x00\x32\x00\x33\x00\x05\x00\x06\x00\x3e\x00\x8b\x00\x40\x00\x8d\x00\x42\x00\x19\x00\x44\x00\x45\x00\x46\x00\x34\x00\x48\x00\x49\x00\x4a\x00\xb7\x00\x22\x00\x16\x00\x5b\x00\xae\x00\xaf\x00\xc4\x00\xc5\x00\x24\x00\x25\x00\xc8\x00\xc2\x00\xb6\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xb7\x00\x31\x00\x32\x00\x33\x00\x8b\x00\xc3\x00\xc4\x00\xc5\x00\x4f\x00\x19\x00\x51\x00\x52\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x22\x00\x3e\x00\xb7\x00\x40\x00\x27\x00\x42\x00\x29\x00\x44\x00\x45\x00\x46\x00\x36\x00\x48\x00\x49\x00\x4a\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x6a\x00\x3e\x00\xb4\x00\x40\x00\xd2\x00\x42\x00\xb8\x00\x44\x00\x45\x00\x46\x00\xb7\x00\x48\x00\x49\x00\x4a\x00\xd7\x00\x05\x00\x06\x00\x6a\x00\xc4\x00\xc5\x00\xc4\x00\xc5\x00\xc8\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x6b\x00\x3e\x00\xb7\x00\x40\x00\x16\x00\x42\x00\x31\x00\x44\x00\x45\x00\x46\x00\x78\x00\x48\x00\x49\x00\x4a\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x78\x00\x3e\x00\xb7\x00\x40\x00\x27\x00\x42\x00\x29\x00\x44\x00\x45\x00\x46\x00\x64\x00\x48\x00\x49\x00\x4a\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x27\x00\x3e\x00\x29\x00\x40\x00\x27\x00\x42\x00\x29\x00\x44\x00\x45\x00\x46\x00\xd1\x00\x48\x00\x49\x00\x4a\x00\xd7\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\xaf\x00\xd1\x00\x3e\x00\xb6\x00\x40\x00\xd3\x00\x42\x00\xb6\x00\x44\x00\x45\x00\x46\x00\x07\x00\x48\x00\x49\x00\x4a\x00\xb7\x00\xc3\x00\xc4\x00\xc5\x00\xd3\x00\xc3\x00\xc4\x00\xc5\x00\xd4\x00\x24\x00\x25\x00\xac\x00\x27\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x96\x00\x27\x00\xb7\x00\x29\x00\x31\x00\x32\x00\x33\x00\xc4\x00\xc5\x00\xd1\x00\xc7\x00\xc8\x00\x0a\x00\x0b\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xd3\x00\x3e\x00\xb6\x00\x40\x00\xd3\x00\x42\x00\xd7\x00\x44\x00\x45\x00\x46\x00\xb7\x00\x48\x00\x49\x00\x4a\x00\xd7\x00\xc3\x00\xc4\x00\xc5\x00\xcb\x00\x27\x00\xcd\x00\x29\x00\xcf\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xd3\x00\x3e\x00\xb7\x00\x40\x00\x27\x00\x42\x00\x29\x00\x44\x00\x45\x00\x46\x00\x30\x00\x48\x00\x49\x00\x4a\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x30\x00\x3e\x00\xb7\x00\x40\x00\x27\x00\x42\x00\x29\x00\x44\x00\x45\x00\x46\x00\x50\x00\x48\x00\x49\x00\x4a\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x71\x00\x3e\x00\xb7\x00\x40\x00\x27\x00\x42\x00\x29\x00\x44\x00\x45\x00\x46\x00\x35\x00\x48\x00\x49\x00\x4a\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xd3\x00\x3e\x00\x08\x00\x40\x00\x0a\x00\x42\x00\x35\x00\x44\x00\x45\x00\x46\x00\x35\x00\x48\x00\x49\x00\x4a\x00\xd7\x00\x80\x00\x81\x00\x82\x00\x83\x00\xba\x00\x1f\x00\x3e\x00\xbd\x00\x40\x00\xbf\x00\x42\x00\x08\x00\x44\x00\x45\x00\x46\x00\xd1\x00\x25\x00\x49\x00\x4a\x00\xb7\x00\xca\x00\x0a\x00\x0b\x00\xcd\x00\x45\x00\x8b\x00\x47\x00\x48\x00\x31\x00\x32\x00\x33\x00\x4c\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x3e\x00\xd2\x00\x40\x00\x25\x00\x42\x00\xb6\x00\x44\x00\x45\x00\x46\x00\xd1\x00\xb7\x00\x49\x00\x4a\x00\x8b\x00\xd7\x00\x31\x00\x32\x00\x33\x00\xc3\x00\xc4\x00\xc5\x00\x0a\x00\x0b\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x4d\x00\x3e\x00\xb7\x00\x40\x00\x27\x00\x42\x00\x29\x00\x44\x00\x45\x00\x46\x00\x0c\x00\x0d\x00\x49\x00\x4a\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x17\x00\x3e\x00\xb7\x00\x40\x00\x27\x00\x42\x00\x29\x00\x44\x00\x45\x00\x46\x00\x0a\x00\x0b\x00\x49\x00\x4a\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x17\x00\x3e\x00\xb7\x00\x40\x00\x29\x00\x42\x00\x2b\x00\x44\x00\x45\x00\x46\x00\x0a\x00\x0b\x00\x49\x00\x4a\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x16\x00\x3e\x00\xb7\x00\x40\x00\x2b\x00\x42\x00\x2d\x00\x44\x00\x45\x00\x46\x00\x68\x00\x69\x00\x49\x00\x4a\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x45\x00\x22\x00\x47\x00\x48\x00\x3e\x00\xb6\x00\x40\x00\x4c\x00\x42\x00\x17\x00\x44\x00\x45\x00\x46\x00\xb7\x00\xd7\x00\x49\x00\x4a\x00\x5b\x00\xc3\x00\xc4\x00\xc5\x00\x80\x00\x81\x00\x82\x00\x83\x00\x32\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x16\x00\x3e\x00\x84\x00\x40\x00\x1d\x00\x42\x00\x49\x00\x44\x00\x45\x00\x46\x00\x84\x00\xb7\x00\x49\x00\x4a\x00\xd7\x00\x43\x00\x44\x00\x45\x00\x46\x00\x80\x00\x81\x00\x82\x00\x83\x00\x73\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x5b\x00\x3e\x00\xb7\x00\x40\x00\x29\x00\x42\x00\x28\x00\x44\x00\x45\x00\x46\x00\x68\x00\x69\x00\x49\x00\x4a\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x55\x00\x3e\x00\xb7\x00\x40\x00\x29\x00\x42\x00\x17\x00\x44\x00\x45\x00\x46\x00\x0a\x00\x0b\x00\x49\x00\x4a\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x84\x00\x3e\x00\xb7\x00\x40\x00\x49\x00\x42\x00\x1c\x00\x44\x00\x45\x00\x46\x00\x94\x00\x95\x00\x49\x00\x4a\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x17\x00\x18\x00\x19\x00\x28\x00\x3e\x00\xb7\x00\x40\x00\x1d\x00\x42\x00\x32\x00\x44\x00\x45\x00\x46\x00\x1c\x00\xd7\x00\x49\x00\x4a\x00\x32\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x29\x00\x3e\x00\x3f\x00\x40\x00\x17\x00\x42\x00\x1c\x00\x44\x00\x45\x00\x46\x00\xb7\x00\x3e\x00\x20\x00\x40\x00\xd7\x00\x42\x00\x84\x00\x44\x00\x45\x00\x46\x00\x93\x00\x94\x00\x95\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x93\x00\x94\x00\x95\x00\x84\x00\xc4\x00\xc5\x00\x05\x00\xc7\x00\xc8\x00\x0a\x00\x0b\x00\xb7\x00\x17\x00\x3e\x00\xd7\x00\x40\x00\x32\x00\x42\x00\x2b\x00\x44\x00\x45\x00\x46\x00\x2b\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x73\x00\x3e\x00\xb7\x00\x0a\x00\x0b\x00\x42\x00\x0c\x00\x44\x00\x45\x00\x46\x00\x67\x00\x68\x00\x69\x00\x0f\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x17\x00\x3e\x00\xb7\x00\x0a\x00\x0b\x00\x42\x00\x22\x00\x44\x00\x45\x00\x46\x00\x67\x00\x68\x00\x69\x00\x16\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x0a\x00\x0b\x00\x3e\x00\x1d\x00\xc2\x00\xb7\x00\x42\x00\x17\x00\x44\x00\x45\x00\x46\x00\xc9\x00\xca\x00\xcb\x00\xd7\x00\xcd\x00\x74\x00\xcf\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x0a\x00\x0b\x00\xb7\x00\x84\x00\x41\x00\x42\x00\x29\x00\x44\x00\x45\x00\x46\x00\x33\x00\x34\x00\xb7\x00\x4a\x00\xd7\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x09\x00\x0a\x00\x0b\x00\x05\x00\x06\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x27\x00\x5c\x00\x5d\x00\x5e\x00\xd7\x00\x60\x00\x41\x00\x42\x00\x2d\x00\x44\x00\x45\x00\x46\x00\xb7\x00\x1c\x00\xd7\x00\x5b\x00\x41\x00\x42\x00\x17\x00\x44\x00\x45\x00\x46\x00\x09\x00\x0a\x00\x0b\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x67\x00\x68\x00\x69\x00\x5c\x00\x5d\x00\x5e\x00\x72\x00\x60\x00\x93\x00\x94\x00\x95\x00\x22\x00\xc4\x00\xc5\x00\xd7\x00\xc7\x00\xc8\x00\x60\x00\x44\x00\x45\x00\x46\x00\x47\x00\x1e\x00\x42\x00\x1c\x00\x44\x00\x45\x00\x46\x00\x93\x00\x94\x00\x95\x00\xd7\x00\xc4\x00\xc5\x00\x84\x00\xc7\x00\xc8\x00\x49\x00\x4a\x00\x1d\x00\x42\x00\x1d\x00\x44\x00\x45\x00\x46\x00\x42\x00\x30\x00\x44\x00\x45\x00\x46\x00\x17\x00\xd7\x00\x1e\x00\xc4\x00\xc5\x00\x28\x00\xc7\x00\xc8\x00\x43\x00\x44\x00\x45\x00\x46\x00\x08\x00\x09\x00\xb9\x00\x29\x00\x43\x00\x44\x00\x45\x00\x46\x00\x03\x00\x04\x00\xd7\x00\x03\x00\x04\x00\xc4\x00\xc5\x00\x25\x00\xc7\x00\xc8\x00\x43\x00\x44\x00\x45\x00\x46\x00\x49\x00\x4a\x00\x5f\x00\x43\x00\x44\x00\x45\x00\x46\x00\x25\x00\x7d\x00\x7e\x00\xd7\x00\x1e\x00\xb9\x00\x43\x00\x44\x00\x45\x00\x46\x00\x05\x00\x06\x00\x31\x00\x32\x00\x33\x00\x28\x00\xc4\x00\xc5\x00\x17\x00\xc7\x00\xc8\x00\x44\x00\x45\x00\x46\x00\x22\x00\xb6\x00\xc4\x00\xc5\x00\xb9\x00\xc7\x00\xc8\x00\x43\x00\x44\x00\x45\x00\x46\x00\xd7\x00\x84\x00\x5b\x00\xc3\x00\xc4\x00\xc5\x00\x1d\x00\xc7\x00\xc8\x00\x0c\x00\xd7\x00\xc3\x00\xc4\x00\xc5\x00\xbe\x00\xc7\x00\xc8\x00\x1c\x00\xc2\x00\x78\x00\xc4\x00\xc5\x00\x73\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xc4\x00\xc5\x00\x84\x00\xc7\x00\xc8\x00\xc3\x00\xc4\x00\xc5\x00\x84\x00\xc7\x00\xc8\x00\x0f\x00\xd7\x00\xd8\x00\xd9\x00\x53\x00\x54\x00\xc4\x00\xc5\x00\xd7\x00\xc7\x00\xc8\x00\xc4\x00\xc5\x00\x0f\x00\xc7\x00\xc8\x00\x50\x00\x51\x00\x52\x00\x16\x00\x31\x00\x1c\x00\x29\x00\xc4\x00\xc5\x00\xd7\x00\xc7\x00\xc8\x00\x1c\x00\x1e\x00\xd7\x00\xc4\x00\xc5\x00\x2c\x00\xc7\x00\xc8\x00\x01\x00\x64\x00\x03\x00\x04\x00\x05\x00\x06\x00\xd7\x00\x56\x00\x29\x00\xc4\x00\xc5\x00\x24\x00\xc7\x00\xc8\x00\xd7\x00\x24\x00\xc4\x00\xc5\x00\x5b\x00\xc7\x00\xc8\x00\x16\x00\x73\x00\x18\x00\x19\x00\x1d\x00\xc4\x00\xc5\x00\xd7\x00\xc7\x00\xc8\x00\x20\x00\x5f\x00\x22\x00\x2b\x00\xd7\x00\x1d\x00\x28\x00\x1d\x00\x22\x00\xc4\x00\xc5\x00\x01\x00\xc7\x00\xc8\x00\xd7\x00\x05\x00\x06\x00\x22\x00\x84\x00\x09\x00\xc4\x00\xc5\x00\x21\x00\xc7\x00\xc8\x00\x17\x00\x05\x00\x22\x00\xd7\x00\x22\x00\x2d\x00\x17\x00\x16\x00\x01\x00\x18\x00\x03\x00\x04\x00\x05\x00\x06\x00\xd7\x00\x28\x00\x17\x00\x20\x00\x17\x00\x0f\x00\x5f\x00\x24\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x28\x00\x18\x00\x2f\x00\x30\x00\x0c\x00\x32\x00\x21\x00\x28\x00\x5f\x00\x20\x00\x61\x00\x84\x00\x84\x00\x29\x00\x1d\x00\x22\x00\x17\x00\x73\x00\x28\x00\x01\x00\x02\x00\x73\x00\x2b\x00\x05\x00\x06\x00\x2b\x00\x5b\x00\x32\x00\x22\x00\x74\x00\x73\x00\x73\x00\x2b\x00\x22\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x2b\x00\x01\x00\x1d\x00\x1c\x00\x41\x00\x05\x00\x06\x00\x2c\x00\x5d\x00\x09\x00\x64\x00\x61\x00\x09\x00\x0c\x00\x0b\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x01\x00\x18\x00\x1e\x00\x17\x00\x05\x00\x06\x00\x4b\x00\x74\x00\x5f\x00\x20\x00\x61\x00\x1d\x00\x27\x00\x24\x00\x22\x00\x1d\x00\x1c\x00\x1e\x00\x7f\x00\x27\x00\x2c\x00\x16\x00\x1e\x00\x18\x00\x1e\x00\x2d\x00\x1d\x00\x32\x00\x17\x00\x74\x00\x27\x00\x20\x00\x24\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x7f\x00\x1b\x00\x29\x00\x24\x00\x29\x00\x17\x00\x28\x00\x2b\x00\x79\x00\x32\x00\x29\x00\x61\x00\x73\x00\x20\x00\x22\x00\x0f\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x24\x00\x01\x00\x24\x00\x05\x00\x1c\x00\x05\x00\x06\x00\x74\x00\x01\x00\x17\x00\x17\x00\x61\x00\x05\x00\x06\x00\x22\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x46\x00\x18\x00\x17\x00\x21\x00\x0f\x00\x01\x00\x16\x00\x74\x00\x18\x00\x20\x00\x61\x00\x68\x00\x20\x00\x16\x00\x0c\x00\x17\x00\x20\x00\x17\x00\x7f\x00\x5e\x00\x17\x00\x17\x00\x17\x00\x17\x00\x17\x00\x2b\x00\x16\x00\x32\x00\xbb\x00\x74\x00\x17\x00\xbe\x00\x2d\x00\xc0\x00\x32\x00\xc2\x00\x17\x00\x22\x00\x21\x00\x41\x00\x7f\x00\x25\x00\xc9\x00\xca\x00\xcb\x00\x21\x00\xcd\x00\x4b\x00\xcf\x00\x01\x00\x41\x00\x41\x00\x70\x00\x05\x00\x06\x00\x6d\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\x64\x00\x18\x00\x2d\x00\x61\x00\x0c\x00\x84\x00\x84\x00\x48\x00\x0f\x00\x20\x00\x61\x00\x85\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x0f\x00\x0f\x00\x46\x00\x74\x00\x1d\x00\x01\x00\x1d\x00\x1d\x00\x32\x00\x85\x00\x74\x00\x61\x00\x1d\x00\xbb\x00\x7f\x00\x30\x00\xbe\x00\x00\x00\xc0\x00\x0f\x00\xc2\x00\x7f\x00\x28\x00\xff\xff\x85\x00\xff\xff\x16\x00\xc9\x00\xca\x00\xcb\x00\x74\x00\xcd\x00\xff\xff\xcf\x00\xff\xff\xff\xff\x85\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\x61\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\x4f\x00\xff\xff\x7f\x00\xff\xff\x53\x00\x54\x00\x55\x00\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x61\x00\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xbb\x00\x18\x00\xff\xff\xbe\x00\xff\xff\xc0\x00\xff\xff\xc2\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xc9\x00\xca\x00\xcb\x00\xff\xff\xcd\x00\xff\xff\xcf\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x63\x00\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\x68\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\xff\xff\x79\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x21\x00\xff\xff\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\x6f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\x70\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x57\x00\x03\x00\x04\x00\x05\x00\x06\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\x16\x00\xff\xff\x18\x00\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\x7a\x00\x7b\x00\x7c\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\x61\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x01\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x16\x00\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\x25\x00\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\x74\x00\xff\xff\xff\xff\x01\x00\x02\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x16\x00\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\x26\x00\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x16\x00\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x76\x00\x77\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x01\x00\x46\x00\xff\xff\x48\x00\x05\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\x16\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x74\x00\x75\x00\x76\x00\x77\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x61\x00\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x01\x00\x46\x00\xff\xff\x48\x00\x05\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\x16\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\xff\xff\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x74\x00\x75\x00\x76\x00\x77\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x61\x00\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x01\x00\x02\x00\x48\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\x16\x00\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x1e\x00\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x6a\x00\x26\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x74\x00\x75\x00\x76\x00\x77\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\x1c\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\x61\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\x01\x00\x02\x00\x74\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\x16\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\x01\x00\x02\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\x16\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\x59\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x71\x00\xff\xff\xff\xff\x74\x00\x75\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x61\x00\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\x49\x00\x4a\x00\xff\xff\x74\x00\xff\xff\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\x29\x00\xff\xff\x2b\x00\x01\x00\xff\xff\xff\xff\x2f\x00\x05\x00\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x16\x00\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x57\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6a\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x83\x00\x18\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x90\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x2d\x00\x07\x00\x2f\x00\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xb3\x00\x48\x00\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\xd0\x00\xd1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x74\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\xff\xff\x2f\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x16\x00\x42\x00\x43\x00\x44\x00\xff\xff\x46\x00\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2f\x00\x01\x00\x02\x00\x32\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x38\x00\xff\xff\xff\xff\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x16\x00\xff\xff\xff\xff\x48\x00\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x2f\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\x61\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x68\x00\x42\x00\x43\x00\x44\x00\x16\x00\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x2f\x00\x01\x00\xff\xff\x32\x00\xff\xff\x05\x00\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\x61\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x16\x00\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x2f\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\x61\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\x16\x00\x46\x00\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\x61\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\x42\x00\x43\x00\x44\x00\xff\xff\xff\xff\xff\xff\x48\x00\xff\xff\xff\xff\xff\xff\x01\x00\x74\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\x09\x00\xff\xff\x0b\x00\x61\x00\xff\xff\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x74\x00\x20\x00\x05\x00\x22\x00\x2d\x00\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\x22\x00\xff\xff\x24\x00\x25\x00\x2d\x00\x27\x00\x28\x00\xff\xff\xff\xff\x16\x00\x17\x00\xff\xff\xff\xff\xff\xff\x01\x00\x31\x00\x32\x00\x33\x00\x05\x00\x06\x00\xff\xff\x08\x00\x09\x00\xff\xff\x0b\x00\x26\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x20\x00\x61\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\x2d\x00\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\xff\xff\x74\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x61\x00\x08\x00\x09\x00\xff\xff\x0b\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\x61\x00\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x01\x00\x2f\x00\x03\x00\x04\x00\x05\x00\x06\x00\x74\x00\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x20\x00\x18\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\x18\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x20\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x5f\x00\x01\x00\x61\x00\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x68\x00\xff\xff\xff\xff\x74\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x01\x00\x16\x00\xff\xff\x18\x00\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x20\x00\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x5f\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x01\x00\xff\xff\x03\x00\x04\x00\x05\x00\x06\x00\xff\xff\x74\x00\x01\x00\x02\x00\xff\xff\xff\xff\x05\x00\x06\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\x08\x00\x09\x00\x0a\x00\x0b\x00\x16\x00\xff\xff\x20\x00\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5e\x00\xff\xff\x74\x00\x61\x00\x24\x00\x25\x00\xff\xff\x27\x00\x28\x00\xff\xff\x68\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\x74\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\x61\x00\x01\x00\xff\xff\xff\xff\xff\xff\x05\x00\x06\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6b\x00\x74\x00\xff\xff\xff\xff\x16\x00\x30\x00\x18\x00\x01\x00\x02\x00\x74\x00\xff\xff\x05\x00\x06\x00\xff\xff\x20\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\x01\x00\x16\x00\xff\xff\xff\xff\x05\x00\x06\x00\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x16\x00\xff\xff\x18\x00\x05\x00\x06\x00\xff\xff\x61\x00\x01\x00\xff\xff\xff\xff\x20\x00\x05\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x16\x00\xff\xff\x18\x00\xff\xff\xff\xff\x74\x00\xff\xff\x01\x00\x16\x00\x17\x00\x20\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x26\x00\xff\xff\xff\xff\x01\x00\x16\x00\xff\xff\x74\x00\x05\x00\x06\x00\xff\xff\xff\xff\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x74\x00\x61\x00\x05\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x01\x00\x16\x00\x74\x00\x61\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x61\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x74\x00\x61\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\x74\x00\xff\xff\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xff\xff\xa1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\xff\xff\x9d\x00\x9e\x00\x9f\x00\xff\xff\xa1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\xff\xff\xff\xff\x9e\x00\x9f\x00\xff\xff\xa1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa0\x00\xa1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa0\x00\xa1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\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\xa9\x00\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\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\xa9\x00\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa0\x00\xa1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\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\xa9\x00\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\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\xa9\x00\xff\xff\xab\x00\xff\xff\xad\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\x99\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\x99\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\x99\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\x99\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\x99\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\x99\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\x99\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\x99\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7d\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xff\xff\xff\xff\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\x99\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xbc\x00\xff\xff\xbe\x00\xff\xff\xff\xff\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\x8c\x00\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\x9a\x00\x9b\x00\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\x8c\x00\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\x99\x00\xb9\x00\xff\xff\xff\xff\xbc\x00\xff\xff\xbe\x00\xff\xff\xff\xff\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xcc\x00\xff\xff\xce\x00\xcf\x00\xd0\x00\xd1\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xbc\x00\xff\xff\xbe\x00\xff\xff\xff\xff\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xcc\x00\xff\xff\xce\x00\xcf\x00\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\x8c\x00\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\x8c\x00\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\x99\x00\xb9\x00\xff\xff\xff\xff\xbc\x00\xff\xff\xbe\x00\xff\xff\xff\xff\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xcc\x00\xff\xff\xce\x00\xcf\x00\xd0\x00\xd1\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xbc\x00\xff\xff\xbe\x00\xff\xff\xff\xff\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xcc\x00\xff\xff\xce\x00\xcf\x00\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\x8c\x00\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\x8e\x00\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\x99\x00\xb9\x00\xff\xff\xff\xff\xbc\x00\xff\xff\xbe\x00\xff\xff\xff\xff\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xff\xff\xcc\x00\xff\xff\xce\x00\xcf\x00\xd0\x00\xd1\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xa9\x00\xff\xff\x8f\x00\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\x99\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\x8e\x00\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\x99\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xa9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\x99\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\x99\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\x99\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\x99\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\x99\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\x99\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\x99\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\x99\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\x99\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\x7e\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\x99\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xd0\x00\xd1\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\x99\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x7f\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\xd0\x00\xd1\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x99\x00\xff\xff\xff\xff\xff\xff\xff\xff\x82\x00\x83\x00\x84\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\x85\x00\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\x90\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xd0\x00\xd1\x00\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\x87\x00\x88\x00\x89\x00\x8a\x00\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\x90\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\x87\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xd0\x00\xd1\x00\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\x90\x00\xb9\x00\xff\xff\x93\x00\x94\x00\x95\x00\xff\xff\x97\x00\x98\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\x90\x00\xb9\x00\xff\xff\x93\x00\x94\x00\x95\x00\xff\xff\x97\x00\x98\x00\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xd0\x00\xd1\x00\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xd1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\x90\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xd0\x00\xd1\x00\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\x88\x00\x89\x00\x8a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xd0\x00\xd1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\x90\x00\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\x88\x00\x89\x00\x8a\x00\xff\xff\xd0\x00\xd1\x00\xff\xff\xff\xff\x90\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xff\xff\xff\xff\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xb3\x00\xd0\x00\xd1\x00\xb6\x00\xb7\x00\xff\xff\xb9\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd0\x00\xd1\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"# - -happyTable :: HappyAddr -happyTable = HappyA# "\x00\x00\x73\x00\xcf\x01\x74\x00\x75\x00\xe8\x02\x75\x00\x7d\x03\x07\x00\x76\x00\x09\x00\x2c\x04\x30\x03\x61\x02\x0d\x01\x0c\x01\x0d\x01\x37\x04\x2e\x01\x2c\x00\x62\x02\xd1\x01\xf6\x03\x2d\x04\x2e\x04\x2c\x00\x4c\x03\x82\x00\x19\x03\x15\x03\xae\x03\x14\x03\x2f\x00\x82\x00\x06\x03\xed\x01\xee\x01\xc4\x02\x2f\x00\xba\x01\xca\x02\xbf\xff\x28\x04\x0a\x03\xd8\x02\xd9\x02\xba\x01\xca\x02\xf3\x01\x72\x03\x73\x03\x74\x03\x61\x03\x0a\x03\x8e\x03\x6e\x03\x8f\x03\x2c\x00\xe6\x03\x87\x03\x82\x00\xda\x02\xb4\x01\xb5\x01\xe2\x01\x82\x00\x9a\x02\x2c\x00\x2e\x00\x83\x00\x2f\x00\x6f\x03\xb4\x01\xb5\x01\xe1\x03\x2c\x00\x2c\x00\xf4\x01\x2e\x00\x2c\x00\x2f\x00\xc9\x02\x2c\x00\xb3\x01\xb4\x01\xb5\x01\x2e\x00\xae\x03\x2f\x00\x2f\x00\x2e\x00\x2c\x00\x2f\x00\xeb\x02\x9a\x01\x2f\x00\xbc\x02\x2d\x00\x8d\x02\xaf\x03\xb0\x03\xb1\x03\x2e\x00\xf5\x02\x2f\x00\xba\x01\xbb\x01\xd4\x01\x30\x00\x1c\x02\xba\x01\xbb\x01\xed\x02\xad\x00\x30\x00\x8b\x03\x24\x04\x39\x04\xe9\x03\x48\x00\x32\x01\x33\x01\x34\x01\x35\x01\xac\x01\xf5\x01\x09\x03\x0a\x03\x9e\x02\x9f\x02\x1a\x03\x07\x03\x18\x00\xfb\x02\xbc\x01\x18\x01\x14\x00\x15\x00\x34\x04\xbe\x01\xa1\x03\x97\x03\x98\x03\xee\x02\x99\x03\xa0\x02\x30\x00\xd4\x01\xe8\x03\xe9\x03\x29\x04\x2e\x02\x30\x03\xba\x01\x1f\x03\x2f\x01\x30\x00\xfe\x03\xb1\x03\xc7\x02\x8e\x02\xfc\x02\xba\x01\x1f\x03\x30\x00\x30\x00\x19\x01\xf6\x03\x30\x00\x0b\x03\x2f\x04\x30\x00\xef\x01\xf0\x01\x30\x04\x8f\x02\x1f\x04\x2f\x04\xdc\x00\x0b\x03\x30\x00\x30\x04\xc8\x02\xdd\x00\x03\x04\xd5\x01\x14\x00\x38\x01\x11\x01\xd1\x03\x39\x01\x48\x02\xcb\x02\x14\x00\x38\x01\x84\x00\x1e\x04\x39\x01\xb2\x03\xcc\x02\xd1\x03\x84\x00\x04\x04\x31\x04\xf1\x01\xd0\x01\xdc\x00\x63\x02\x0e\x04\xd2\x01\x31\x04\x08\x00\x77\x00\x0f\x01\x0f\x01\x63\x02\x08\x00\x75\x03\x08\x00\x0e\x01\x76\x03\x0e\x01\xf3\x01\xd2\x01\x75\x03\xd5\x01\x49\x02\x76\x03\x84\x00\x8e\x02\x44\x00\x14\x00\x45\x00\x84\x00\x46\x00\x18\x00\xdb\x02\x44\x00\x14\x00\x45\x00\x18\x04\x46\x00\x18\x00\x36\x01\x8f\x02\x29\x02\xdb\x02\x37\x01\xa0\x02\x77\x03\xd2\x03\xd3\x03\x1c\x04\x0b\x03\x31\x00\xb2\x03\x77\x03\x20\x03\x31\x00\x14\x00\x38\x01\xec\x02\x1d\x02\x39\x01\x99\x03\x1e\x02\x21\x03\x1f\x02\x9d\x02\xea\x03\x31\x00\xbd\x01\xf3\x01\xeb\x03\xfc\x03\xde\x00\xbf\x01\x37\x00\x20\x02\x39\x00\xdc\x00\x21\x02\x3a\x00\x3b\x00\x3c\x00\x14\x00\x38\x01\x37\x03\x28\x03\x39\x01\x3d\x00\x32\x04\x9c\x03\x0e\x00\x0f\x00\x3b\x01\x33\x01\x34\x01\x35\x01\x3e\x00\xea\x03\xf3\x01\xc7\x02\xde\x00\xeb\x03\x37\x00\x0f\x04\x39\x00\x4c\x02\x4c\x03\x3a\x00\x3b\x00\x3c\x00\x4e\x02\xc1\x03\x41\x02\x14\x00\x38\x01\x3d\x00\xf4\x00\x39\x01\x0d\x00\x0e\x00\x0f\x00\x2a\x02\x40\x00\x6a\x02\x3e\x00\x41\x00\x42\x00\x9d\x02\x43\x00\x27\x03\x28\x03\x10\x04\x2a\x02\x9e\x02\x44\x00\x14\x00\x45\x00\x4e\x01\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\xea\x03\x44\x00\x14\x00\x45\x00\xeb\x03\xac\x01\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\xb6\x01\x43\x00\x4f\x01\xba\x01\x5a\x03\x14\x00\x38\x01\xa6\x00\xa7\x00\x39\x01\xf1\x03\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\xad\x01\x6b\x02\xde\x00\x39\x02\x37\x00\x2a\x02\x39\x00\x47\x00\x48\x00\x3a\x00\x3b\x00\x3c\x00\xb3\x03\x4e\x02\x88\x03\x89\x03\x8a\x03\x3d\x00\x44\x00\x14\x00\x45\x00\x3d\x03\x3e\x03\x3f\x03\x40\x03\x41\x03\x3e\x00\x0a\x00\x3a\x02\x3b\x02\x6c\x02\x0c\x00\xa5\x02\x0d\x00\x0e\x00\x0f\x00\xe1\x01\x4d\x02\xf6\x00\x12\x00\x3c\x02\xfc\x00\x4f\x02\x36\x01\x24\x02\x14\x00\x15\x00\x37\x01\x17\x00\x18\x00\xa6\x02\xc0\x03\x40\x00\x14\x00\x29\x03\x41\x00\xce\x02\x8b\x03\x43\x00\x14\x00\x38\x01\x5b\x03\x25\x02\x39\x01\x19\x00\x3a\x03\x7d\x02\x7f\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x14\x00\x15\x00\x80\x00\x17\x00\x18\x00\xba\x01\x45\x03\x47\x00\x48\x00\x0a\x00\xfd\x00\x0b\x00\x28\x01\x0c\x00\xa8\x02\x0d\x00\x0e\x00\x0f\x00\x87\x00\x19\x00\x7e\x02\x12\x00\x26\x03\x7d\x02\x14\x00\x29\x03\xe2\x03\xba\x01\x45\x03\x29\x01\xb4\x03\xe4\x03\x37\x00\x80\x00\x39\x00\x6c\x03\x80\x03\x3a\x00\x3b\x00\x3c\x00\x0a\x00\x42\x03\x0b\x00\x54\x02\x0c\x00\x3d\x00\x0d\x00\x0e\x00\x0f\x00\x1d\x01\x16\x00\x7e\x02\x12\x00\xf4\x00\x3e\x00\x0d\x00\x0e\x00\x0f\x00\x80\x00\xff\x03\x00\x04\x17\x03\x01\x04\x7e\x03\xf4\x00\xfe\x00\x0d\x00\x0e\x00\x0f\x00\x93\x03\xab\x03\x41\x02\xa6\x00\xa7\x00\x13\x00\xf4\x00\x8f\x02\x0d\x00\x0e\x00\x0f\x00\x40\x00\x84\x03\xc8\x00\x41\x00\x42\x00\x95\x03\x43\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x9f\x03\x7c\x02\x7d\x02\xac\x03\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\xc9\x00\x2a\x01\x46\x03\x20\x02\x19\x00\x8a\x00\x0f\x00\x47\x00\x48\x00\x0a\x00\x25\x01\x0b\x00\xca\x00\x0c\x00\xbc\x03\x0d\x00\x0e\x00\x0f\x00\x48\x03\x41\x02\x7e\x02\x12\x00\x3b\x03\xf4\x00\x47\x03\x0d\x00\x0e\x00\x0f\x00\x13\x00\x40\x02\x41\x02\x2b\x02\x2c\x02\x2d\x02\xf4\x00\x43\x03\x0d\x00\x0e\x00\x0f\x00\xba\x01\x5a\x03\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x26\x04\x9c\x03\x0e\x00\x0f\x00\x0a\x00\x50\x02\x0b\x00\xad\x00\x0c\x00\xaf\x00\x0d\x00\x0e\x00\x0f\x00\x13\x00\x19\x00\xfa\x00\x12\x00\xfb\x00\xfc\x00\xbf\x03\x3f\x03\x40\x03\x41\x03\xbc\xfd\xbc\xfd\xbf\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x1b\x00\xa1\x01\x13\x00\x5c\x02\x14\x00\x15\x00\xb3\x00\x17\x00\x18\x00\xbc\xfd\x30\x02\x2c\x02\x2d\x02\x3e\x04\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x4d\x03\x92\x02\xc7\x02\x19\x00\xf1\x03\x5d\x03\x14\x00\x15\x00\xf0\x03\x17\x00\x18\x00\x5d\x02\x5e\x02\x1b\x04\x19\x00\x11\x03\x0a\x00\x5c\x03\x0b\x00\xf1\x03\x0c\x00\x2e\x02\x0d\x00\x0e\x00\x0f\x00\x19\x00\x14\x04\x11\x00\x12\x00\xbe\x02\xfd\x00\x14\x00\x38\x01\x13\x00\x88\x02\x14\x00\x15\x00\x44\x03\x17\x00\x18\x00\xb8\x00\x75\x02\x34\x01\x35\x01\x27\x02\x28\x02\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xc6\x03\xc7\x03\x15\x04\x8b\x00\x12\x02\x14\x00\x15\x00\x23\x00\x17\x00\x18\x00\x42\x03\x27\x00\x28\x00\x29\x00\x19\x00\xb8\x00\x14\x00\x15\x00\xd7\x03\x17\x00\x18\x00\xf3\x02\xf4\x02\x13\x00\x19\x00\x2b\x00\x2e\x02\x14\x00\x15\x00\x63\x03\x17\x00\x18\x00\x46\x00\x18\x00\x9d\x03\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xa6\x00\xa7\x00\x24\x01\x2c\x00\x0a\x00\x19\x00\x0b\x00\x9a\x01\x0c\x00\x10\x02\x0d\x00\x0e\x00\x0f\x00\x25\x01\x19\x00\xfa\x00\x12\x00\xfb\x00\xfc\x00\x70\x03\x14\x00\x15\x00\x14\x00\x15\x00\x0a\x00\xf5\x02\x0b\x00\xf8\xfe\x0c\x00\x9d\x01\x0d\x00\x0e\x00\x0f\x00\xa7\x01\x2b\x01\xf6\x00\x12\x00\xa8\x01\x5e\x03\x1d\x03\xb8\x00\x55\x02\xa9\x01\x2c\x01\x0a\x00\x13\x00\x0b\x00\xf1\x02\x0c\x00\xfa\x03\x0d\x00\x0e\x00\x0f\x00\xfb\x03\x27\x04\x11\x00\x12\x00\x05\x03\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x5f\x03\x72\x02\x35\x01\xd2\x00\xad\x00\xae\x00\xaf\x00\x16\x03\x36\x01\x0a\x00\xa2\x01\x0b\x00\x37\x01\x0c\x00\x19\x00\x0d\x00\x0e\x00\x0f\x00\xfd\x00\x25\x01\xf6\x00\x12\x00\x19\x02\xf7\x00\x14\x00\x38\x01\x1a\x02\x4f\x02\x39\x01\x0a\x00\x50\x02\x0b\x00\xd4\x00\x0c\x00\xb3\x00\x0d\x00\x0e\x00\x0f\x00\x68\x02\x0c\x04\x11\x00\x12\x00\xd2\x00\xad\x00\xd6\x00\xd7\x00\xd8\x00\x1e\x00\x1f\x00\x0a\x00\x9a\x01\x0b\x00\x9b\x01\x0c\x00\xfa\x00\x0d\x00\x0e\x00\x0f\x00\x76\x02\x19\x04\x11\x00\x12\x00\x13\x00\xb8\x00\xd9\x03\x0d\x03\x61\x01\x62\x01\x14\x00\xa7\x02\x23\x02\xd4\x00\xa8\x02\xfe\x00\x63\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xa6\x00\xa7\x00\x13\x00\xd6\x00\xd7\x00\xd8\x00\xf8\x00\x44\x00\x14\x00\x45\x00\x88\x02\xb7\x00\x89\x02\x8a\x02\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xb8\x00\x0a\x00\x13\x00\x0b\x00\x4d\xfe\x0c\x00\x4d\xfe\x0d\x00\x0e\x00\x0f\x00\x77\x02\x05\x04\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x82\x02\x0a\x00\x36\x01\x0b\x00\x84\x02\x0c\x00\x37\x01\x0d\x00\x0e\x00\x0f\x00\x13\x00\xbe\x03\x11\x00\x12\x00\x19\x00\x1e\x00\x1f\x00\x87\x02\x14\x00\x38\x01\x14\x00\x36\x03\x39\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x8b\x02\x0a\x00\x13\x00\x0b\x00\x09\x03\x0c\x00\x92\x02\x0d\x00\x0e\x00\x0f\x00\x96\x02\xc3\x03\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x9b\x02\x0a\x00\x13\x00\x0b\x00\x5f\xfe\x0c\x00\x5f\xfe\x0d\x00\x0e\x00\x0f\x00\xa3\x02\x10\x03\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x69\xfe\x0a\x00\x69\xfe\x0b\x00\x6a\xfe\x0c\x00\x6a\xfe\x0d\x00\x0e\x00\x0f\x00\xc5\x02\x22\x03\x11\x00\x12\x00\x19\x00\xd2\x00\xad\x00\xae\x00\xaf\x00\xaa\x02\xd6\x02\x0a\x00\x07\x04\x0b\x00\xd7\x02\x0c\x00\x63\x01\x0d\x00\x0e\x00\x0f\x00\xdd\x02\x81\x02\x11\x00\x12\x00\x13\x00\x44\x00\x14\x00\x45\x00\xe0\x01\x44\x00\x14\x00\x45\x00\xd5\x01\xd3\x00\xd4\x00\xe4\x01\xb3\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x15\x02\x6b\xfe\x13\x00\x6b\xfe\xd6\x00\xd7\x00\xd8\x00\x14\x00\x15\x00\xe7\x01\x1b\x01\x18\x00\xd9\x03\xda\x03\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xe9\x01\x0a\x00\x44\x02\x0b\x00\xea\x01\x0c\x00\x1c\x01\x0d\x00\x0e\x00\x0f\x00\x13\x00\x1b\x02\x11\x00\x12\x00\x19\x00\x44\x00\x14\x00\x45\x00\xbd\x00\x6c\xfe\xbe\x00\x6c\xfe\xd0\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xf9\x01\x0a\x00\x13\x00\x0b\x00\x6d\xfe\x0c\x00\x6d\xfe\x0d\x00\x0e\x00\x0f\x00\x32\x02\x23\x02\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x35\x02\x0a\x00\x13\x00\x0b\x00\x6e\xfe\x0c\x00\x6e\xfe\x0d\x00\x0e\x00\x0f\x00\x36\x02\x28\x02\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x3e\x02\x0a\x00\x13\x00\x0b\x00\x6f\xfe\x0c\x00\x6f\xfe\x0d\x00\x0e\x00\x0f\x00\x4a\x02\x93\x00\x11\x00\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x16\x01\x0a\x00\xd2\x00\x0b\x00\xae\x00\x0c\x00\x3f\x01\x0d\x00\x0e\x00\x0f\x00\x44\x01\x10\x00\x11\x00\x12\x00\x19\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x1d\x02\x57\x01\x0a\x00\x1e\x02\x0b\x00\x01\x03\x0c\x00\xd2\x00\x0d\x00\x0e\x00\x0f\x00\x5d\x01\xd4\x00\x02\x04\x12\x00\x13\x00\x20\x02\xb8\x03\xb9\x03\x21\x02\x91\x03\xf8\x00\xbe\x03\x68\x00\xd6\x00\xd7\x00\xd8\x00\x93\x03\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x0a\x00\x92\x00\x0b\x00\xd4\x00\x0c\x00\x49\x02\x0d\x00\x0e\x00\x0f\x00\x9d\x00\x13\x00\x38\x02\x12\x00\xb5\x00\x19\x00\xd6\x00\xd7\x00\xd8\x00\x44\x00\x14\x00\x45\x00\x69\x03\x6a\x03\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xf2\x00\x0a\x00\x13\x00\x0b\x00\x76\xfe\x0c\x00\x76\xfe\x0d\x00\x0e\x00\x0f\x00\xe2\x02\xe3\x02\x3d\x02\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x3d\x04\x0a\x00\x13\x00\x0b\x00\x77\xfe\x0c\x00\x77\xfe\x0d\x00\x0e\x00\x0f\x00\xe6\x02\xe7\x02\x45\x02\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x39\x04\x0a\x00\x13\x00\x0b\x00\xd7\xfe\x0c\x00\xd7\xfe\x0d\x00\x0e\x00\x0f\x00\xba\x01\x6d\x02\x54\x02\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x34\x04\x0a\x00\x13\x00\x0b\x00\xa0\x01\x0c\x00\xa1\x01\x0d\x00\x0e\x00\x0f\x00\x2d\x03\x5a\x02\x57\x02\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x91\x03\x36\x04\x92\x03\x68\x00\x0a\x00\x41\x01\x0b\x00\x93\x03\x0c\x00\x37\x04\x0d\x00\x0e\x00\x0f\x00\x13\x00\x19\x00\x5e\x02\x12\x00\xa5\x02\x44\x00\x14\x00\x45\x00\x12\x01\x13\x01\x14\x01\x15\x01\x2b\x04\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x2c\x04\x0a\x00\x26\x04\x0b\x00\x0d\x03\x0c\x00\x0b\x04\x0d\x00\x0e\x00\x0f\x00\x0c\x04\x13\x00\x1a\x01\x12\x00\x19\x00\x12\x04\x9c\x03\x0e\x00\x0f\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x0e\x04\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xa5\x02\x0a\x00\x13\x00\x0b\x00\x5a\xff\x0c\x00\x27\x02\x0d\x00\x0e\x00\x0f\x00\x6e\x02\x5a\x02\x1f\x01\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x1e\x04\x0a\x00\x13\x00\x0b\x00\x12\x04\x0c\x00\xef\x03\x0d\x00\x0e\x00\x0f\x00\xcf\x02\xd0\x02\x48\x01\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xf3\x03\x0a\x00\x13\x00\x0b\x00\xf5\x03\x0c\x00\xf3\x01\x0d\x00\x0e\x00\x0f\x00\xbb\x02\x6c\x01\x4c\x01\x12\x00\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x20\x04\x21\x04\x22\x04\xf8\x03\x0a\x00\x13\x00\x0b\x00\xfc\xfd\x0c\x00\xfd\x03\x0d\x00\x0e\x00\x0f\x00\xf3\x01\x19\x00\x55\x01\x12\x00\xfe\x03\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x07\x04\x0a\x00\x68\x01\x69\x01\x09\x04\xf4\x00\xf3\x01\x0d\x00\x0e\x00\x0f\x00\x13\x00\x0a\x00\x41\x01\x42\x02\x19\x00\xf4\x00\xc9\x03\x0d\x00\x0e\x00\x0f\x00\x09\x04\x6b\x01\x6c\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xdd\x03\x6b\x01\x6c\x01\xce\x03\x14\x00\x15\x00\x1e\x00\x17\x00\x18\x00\xd1\x02\xd2\x02\x13\x00\xd6\x03\x0a\x00\x19\x00\xf3\x00\xd7\x03\xf4\x00\xe1\x03\x0d\x00\x0e\x00\x0f\x00\xbc\xfd\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x98\x02\x1e\x01\x13\x00\xf7\x01\xf8\x01\xf4\x00\xe4\x03\x0d\x00\x0e\x00\x0f\x00\x2c\x03\x59\x02\x5a\x02\xe6\x03\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xe8\x03\x20\x01\x13\x00\xba\x01\x64\x02\xf4\x00\x82\x03\x0d\x00\x0e\x00\x0f\x00\xa1\x02\x59\x02\x5a\x02\x80\x03\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xba\x01\x65\x02\x45\x01\xd4\x01\xb6\x01\x13\x00\xf4\x00\x83\x03\x0d\x00\x0e\x00\x0f\x00\xa6\x00\xa7\x00\xbd\x00\x19\x00\xbe\x00\x86\x03\xd0\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xba\x01\x66\x02\x13\x00\x84\x03\x4e\x03\x4f\x03\xf0\x02\x0d\x00\x0e\x00\x0f\x00\x3c\x01\x3d\x01\x13\x00\x50\x03\x19\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\xd8\x01\xba\x01\xd9\x01\xd7\x01\xd8\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x87\x03\x51\x03\x52\x03\x53\x03\x19\x00\x54\x03\x4e\x03\xcb\x03\x8d\x03\x0d\x00\x0e\x00\x0f\x00\x13\x00\xf3\x01\x19\x00\xa5\x02\x4e\x03\xcf\x03\x95\x03\x0d\x00\x0e\x00\x0f\x00\xda\x01\xba\x01\xd9\x01\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x58\x02\x59\x02\x5a\x02\xcc\x03\x52\x03\x53\x03\x8e\x03\x54\x03\x67\x02\x6b\x01\x6c\x01\x2c\x01\x14\x00\x15\x00\x19\x00\x17\x00\x18\x00\xd0\x03\x03\x01\x0e\x00\x0f\x00\x04\x01\x97\x03\xca\x03\xf3\x01\x0d\x00\x0e\x00\x0f\x00\x6a\x01\x6b\x01\x6c\x01\x19\x00\x14\x00\x15\x00\x9b\x03\x17\x00\x18\x00\x33\x03\x34\x03\xfd\xfd\x56\x02\x9f\x03\x0d\x00\x0e\x00\x0f\x00\x19\x01\xa6\x03\x0d\x00\x0e\x00\x0f\x00\x35\x03\x19\x00\xae\x03\x14\x00\x15\x00\xbb\x03\x17\x00\x18\x00\xa1\x03\x9c\x03\x0e\x00\x0f\x00\xd2\x00\xad\x00\x55\x03\x36\x03\x13\x04\x9c\x03\x0e\x00\x0f\x00\x1c\x00\x1d\x00\x19\x00\xbc\xfd\xbc\xfd\x14\x00\x15\x00\x39\x03\x56\x03\x18\x00\xf8\x03\x9c\x03\x0e\x00\x0f\x00\xff\x02\x00\x03\xa2\x03\xc9\x03\x9c\x03\x0e\x00\x0f\x00\xd4\x00\xdf\x02\xe0\x02\x19\x00\x3d\x03\x55\x03\xce\x03\x9c\x03\x0e\x00\x0f\x00\xd7\x01\xd8\x01\xd6\x00\xd7\x00\xd8\x00\x4a\x03\x14\x00\x15\x00\x4b\x03\x56\x03\x18\x00\x03\x01\x0e\x00\x0f\x00\xc2\x02\x8f\x00\x14\x00\x15\x00\x90\x00\x17\x00\x18\x00\x9b\x03\x9c\x03\x0e\x00\x0f\x00\x19\x00\x3a\x03\xa5\x02\x44\x00\x14\x00\x45\x00\x0d\x03\x46\x00\x18\x00\x6e\x03\x19\x00\x5e\x01\x14\x00\x45\x00\x05\x01\x1b\x01\x18\x00\xf3\x01\xa5\x00\x72\x03\x14\x00\x15\x00\x7b\x03\x17\x00\x18\x00\xa6\x00\xa7\x00\x14\x00\x15\x00\x7c\x03\x17\x00\x18\x00\xa2\x01\x14\x00\x45\x00\x7d\x03\x1b\x01\x18\x00\xe1\x02\x19\x00\x06\x01\x07\x01\x34\x02\x35\x02\x14\x00\x15\x00\x19\x00\x17\x00\x18\x00\x14\x00\x15\x00\xe2\x02\x17\x00\x18\x00\x94\x02\x95\x02\x96\x02\xe5\x02\xea\x02\xf3\x01\xf0\x02\x14\x00\x15\x00\x19\x00\x17\x00\x18\x00\xf3\x01\xf3\x02\x19\x00\x14\x00\x15\x00\xf8\x02\x17\x00\x18\x00\x1b\x00\xc1\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x19\x00\xfd\x02\x01\x03\x14\x00\x15\x00\x03\x03\x17\x00\x18\x00\x19\x00\x04\x03\x14\x00\x15\x00\xa5\x02\x17\x00\x18\x00\x20\x00\x05\x03\x21\x00\xfa\x00\x0d\x03\x14\x00\x15\x00\x19\x00\x17\x00\x18\x00\x22\x00\x0f\x03\xb8\x00\x10\x03\x19\x00\x86\x00\x19\x03\x1c\x03\x1d\x03\x14\x00\x15\x00\x1b\x00\x17\x00\x18\x00\x19\x00\x1e\x00\x1f\x00\x24\x03\x25\x03\x51\xff\x14\x00\x15\x00\x26\x03\x17\x00\x18\x00\x2f\x03\x1e\x00\x6d\x02\x19\x00\x34\xff\x70\x02\x71\x02\x20\x00\x1b\x00\x21\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x19\x00\x72\x02\x74\x02\x22\x00\x75\x02\x3f\x01\x79\x02\x51\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x7a\x02\x21\x00\xa7\x03\x38\xff\x7b\x02\xa8\x03\x7c\x02\x27\x02\x2a\x00\x22\x00\x2b\x00\x80\x02\x81\x02\x84\x02\x86\x02\x39\xff\x87\x02\x8d\x02\x27\x02\x1b\x00\x4a\x00\x98\x02\x9a\x02\x1e\x00\x1f\x00\xbc\xfd\xa5\x02\x17\x04\xaa\x02\x2c\x00\x98\x02\xa3\x02\xa0\x01\xc2\x02\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\xc3\x02\x1b\x00\x86\x00\xf3\x01\xc9\x02\x1e\x00\x1f\x00\xd4\x02\xce\x02\x51\xff\xc1\x01\x2b\x00\xad\x00\xd6\x02\xaf\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x1b\x00\x21\x00\xdd\x02\x00\x01\x1e\x00\x1f\x00\xdc\x01\x2c\x00\x2a\x00\x22\x00\x2b\x00\x82\x00\xdd\x01\x51\xff\xb8\x00\x86\x00\xe6\x01\xe7\x01\xa9\x03\xb3\x00\x22\xfe\x58\x03\xec\x01\x21\x00\xed\x01\x01\x01\xf7\x01\xa8\x03\x99\x01\x2c\x00\x15\x02\x22\x00\x0d\x02\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x18\x04\x17\x02\x18\x02\x1b\x02\x30\x02\x32\x02\x47\x02\x38\x02\x51\x01\x59\x03\x44\x02\x2b\x00\x40\x02\x41\x01\x52\x02\x53\x02\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x60\x02\x1b\x00\x61\x02\x1e\x00\x16\x01\x1e\x00\x1f\x00\x2c\x00\x1b\x00\x22\x01\x23\x01\x2b\x00\x1e\x00\x1f\x00\x26\x01\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x11\x01\x21\x00\x27\x01\x2e\x01\x3f\x01\x1b\x00\x20\x00\x2c\x00\x21\x00\x22\x00\x2b\x00\x4a\x01\x41\x01\x4b\x01\x59\x01\xcc\xfd\x22\x00\xce\xfd\xa9\x03\x4c\x01\xcd\xfd\xd0\xfd\xd3\xfd\x98\x01\x99\x01\xae\x01\x31\x01\x59\x03\xcc\x00\x2c\x00\x9a\x01\xcd\x00\xa1\x01\x52\x01\xa4\x03\xa5\x00\xaf\x01\xa5\x01\xa6\x01\xb0\x01\x5a\x03\xaa\x03\xa6\x00\xa7\x00\xcf\x00\xf6\x00\xbe\x00\xb8\x01\xd0\x00\x1b\x00\xb2\x01\xb3\x01\xba\x01\x1e\x00\x1f\x00\xb9\x01\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x58\x03\xc1\x01\x21\x00\xcc\x01\x2b\x00\xcf\x01\xcd\x01\xce\x01\x79\x00\x7a\x00\x22\x00\x2b\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x7b\x00\x7c\x00\xc7\x00\x2c\x00\x82\x00\x1b\x00\x86\x00\x82\x00\x59\x03\xff\xff\x2c\x00\x2b\x00\xcb\x00\xcc\x00\x5a\x03\x03\x01\xcd\x00\xff\xff\xb0\x01\x91\x02\xa5\x00\xa5\x03\x02\x01\x00\x00\xff\xff\x00\x00\x92\x02\xa6\x00\xa7\x00\xcf\x00\x2c\x00\xbe\x00\x00\x00\xd0\x00\x00\x00\x00\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x2b\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\xf3\x01\x00\x00\x2c\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x23\x00\x00\x00\x5a\x03\x00\x00\x27\x00\x28\x00\x29\x00\x00\x00\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x2b\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xcc\x00\xbc\xfd\x00\x00\xcd\x00\x00\x00\xce\x00\x00\x00\xa5\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\xa6\x00\xa7\x00\xcf\x00\x00\x00\xbe\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\xe1\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\xe6\x02\x00\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\x00\x00\x6d\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x00\x00\x00\x00\x00\x2c\x00\xed\x00\xee\x00\xef\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\xf1\x00\xf2\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\xe1\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\x00\x00\x6d\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x00\x00\x00\x00\x00\x2c\x00\xed\x00\xee\x00\xef\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\xf1\x00\xf2\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\xac\x00\xad\x00\xae\x00\xaf\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x14\x02\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x25\x01\x59\x00\xb1\x00\xb2\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\xb4\x00\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\xac\x00\xad\x00\xae\x00\xaf\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x9f\x01\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x25\x01\x59\x00\xb1\x00\xb2\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\xb4\x00\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\xc1\x00\xad\x00\xae\x00\xaf\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xc2\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\xb8\x00\x59\x00\xb1\x00\xc3\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\xc4\x00\xc5\x00\xc6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\xac\x00\xad\x00\xae\x00\xaf\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\xb0\x00\x00\x00\x59\x00\xb1\x00\xb2\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\xb4\x00\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\xac\x00\xad\x00\xae\x00\xaf\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\xb1\x00\xb2\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\xb4\x00\xb5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\xc7\x01\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\xbc\xfd\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x01\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\xc9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x01\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x08\x02\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x01\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x01\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\xbc\xfd\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x01\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\xc1\x02\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x01\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\xbc\xfd\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x5d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\xbc\xfd\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1b\x00\x69\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x6d\x00\x20\x00\x00\x00\x21\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x22\x00\xf6\x00\x00\x00\x00\x00\x00\x00\x6f\x00\x70\x00\x71\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\xf3\x01\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x2b\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x1b\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x31\x01\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x32\x01\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x2c\x00\x00\x00\x00\x00\x1b\x00\x4a\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x43\x01\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x66\x01\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\xc5\x03\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x2b\x03\x00\x00\xe7\x00\xe8\x00\xe9\x00\x00\x00\x00\x00\x6d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc6\x03\x00\x00\x00\x00\x2c\x00\xed\x00\xee\x00\xef\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\xf3\x01\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x1b\x00\xbc\xfd\x00\x00\xbc\xfd\x1e\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x3b\x01\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x2b\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x1b\x00\xbc\xfd\x00\x00\xbc\xfd\x1e\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x3b\x01\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x2b\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x1b\x00\x4a\x00\x68\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x43\x01\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x65\x01\x00\x00\xe7\x00\xe8\x00\xe9\x00\x00\x00\x00\x00\x6d\x00\x66\x01\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x2c\x00\xed\x00\xee\x00\xef\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\xf3\x01\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x2b\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x1b\x00\x4a\x00\x2c\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x43\x01\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd5\x03\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x2c\x00\x00\x00\x1b\x00\x4a\x00\x00\x00\x00\x00\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\xbc\xfd\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x43\x01\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\xbc\xfd\x00\x00\x00\x00\x00\x00\x00\x00\xbc\xfd\x00\x00\x00\x00\xbc\xfd\xbc\xfd\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x4b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\xe0\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\xb6\x03\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x13\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x03\x00\x00\x00\x00\x2c\x00\xb8\x03\xb1\x02\x4a\x00\x1c\x00\x1d\x00\xb2\x02\x1f\x00\x70\x01\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x2b\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x48\xfe\x48\xfe\x00\x00\x2c\x00\x00\x00\x71\x01\xb3\x02\xb4\x02\xb5\x02\xb6\x02\xb7\x02\xb8\x02\xb9\x02\x79\x01\x7a\x01\x7b\x01\x7c\x01\x7d\x01\x7e\x01\x7f\x01\x80\x01\x81\x01\x82\x01\x83\x01\xba\x02\x85\x01\x86\x01\x87\x01\x88\x01\x89\x01\x8a\x01\x8b\x01\x8c\x01\x8d\x01\x8e\x01\x8f\x01\x90\x01\x91\x01\x92\x01\x93\x01\x94\x01\x95\x01\x96\x01\xbb\x02\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x00\x00\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x00\x00\x97\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x97\xfe\x00\x00\x00\x00\x97\xfe\x00\x00\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x00\x00\x97\xfe\x97\xfe\x97\xfe\x00\x00\x97\xfe\x1b\x00\x00\x00\x00\x00\x97\xfe\x1e\x00\x97\xfe\x97\xfe\x97\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x97\xfe\x00\x00\x00\x00\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x3b\x01\x97\xfe\x97\xfe\x97\xfe\x00\x00\x97\xfe\x00\x00\x97\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x79\x03\x00\x00\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x97\xfe\x00\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\xfe\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\xfe\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x69\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x60\x01\x57\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x6e\x01\x00\x00\x00\x00\x00\x00\x6f\x01\x02\x02\x70\x01\x5b\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x40\x00\x68\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x2c\x00\x71\x01\x72\x01\x73\x01\x74\x01\x75\x01\x76\x01\x77\x01\x78\x01\x79\x01\x7a\x01\x7b\x01\x7c\x01\x7d\x01\x7e\x01\x7f\x01\x80\x01\x81\x01\x82\x01\x83\x01\x84\x01\x85\x01\x86\x01\x87\x01\x88\x01\x89\x01\x8a\x01\x8b\x01\x8c\x01\x8d\x01\x8e\x01\x8f\x01\x90\x01\x91\x01\x92\x01\x93\x01\x94\x01\x95\x01\x96\x01\x97\x01\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x1b\x00\x4a\x00\x00\x00\x5b\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x92\x00\x65\x00\x66\x00\x67\x00\x00\x00\xbc\xfd\x00\x00\x68\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\x00\x1b\x00\x4a\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x5e\x00\x00\x00\x00\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x43\x01\x00\x00\x00\x00\x68\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x5b\x00\x1b\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x2b\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x44\x01\x65\x00\x66\x00\x67\x00\x43\x01\xbc\xfd\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x5b\x00\x1b\x00\x00\x00\x7f\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x2b\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x3b\x01\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x5b\x00\x1b\x00\x4a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x2b\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x43\x01\xbc\xfd\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x1b\x00\x4a\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x58\x00\x00\x00\x00\x00\x59\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x5b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5e\x00\x00\x00\x2b\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x00\x00\x65\x00\x66\x00\x67\x00\x00\x00\x00\x00\x00\x00\x68\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x2c\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\xad\x00\x00\x00\xaf\x00\x2b\x00\x00\x00\x00\x00\xd2\x00\xad\x00\xae\x00\xaf\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x01\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x2c\x00\x22\x00\x1e\x00\xb8\x00\x1f\x03\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x54\x01\x00\x00\xd3\x00\xd4\x00\x01\x01\xb3\x00\x55\x01\x00\x00\x00\x00\x3b\x01\x3b\x04\x00\x00\x00\x00\x00\x00\x1b\x00\xd6\x00\xd7\x00\xd8\x00\x1e\x00\x1f\x00\x00\x00\x09\x01\xad\x00\x00\x00\xaf\x00\x3c\x04\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x00\x00\xb3\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x0b\x01\x00\x00\x0c\x01\x38\xff\x00\x00\x00\x00\x00\x00\x2c\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x2b\x00\x09\x01\xad\x00\x00\x00\xaf\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x0a\x01\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x1b\x00\x2d\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x2c\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x61\x03\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x22\x00\x21\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x21\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x22\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x1b\x00\x2b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x01\x00\x00\x00\x00\x2c\x00\x20\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x00\xad\x00\xae\x00\xaf\x00\x1b\x00\x20\x00\x00\x00\x21\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x22\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\xd3\x00\xd4\x00\x00\x00\xb3\x00\xd5\x00\x00\x00\x2a\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\x1b\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x00\x00\x2c\x00\x1b\x00\x4a\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x00\x00\xd2\x00\xad\x00\xae\x00\xaf\x00\x92\x00\x00\x00\x22\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x79\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x01\x00\x00\x2c\x00\x2b\x00\xd3\x00\xd4\x00\x00\x00\xb3\x00\xc3\x03\x00\x00\x48\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x00\xd7\x00\xd8\x00\x00\x00\x00\x00\x2c\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x20\x00\x00\x00\x21\x00\x2b\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x22\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x03\x2c\x00\x00\x00\x00\x00\x20\x00\x37\xff\x21\x00\x1b\x00\x4a\x00\x2c\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x92\x00\x00\x00\x00\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x20\x00\x00\x00\x21\x00\x1e\x00\x1f\x00\x00\x00\x2b\x00\x1b\x00\x00\x00\x00\x00\x22\x00\x1e\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x1b\x00\x3b\x01\xed\x03\x8f\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\xee\x03\x00\x00\x00\x00\x1b\x00\x2b\x03\x00\x00\x2c\x00\x1e\x00\x1f\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x7a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x2c\x00\x2b\x00\x1e\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x1b\x00\x3b\x01\x2c\x00\x2b\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x2b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\xfa\x01\xc2\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x2c\x00\x2b\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x2c\x00\x00\x00\x02\x02\x03\x02\x04\x02\x05\x02\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xfa\x01\xc2\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\xf8\x02\x04\x02\x05\x02\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xfa\x01\xc2\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x02\x05\x02\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xfa\x01\xc2\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x03\xfc\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xfa\x01\xc2\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x03\xfc\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xc1\x01\xc2\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x01\x00\x00\xd4\x02\x00\x00\xc5\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xc1\x01\xc2\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x01\x00\x00\xe3\x01\x00\x00\xc5\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xfa\x01\xc2\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\x01\xfc\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xc1\x01\xc2\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x01\x00\x00\xc4\x01\x00\x00\xc5\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xc1\x01\xc2\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x01\x00\x00\xc9\x01\x00\x00\xc5\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xfa\x01\xc2\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x24\x04\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\xde\x03\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x3e\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xdf\x03\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\xaa\x03\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x3e\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xbb\x03\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x64\x03\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x3e\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x65\x03\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x66\x03\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x3e\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x67\x03\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x6b\x03\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x3e\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xea\x02\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x98\x02\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x3e\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xbf\x02\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x4f\x01\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x3e\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x96\x00\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x97\x00\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x3e\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x71\x00\x72\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\xb8\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\xb9\x00\xba\x00\x00\x00\x00\x00\xbb\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x3e\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\xa2\x00\x00\x00\xa3\x00\x00\x00\x00\x00\xa4\x00\xbc\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\xa6\x00\xa7\x00\xbd\x00\xa8\x00\xbe\x00\xa9\x00\xbf\x00\x47\x00\x48\x00\x9e\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\xa0\x00\xa1\x00\x00\x00\x09\x02\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x0a\x02\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x3e\x00\x43\x00\x00\x00\x00\x00\xa2\x00\x00\x00\xa3\x00\x00\x00\x00\x00\xa4\x00\xa5\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\xa6\x00\xa7\x00\x00\x00\xa8\x00\x00\x00\xa9\x00\xaa\x00\x47\x00\x48\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\xa2\x00\x00\x00\xa3\x00\x00\x00\x00\x00\xa4\x00\xa5\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\xa6\x00\xa7\x00\x00\x00\xa8\x00\x00\x00\xa9\x00\xaa\x00\x47\x00\x48\x00\x9e\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x0b\x02\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x12\x02\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x3e\x00\x43\x00\x00\x00\x00\x00\xa2\x00\x00\x00\xa3\x00\x00\x00\x00\x00\xa4\x00\xa5\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\xa6\x00\xa7\x00\x00\x00\xa8\x00\x00\x00\xa9\x00\xaa\x00\x47\x00\x48\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\xa2\x00\x00\x00\xa3\x00\x00\x00\x00\x00\xa4\x00\xa5\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\xa6\x00\xa7\x00\x00\x00\xa8\x00\x00\x00\xa9\x00\xaa\x00\x47\x00\x48\x00\x9e\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x9d\x01\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\xdb\x03\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\xdc\x03\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x3e\x00\x43\x00\x00\x00\x00\x00\xa2\x00\x00\x00\xa3\x00\x00\x00\x00\x00\xa4\x00\xa5\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\xa6\x00\xa7\x00\x00\x00\xa8\x00\x00\x00\xa9\x00\xaa\x00\x47\x00\x48\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x0e\x02\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x68\x03\x00\x00\x0f\x02\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x3e\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x98\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x1b\x04\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\xf0\x02\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x3e\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xfd\x02\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\xab\x02\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x3e\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xc3\x02\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\xdd\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x3e\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xde\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\xdf\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x3e\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xe8\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\xf3\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x3e\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\xff\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x08\x02\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x3e\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x0d\x02\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x59\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x3e\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x5a\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x5b\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x3e\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x5c\x01\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x86\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x3e\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x88\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x89\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x3e\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x2b\x03\x34\x00\x95\x00\x36\x00\x37\x00\x38\x00\x39\x00\x47\x00\x48\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\xa3\x01\x34\x00\x95\x00\x36\x00\x37\x00\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x3e\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x94\x00\x34\x00\x95\x00\x36\x00\x37\x00\x38\x00\x39\x00\x47\x00\x48\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x01\x60\x01\x38\x00\x39\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x9b\x00\x00\x00\x00\x00\x3a\x00\x3b\x00\x3c\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x3d\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\xa9\x01\xaa\x01\x7d\x00\x3b\x00\x3c\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x02\x7d\x00\x3b\x00\x3c\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x3d\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x7c\x00\x7d\x00\x3b\x00\x3c\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\xac\x02\x3b\x00\x3c\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x3d\x00\x43\x00\x00\x00\xad\x02\x6b\x01\x6c\x01\x00\x00\xae\x02\x31\x03\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x02\x3b\x00\x3c\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x3d\x00\x43\x00\x00\x00\xad\x02\x6b\x01\x6c\x01\x00\x00\xae\x02\xaf\x02\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x62\x03\x3b\x00\x3c\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x50\x01\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x66\x01\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x47\x00\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x67\x01\x3b\x00\x3c\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x3d\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\xcb\x00\x3b\x00\x3c\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\xca\x01\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x9a\x00\x3b\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x47\x00\x48\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x3b\x00\x3c\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x3d\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\xcb\x00\x3b\x00\x3c\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x47\x00\x48\x00\x41\x00\x42\x00\x00\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x44\x00\x14\x00\x45\x00\x16\x00\x46\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x48\x00\x00\x00\x00\x00\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 (6, 590) [ - (6 , happyReduce_6), - (7 , happyReduce_7), - (8 , happyReduce_8), - (9 , happyReduce_9), - (10 , happyReduce_10), - (11 , happyReduce_11), - (12 , happyReduce_12), - (13 , happyReduce_13), - (14 , happyReduce_14), - (15 , happyReduce_15), - (16 , happyReduce_16), - (17 , happyReduce_17), - (18 , happyReduce_18), - (19 , happyReduce_19), - (20 , happyReduce_20), - (21 , happyReduce_21), - (22 , happyReduce_22), - (23 , happyReduce_23), - (24 , happyReduce_24), - (25 , happyReduce_25), - (26 , happyReduce_26), - (27 , happyReduce_27), - (28 , happyReduce_28), - (29 , happyReduce_29), - (30 , happyReduce_30), - (31 , happyReduce_31), - (32 , happyReduce_32), - (33 , happyReduce_33), - (34 , happyReduce_34), - (35 , happyReduce_35), - (36 , happyReduce_36), - (37 , happyReduce_37), - (38 , happyReduce_38), - (39 , happyReduce_39), - (40 , happyReduce_40), - (41 , happyReduce_41), - (42 , happyReduce_42), - (43 , happyReduce_43), - (44 , happyReduce_44), - (45 , happyReduce_45), - (46 , happyReduce_46), - (47 , happyReduce_47), - (48 , happyReduce_48), - (49 , happyReduce_49), - (50 , happyReduce_50), - (51 , happyReduce_51), - (52 , happyReduce_52), - (53 , happyReduce_53), - (54 , happyReduce_54), - (55 , happyReduce_55), - (56 , happyReduce_56), - (57 , happyReduce_57), - (58 , happyReduce_58), - (59 , happyReduce_59), - (60 , happyReduce_60), - (61 , happyReduce_61), - (62 , happyReduce_62), - (63 , happyReduce_63), - (64 , happyReduce_64), - (65 , happyReduce_65), - (66 , happyReduce_66), - (67 , happyReduce_67), - (68 , happyReduce_68), - (69 , happyReduce_69), - (70 , happyReduce_70), - (71 , happyReduce_71), - (72 , happyReduce_72), - (73 , happyReduce_73), - (74 , happyReduce_74), - (75 , happyReduce_75), - (76 , happyReduce_76), - (77 , happyReduce_77), - (78 , happyReduce_78), - (79 , happyReduce_79), - (80 , happyReduce_80), - (81 , happyReduce_81), - (82 , happyReduce_82), - (83 , happyReduce_83), - (84 , happyReduce_84), - (85 , happyReduce_85), - (86 , happyReduce_86), - (87 , happyReduce_87), - (88 , happyReduce_88), - (89 , happyReduce_89), - (90 , happyReduce_90), - (91 , happyReduce_91), - (92 , happyReduce_92), - (93 , happyReduce_93), - (94 , happyReduce_94), - (95 , happyReduce_95), - (96 , happyReduce_96), - (97 , happyReduce_97), - (98 , happyReduce_98), - (99 , happyReduce_99), - (100 , happyReduce_100), - (101 , happyReduce_101), - (102 , happyReduce_102), - (103 , happyReduce_103), - (104 , happyReduce_104), - (105 , happyReduce_105), - (106 , happyReduce_106), - (107 , happyReduce_107), - (108 , happyReduce_108), - (109 , happyReduce_109), - (110 , happyReduce_110), - (111 , happyReduce_111), - (112 , happyReduce_112), - (113 , happyReduce_113), - (114 , happyReduce_114), - (115 , happyReduce_115), - (116 , happyReduce_116), - (117 , happyReduce_117), - (118 , happyReduce_118), - (119 , happyReduce_119), - (120 , happyReduce_120), - (121 , happyReduce_121), - (122 , happyReduce_122), - (123 , happyReduce_123), - (124 , happyReduce_124), - (125 , happyReduce_125), - (126 , happyReduce_126), - (127 , happyReduce_127), - (128 , happyReduce_128), - (129 , happyReduce_129), - (130 , happyReduce_130), - (131 , happyReduce_131), - (132 , happyReduce_132), - (133 , happyReduce_133), - (134 , happyReduce_134), - (135 , happyReduce_135), - (136 , happyReduce_136), - (137 , happyReduce_137), - (138 , happyReduce_138), - (139 , happyReduce_139), - (140 , happyReduce_140), - (141 , happyReduce_141), - (142 , happyReduce_142), - (143 , happyReduce_143), - (144 , happyReduce_144), - (145 , happyReduce_145), - (146 , happyReduce_146), - (147 , happyReduce_147), - (148 , happyReduce_148), - (149 , happyReduce_149), - (150 , happyReduce_150), - (151 , happyReduce_151), - (152 , happyReduce_152), - (153 , happyReduce_153), - (154 , happyReduce_154), - (155 , happyReduce_155), - (156 , happyReduce_156), - (157 , happyReduce_157), - (158 , happyReduce_158), - (159 , happyReduce_159), - (160 , happyReduce_160), - (161 , happyReduce_161), - (162 , happyReduce_162), - (163 , happyReduce_163), - (164 , happyReduce_164), - (165 , happyReduce_165), - (166 , happyReduce_166), - (167 , happyReduce_167), - (168 , happyReduce_168), - (169 , happyReduce_169), - (170 , happyReduce_170), - (171 , happyReduce_171), - (172 , happyReduce_172), - (173 , happyReduce_173), - (174 , happyReduce_174), - (175 , happyReduce_175), - (176 , happyReduce_176), - (177 , happyReduce_177), - (178 , happyReduce_178), - (179 , happyReduce_179), - (180 , happyReduce_180), - (181 , happyReduce_181), - (182 , happyReduce_182), - (183 , happyReduce_183), - (184 , happyReduce_184), - (185 , happyReduce_185), - (186 , happyReduce_186), - (187 , happyReduce_187), - (188 , happyReduce_188), - (189 , happyReduce_189), - (190 , happyReduce_190), - (191 , happyReduce_191), - (192 , happyReduce_192), - (193 , happyReduce_193), - (194 , happyReduce_194), - (195 , happyReduce_195), - (196 , happyReduce_196), - (197 , happyReduce_197), - (198 , happyReduce_198), - (199 , happyReduce_199), - (200 , happyReduce_200), - (201 , happyReduce_201), - (202 , happyReduce_202), - (203 , happyReduce_203), - (204 , happyReduce_204), - (205 , happyReduce_205), - (206 , happyReduce_206), - (207 , happyReduce_207), - (208 , happyReduce_208), - (209 , happyReduce_209), - (210 , happyReduce_210), - (211 , happyReduce_211), - (212 , happyReduce_212), - (213 , happyReduce_213), - (214 , happyReduce_214), - (215 , happyReduce_215), - (216 , happyReduce_216), - (217 , happyReduce_217), - (218 , happyReduce_218), - (219 , happyReduce_219), - (220 , happyReduce_220), - (221 , happyReduce_221), - (222 , happyReduce_222), - (223 , happyReduce_223), - (224 , happyReduce_224), - (225 , happyReduce_225), - (226 , happyReduce_226), - (227 , happyReduce_227), - (228 , happyReduce_228), - (229 , happyReduce_229), - (230 , happyReduce_230), - (231 , happyReduce_231), - (232 , happyReduce_232), - (233 , happyReduce_233), - (234 , happyReduce_234), - (235 , happyReduce_235), - (236 , happyReduce_236), - (237 , happyReduce_237), - (238 , happyReduce_238), - (239 , happyReduce_239), - (240 , happyReduce_240), - (241 , happyReduce_241), - (242 , happyReduce_242), - (243 , happyReduce_243), - (244 , happyReduce_244), - (245 , happyReduce_245), - (246 , happyReduce_246), - (247 , happyReduce_247), - (248 , happyReduce_248), - (249 , happyReduce_249), - (250 , happyReduce_250), - (251 , happyReduce_251), - (252 , happyReduce_252), - (253 , happyReduce_253), - (254 , happyReduce_254), - (255 , happyReduce_255), - (256 , happyReduce_256), - (257 , happyReduce_257), - (258 , happyReduce_258), - (259 , happyReduce_259), - (260 , happyReduce_260), - (261 , happyReduce_261), - (262 , happyReduce_262), - (263 , happyReduce_263), - (264 , happyReduce_264), - (265 , happyReduce_265), - (266 , happyReduce_266), - (267 , happyReduce_267), - (268 , happyReduce_268), - (269 , happyReduce_269), - (270 , happyReduce_270), - (271 , happyReduce_271), - (272 , happyReduce_272), - (273 , happyReduce_273), - (274 , happyReduce_274), - (275 , happyReduce_275), - (276 , happyReduce_276), - (277 , happyReduce_277), - (278 , happyReduce_278), - (279 , happyReduce_279), - (280 , happyReduce_280), - (281 , happyReduce_281), - (282 , happyReduce_282), - (283 , happyReduce_283), - (284 , happyReduce_284), - (285 , happyReduce_285), - (286 , happyReduce_286), - (287 , happyReduce_287), - (288 , happyReduce_288), - (289 , happyReduce_289), - (290 , happyReduce_290), - (291 , happyReduce_291), - (292 , happyReduce_292), - (293 , happyReduce_293), - (294 , happyReduce_294), - (295 , happyReduce_295), - (296 , happyReduce_296), - (297 , happyReduce_297), - (298 , happyReduce_298), - (299 , happyReduce_299), - (300 , happyReduce_300), - (301 , happyReduce_301), - (302 , happyReduce_302), - (303 , happyReduce_303), - (304 , happyReduce_304), - (305 , happyReduce_305), - (306 , happyReduce_306), - (307 , happyReduce_307), - (308 , happyReduce_308), - (309 , happyReduce_309), - (310 , happyReduce_310), - (311 , happyReduce_311), - (312 , happyReduce_312), - (313 , happyReduce_313), - (314 , happyReduce_314), - (315 , happyReduce_315), - (316 , happyReduce_316), - (317 , happyReduce_317), - (318 , happyReduce_318), - (319 , happyReduce_319), - (320 , happyReduce_320), - (321 , happyReduce_321), - (322 , happyReduce_322), - (323 , happyReduce_323), - (324 , happyReduce_324), - (325 , happyReduce_325), - (326 , happyReduce_326), - (327 , happyReduce_327), - (328 , happyReduce_328), - (329 , happyReduce_329), - (330 , happyReduce_330), - (331 , happyReduce_331), - (332 , happyReduce_332), - (333 , happyReduce_333), - (334 , happyReduce_334), - (335 , happyReduce_335), - (336 , happyReduce_336), - (337 , happyReduce_337), - (338 , happyReduce_338), - (339 , happyReduce_339), - (340 , happyReduce_340), - (341 , happyReduce_341), - (342 , happyReduce_342), - (343 , happyReduce_343), - (344 , happyReduce_344), - (345 , happyReduce_345), - (346 , happyReduce_346), - (347 , happyReduce_347), - (348 , happyReduce_348), - (349 , happyReduce_349), - (350 , happyReduce_350), - (351 , happyReduce_351), - (352 , happyReduce_352), - (353 , happyReduce_353), - (354 , happyReduce_354), - (355 , happyReduce_355), - (356 , happyReduce_356), - (357 , happyReduce_357), - (358 , happyReduce_358), - (359 , happyReduce_359), - (360 , happyReduce_360), - (361 , happyReduce_361), - (362 , happyReduce_362), - (363 , happyReduce_363), - (364 , happyReduce_364), - (365 , happyReduce_365), - (366 , happyReduce_366), - (367 , happyReduce_367), - (368 , happyReduce_368), - (369 , happyReduce_369), - (370 , happyReduce_370), - (371 , happyReduce_371), - (372 , happyReduce_372), - (373 , happyReduce_373), - (374 , happyReduce_374), - (375 , happyReduce_375), - (376 , happyReduce_376), - (377 , happyReduce_377), - (378 , happyReduce_378), - (379 , happyReduce_379), - (380 , happyReduce_380), - (381 , happyReduce_381), - (382 , happyReduce_382), - (383 , happyReduce_383), - (384 , happyReduce_384), - (385 , happyReduce_385), - (386 , happyReduce_386), - (387 , happyReduce_387), - (388 , happyReduce_388), - (389 , happyReduce_389), - (390 , happyReduce_390), - (391 , happyReduce_391), - (392 , happyReduce_392), - (393 , happyReduce_393), - (394 , happyReduce_394), - (395 , happyReduce_395), - (396 , happyReduce_396), - (397 , happyReduce_397), - (398 , happyReduce_398), - (399 , happyReduce_399), - (400 , happyReduce_400), - (401 , happyReduce_401), - (402 , happyReduce_402), - (403 , happyReduce_403), - (404 , happyReduce_404), - (405 , happyReduce_405), - (406 , happyReduce_406), - (407 , happyReduce_407), - (408 , happyReduce_408), - (409 , happyReduce_409), - (410 , happyReduce_410), - (411 , happyReduce_411), - (412 , happyReduce_412), - (413 , happyReduce_413), - (414 , happyReduce_414), - (415 , happyReduce_415), - (416 , happyReduce_416), - (417 , happyReduce_417), - (418 , happyReduce_418), - (419 , happyReduce_419), - (420 , happyReduce_420), - (421 , happyReduce_421), - (422 , happyReduce_422), - (423 , happyReduce_423), - (424 , happyReduce_424), - (425 , happyReduce_425), - (426 , happyReduce_426), - (427 , happyReduce_427), - (428 , happyReduce_428), - (429 , happyReduce_429), - (430 , happyReduce_430), - (431 , happyReduce_431), - (432 , happyReduce_432), - (433 , happyReduce_433), - (434 , happyReduce_434), - (435 , happyReduce_435), - (436 , happyReduce_436), - (437 , happyReduce_437), - (438 , happyReduce_438), - (439 , happyReduce_439), - (440 , happyReduce_440), - (441 , happyReduce_441), - (442 , happyReduce_442), - (443 , happyReduce_443), - (444 , happyReduce_444), - (445 , happyReduce_445), - (446 , happyReduce_446), - (447 , happyReduce_447), - (448 , happyReduce_448), - (449 , happyReduce_449), - (450 , happyReduce_450), - (451 , happyReduce_451), - (452 , happyReduce_452), - (453 , happyReduce_453), - (454 , happyReduce_454), - (455 , happyReduce_455), - (456 , happyReduce_456), - (457 , happyReduce_457), - (458 , happyReduce_458), - (459 , happyReduce_459), - (460 , happyReduce_460), - (461 , happyReduce_461), - (462 , happyReduce_462), - (463 , happyReduce_463), - (464 , happyReduce_464), - (465 , happyReduce_465), - (466 , happyReduce_466), - (467 , happyReduce_467), - (468 , happyReduce_468), - (469 , happyReduce_469), - (470 , happyReduce_470), - (471 , happyReduce_471), - (472 , happyReduce_472), - (473 , happyReduce_473), - (474 , happyReduce_474), - (475 , happyReduce_475), - (476 , happyReduce_476), - (477 , happyReduce_477), - (478 , happyReduce_478), - (479 , happyReduce_479), - (480 , happyReduce_480), - (481 , happyReduce_481), - (482 , happyReduce_482), - (483 , happyReduce_483), - (484 , happyReduce_484), - (485 , happyReduce_485), - (486 , happyReduce_486), - (487 , happyReduce_487), - (488 , happyReduce_488), - (489 , happyReduce_489), - (490 , happyReduce_490), - (491 , happyReduce_491), - (492 , happyReduce_492), - (493 , happyReduce_493), - (494 , happyReduce_494), - (495 , happyReduce_495), - (496 , happyReduce_496), - (497 , happyReduce_497), - (498 , happyReduce_498), - (499 , happyReduce_499), - (500 , happyReduce_500), - (501 , happyReduce_501), - (502 , happyReduce_502), - (503 , happyReduce_503), - (504 , happyReduce_504), - (505 , happyReduce_505), - (506 , happyReduce_506), - (507 , happyReduce_507), - (508 , happyReduce_508), - (509 , happyReduce_509), - (510 , happyReduce_510), - (511 , happyReduce_511), - (512 , happyReduce_512), - (513 , happyReduce_513), - (514 , happyReduce_514), - (515 , happyReduce_515), - (516 , happyReduce_516), - (517 , happyReduce_517), - (518 , happyReduce_518), - (519 , happyReduce_519), - (520 , happyReduce_520), - (521 , happyReduce_521), - (522 , happyReduce_522), - (523 , happyReduce_523), - (524 , happyReduce_524), - (525 , happyReduce_525), - (526 , happyReduce_526), - (527 , happyReduce_527), - (528 , happyReduce_528), - (529 , happyReduce_529), - (530 , happyReduce_530), - (531 , happyReduce_531), - (532 , happyReduce_532), - (533 , happyReduce_533), - (534 , happyReduce_534), - (535 , happyReduce_535), - (536 , happyReduce_536), - (537 , happyReduce_537), - (538 , happyReduce_538), - (539 , happyReduce_539), - (540 , happyReduce_540), - (541 , happyReduce_541), - (542 , happyReduce_542), - (543 , happyReduce_543), - (544 , happyReduce_544), - (545 , happyReduce_545), - (546 , happyReduce_546), - (547 , happyReduce_547), - (548 , happyReduce_548), - (549 , happyReduce_549), - (550 , happyReduce_550), - (551 , happyReduce_551), - (552 , happyReduce_552), - (553 , happyReduce_553), - (554 , happyReduce_554), - (555 , happyReduce_555), - (556 , happyReduce_556), - (557 , happyReduce_557), - (558 , happyReduce_558), - (559 , happyReduce_559), - (560 , happyReduce_560), - (561 , happyReduce_561), - (562 , happyReduce_562), - (563 , happyReduce_563), - (564 , happyReduce_564), - (565 , happyReduce_565), - (566 , happyReduce_566), - (567 , happyReduce_567), - (568 , happyReduce_568), - (569 , happyReduce_569), - (570 , happyReduce_570), - (571 , happyReduce_571), - (572 , happyReduce_572), - (573 , happyReduce_573), - (574 , happyReduce_574), - (575 , happyReduce_575), - (576 , happyReduce_576), - (577 , happyReduce_577), - (578 , happyReduce_578), - (579 , happyReduce_579), - (580 , happyReduce_580), - (581 , happyReduce_581), - (582 , happyReduce_582), - (583 , happyReduce_583), - (584 , happyReduce_584), - (585 , happyReduce_585), - (586 , happyReduce_586), - (587 , happyReduce_587), - (588 , happyReduce_588), - (589 , happyReduce_589), - (590 , happyReduce_590) - ] - -happy_n_terms = 134 :: Int -happy_n_nonterms = 218 :: Int - -happyReduce_6 = happyMonadReduce 2# 0# happyReduction_6 -happyReduction_6 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut11 happy_x_1 of { happy_var_1 -> - case happyOut10 happy_x_2 of { happy_var_2 -> - ( checkExpr happy_var_2 >>= mkPageModule happy_var_1)}} - ) (\r -> happyReturn (happyIn9 r)) - -happyReduce_7 = happyMonadReduce 6# 0# happyReduction_7 -happyReduction_7 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut11 happy_x_1 of { happy_var_1 -> - case happyOut15 happy_x_3 of { happy_var_3 -> - case happyOut218 happy_x_5 of { happy_var_5 -> - case happyOut10 happy_x_6 of { happy_var_6 -> - ( checkExpr happy_var_6 >>= \x -> mkPage (happy_var_3 happy_var_1) happy_var_5 x)}}}} - ) (\r -> happyReturn (happyIn9 r)) - -happyReduce_8 = happySpecReduce_2 0# happyReduction_8 -happyReduction_8 happy_x_2 - happy_x_1 - = case happyOut11 happy_x_1 of { happy_var_1 -> - case happyOut15 happy_x_2 of { happy_var_2 -> - happyIn9 - (happy_var_2 happy_var_1 - )}} - -happyReduce_9 = happyMonadReduce 10# 1# happyReduction_9 -happyReduction_9 (happy_x_10 `HappyStk` - happy_x_9 `HappyStk` - happy_x_8 `HappyStk` - happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut156 happy_x_3 of { happy_var_3 -> - case happyOut159 happy_x_4 of { happy_var_4 -> - case happyOut161 happy_x_5 of { happy_var_5 -> - case happyOut154 happy_x_7 of { happy_var_7 -> - case happyOut156 happy_x_9 of { happy_var_9 -> - ( do { n <- checkEqNames happy_var_3 happy_var_9; - let { cn = reverse happy_var_7; - as = reverse happy_var_4; }; - return $ XTag happy_var_1 n as happy_var_5 cn })}}}}}} - ) (\r -> happyReturn (happyIn10 r)) - -happyReduce_10 = happyReduce 6# 1# happyReduction_10 -happyReduction_10 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut156 happy_x_3 of { happy_var_3 -> - case happyOut159 happy_x_4 of { happy_var_4 -> - case happyOut161 happy_x_5 of { happy_var_5 -> - happyIn10 - (XETag happy_var_1 happy_var_3 (reverse happy_var_4) happy_var_5 - ) `HappyStk` happyRest}}}} - -happyReduce_11 = happySpecReduce_3 2# happyReduction_11 -happyReduction_11 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut12 happy_x_2 of { happy_var_2 -> - happyIn11 - (happy_var_2 - )} - -happyReduce_12 = happySpecReduce_3 3# happyReduction_12 -happyReduction_12 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut13 happy_x_1 of { happy_var_1 -> - case happyOut12 happy_x_3 of { happy_var_3 -> - happyIn12 - (happy_var_1 : happy_var_3 - )}} - -happyReduce_13 = happySpecReduce_0 3# happyReduction_13 -happyReduction_13 = happyIn12 - ([] - ) - -happyReduce_14 = happyReduce 5# 4# happyReduction_14 -happyReduction_14 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut14 happy_x_3 of { happy_var_3 -> - happyIn13 - (LanguagePragma happy_var_1 happy_var_3 - ) `HappyStk` happyRest}} - -happyReduce_15 = happyReduce 4# 4# happyReduction_15 -happyReduction_15 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (INCLUDE happy_var_2) -> - happyIn13 - (IncludePragma happy_var_1 happy_var_2 - ) `HappyStk` happyRest}} - -happyReduce_16 = happyReduce 4# 4# happyReduction_16 -happyReduction_16 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (OPTIONS happy_var_2) -> - happyIn13 - (let (mc, s) = happy_var_2 in OptionsPragma happy_var_1 (readTool mc) s - ) `HappyStk` happyRest}} - -happyReduce_17 = happyReduce 4# 4# happyReduction_17 -happyReduction_17 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (CFILES happy_var_2) -> - happyIn13 - (CFilesPragma happy_var_1 happy_var_2 - ) `HappyStk` happyRest}} - -happyReduce_18 = happySpecReduce_3 5# happyReduction_18 -happyReduction_18 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut209 happy_x_1 of { happy_var_1 -> - case happyOut14 happy_x_3 of { happy_var_3 -> - happyIn14 - (happy_var_1 : happy_var_3 - )}} - -happyReduce_19 = happySpecReduce_1 5# happyReduction_19 -happyReduction_19 happy_x_1 - = case happyOut209 happy_x_1 of { happy_var_1 -> - happyIn14 - ([happy_var_1] - )} - -happyReduce_20 = happyReduce 7# 6# happyReduction_20 -happyReduction_20 (happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut221 happy_x_3 of { happy_var_3 -> - case happyOut16 happy_x_4 of { happy_var_4 -> - case happyOut21 happy_x_5 of { happy_var_5 -> - case happyOut17 happy_x_7 of { happy_var_7 -> - happyIn15 - (\os -> Module happy_var_1 happy_var_3 os happy_var_4 happy_var_5 (fst happy_var_7) (snd happy_var_7) - ) `HappyStk` happyRest}}}}} - -happyReduce_21 = happySpecReduce_2 6# happyReduction_21 -happyReduction_21 happy_x_2 - happy_x_1 - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut17 happy_x_2 of { happy_var_2 -> - happyIn15 - (\os -> Module happy_var_1 main_mod os Nothing (Just [EVar (UnQual main_name)]) - (fst happy_var_2) (snd happy_var_2) - )}} - -happyReduce_22 = happySpecReduce_3 7# happyReduction_22 -happyReduction_22 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_2 of { (StringTok happy_var_2) -> - happyIn16 - (Just $ DeprText happy_var_2 - )} - -happyReduce_23 = happySpecReduce_3 7# happyReduction_23 -happyReduction_23 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_2 of { (StringTok happy_var_2) -> - happyIn16 - (Just $ WarnText happy_var_2 - )} - -happyReduce_24 = happySpecReduce_0 7# happyReduction_24 -happyReduction_24 = happyIn16 - (Nothing - ) - -happyReduce_25 = happySpecReduce_3 8# happyReduction_25 -happyReduction_25 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut18 happy_x_2 of { happy_var_2 -> - happyIn17 - (happy_var_2 - )} - -happyReduce_26 = happySpecReduce_3 8# happyReduction_26 -happyReduction_26 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut18 happy_x_2 of { happy_var_2 -> - happyIn17 - (happy_var_2 - )} - -happyReduce_27 = happyReduce 4# 9# happyReduction_27 -happyReduction_27 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut26 happy_x_2 of { happy_var_2 -> - case happyOut43 happy_x_4 of { happy_var_4 -> - happyIn18 - ((reverse happy_var_2, happy_var_4) - ) `HappyStk` happyRest}} - -happyReduce_28 = happySpecReduce_2 9# happyReduction_28 -happyReduction_28 happy_x_2 - happy_x_1 - = case happyOut43 happy_x_2 of { happy_var_2 -> - happyIn18 - (([], happy_var_2) - )} - -happyReduce_29 = happySpecReduce_3 9# happyReduction_29 -happyReduction_29 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut26 happy_x_2 of { happy_var_2 -> - happyIn18 - ((reverse happy_var_2, []) - )} - -happyReduce_30 = happySpecReduce_1 9# happyReduction_30 -happyReduction_30 happy_x_1 - = happyIn18 - (([], []) - ) - -happyReduce_31 = happySpecReduce_2 10# happyReduction_31 -happyReduction_31 happy_x_2 - happy_x_1 - = happyIn19 - (() - ) - -happyReduce_32 = happySpecReduce_1 11# happyReduction_32 -happyReduction_32 happy_x_1 - = happyIn20 - (() - ) - -happyReduce_33 = happySpecReduce_0 11# happyReduction_33 -happyReduction_33 = happyIn20 - (() - ) - -happyReduce_34 = happySpecReduce_1 12# happyReduction_34 -happyReduction_34 happy_x_1 - = case happyOut22 happy_x_1 of { happy_var_1 -> - happyIn21 - (Just happy_var_1 - )} - -happyReduce_35 = happySpecReduce_0 12# happyReduction_35 -happyReduction_35 = happyIn21 - (Nothing - ) - -happyReduce_36 = happyReduce 4# 13# happyReduction_36 -happyReduction_36 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut24 happy_x_2 of { happy_var_2 -> - happyIn22 - (reverse happy_var_2 - ) `HappyStk` happyRest} - -happyReduce_37 = happySpecReduce_3 13# happyReduction_37 -happyReduction_37 happy_x_3 - happy_x_2 - happy_x_1 - = happyIn22 - ([] - ) - -happyReduce_38 = happySpecReduce_1 14# happyReduction_38 -happyReduction_38 happy_x_1 - = happyIn23 - (() - ) - -happyReduce_39 = happySpecReduce_0 14# happyReduction_39 -happyReduction_39 = happyIn23 - (() - ) - -happyReduce_40 = happySpecReduce_3 15# happyReduction_40 -happyReduction_40 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut24 happy_x_1 of { happy_var_1 -> - case happyOut25 happy_x_3 of { happy_var_3 -> - happyIn24 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_41 = happySpecReduce_1 15# happyReduction_41 -happyReduction_41 happy_x_1 - = case happyOut25 happy_x_1 of { happy_var_1 -> - happyIn24 - ([happy_var_1] - )} - -happyReduce_42 = happySpecReduce_1 16# happyReduction_42 -happyReduction_42 happy_x_1 - = case happyOut191 happy_x_1 of { happy_var_1 -> - happyIn25 - (EVar happy_var_1 - )} - -happyReduce_43 = happySpecReduce_1 16# happyReduction_43 -happyReduction_43 happy_x_1 - = case happyOut223 happy_x_1 of { happy_var_1 -> - happyIn25 - (EAbs happy_var_1 - )} - -happyReduce_44 = happyReduce 4# 16# happyReduction_44 -happyReduction_44 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut223 happy_x_1 of { happy_var_1 -> - happyIn25 - (EThingAll happy_var_1 - ) `HappyStk` happyRest} - -happyReduce_45 = happySpecReduce_3 16# happyReduction_45 -happyReduction_45 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut223 happy_x_1 of { happy_var_1 -> - happyIn25 - (EThingWith happy_var_1 [] - )} - -happyReduce_46 = happyReduce 4# 16# happyReduction_46 -happyReduction_46 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut223 happy_x_1 of { happy_var_1 -> - case happyOut37 happy_x_3 of { happy_var_3 -> - happyIn25 - (EThingWith happy_var_1 (reverse happy_var_3) - ) `HappyStk` happyRest}} - -happyReduce_47 = happySpecReduce_2 16# happyReduction_47 -happyReduction_47 happy_x_2 - happy_x_1 - = case happyOut221 happy_x_2 of { happy_var_2 -> - happyIn25 - (EModuleContents happy_var_2 - )} - -happyReduce_48 = happySpecReduce_3 17# happyReduction_48 -happyReduction_48 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut26 happy_x_1 of { happy_var_1 -> - case happyOut27 happy_x_3 of { happy_var_3 -> - happyIn26 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_49 = happySpecReduce_1 17# happyReduction_49 -happyReduction_49 happy_x_1 - = case happyOut27 happy_x_1 of { happy_var_1 -> - happyIn26 - ([happy_var_1] - )} - -happyReduce_50 = happyReduce 8# 18# happyReduction_50 -happyReduction_50 (happy_x_8 `HappyStk` - happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut28 happy_x_3 of { happy_var_3 -> - case happyOut29 happy_x_4 of { happy_var_4 -> - case happyOut30 happy_x_5 of { happy_var_5 -> - case happyOut221 happy_x_6 of { happy_var_6 -> - case happyOut31 happy_x_7 of { happy_var_7 -> - case happyOut32 happy_x_8 of { happy_var_8 -> - happyIn27 - (ImportDecl happy_var_1 happy_var_6 happy_var_4 happy_var_3 happy_var_5 happy_var_7 happy_var_8 - ) `HappyStk` happyRest}}}}}}} - -happyReduce_51 = happySpecReduce_2 19# happyReduction_51 -happyReduction_51 happy_x_2 - happy_x_1 - = happyIn28 - (True - ) - -happyReduce_52 = happySpecReduce_0 19# happyReduction_52 -happyReduction_52 = happyIn28 - (False - ) - -happyReduce_53 = happySpecReduce_1 20# happyReduction_53 -happyReduction_53 happy_x_1 - = happyIn29 - (True - ) - -happyReduce_54 = happySpecReduce_0 20# happyReduction_54 -happyReduction_54 = happyIn29 - (False - ) - -happyReduce_55 = happyMonadReduce 1# 21# happyReduction_55 -happyReduction_55 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (StringTok happy_var_1) -> - ( do { checkEnabled PackageImports ; - return $ Just happy_var_1 })} - ) (\r -> happyReturn (happyIn30 r)) - -happyReduce_56 = happySpecReduce_0 21# happyReduction_56 -happyReduction_56 = happyIn30 - (Nothing - ) - -happyReduce_57 = happySpecReduce_2 22# happyReduction_57 -happyReduction_57 happy_x_2 - happy_x_1 - = case happyOut221 happy_x_2 of { happy_var_2 -> - happyIn31 - (Just happy_var_2 - )} - -happyReduce_58 = happySpecReduce_0 22# happyReduction_58 -happyReduction_58 = happyIn31 - (Nothing - ) - -happyReduce_59 = happySpecReduce_1 23# happyReduction_59 -happyReduction_59 happy_x_1 - = case happyOut33 happy_x_1 of { happy_var_1 -> - happyIn32 - (Just happy_var_1 - )} - -happyReduce_60 = happySpecReduce_0 23# happyReduction_60 -happyReduction_60 = happyIn32 - (Nothing - ) - -happyReduce_61 = happyReduce 5# 24# happyReduction_61 -happyReduction_61 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut35 happy_x_3 of { happy_var_3 -> - happyIn33 - ((happy_var_1, reverse happy_var_3) - ) `HappyStk` happyRest}} - -happyReduce_62 = happyReduce 4# 24# happyReduction_62 -happyReduction_62 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut34 happy_x_1 of { happy_var_1 -> - happyIn33 - ((happy_var_1, []) - ) `HappyStk` happyRest} - -happyReduce_63 = happySpecReduce_1 25# happyReduction_63 -happyReduction_63 happy_x_1 - = happyIn34 - (True - ) - -happyReduce_64 = happySpecReduce_0 25# happyReduction_64 -happyReduction_64 = happyIn34 - (False - ) - -happyReduce_65 = happySpecReduce_3 26# happyReduction_65 -happyReduction_65 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut35 happy_x_1 of { happy_var_1 -> - case happyOut36 happy_x_3 of { happy_var_3 -> - happyIn35 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_66 = happySpecReduce_1 26# happyReduction_66 -happyReduction_66 happy_x_1 - = case happyOut36 happy_x_1 of { happy_var_1 -> - happyIn35 - ([happy_var_1] - )} - -happyReduce_67 = happySpecReduce_1 27# happyReduction_67 -happyReduction_67 happy_x_1 - = case happyOut189 happy_x_1 of { happy_var_1 -> - happyIn36 - (IVar happy_var_1 - )} - -happyReduce_68 = happySpecReduce_1 27# happyReduction_68 -happyReduction_68 happy_x_1 - = case happyOut222 happy_x_1 of { happy_var_1 -> - happyIn36 - (IAbs happy_var_1 - )} - -happyReduce_69 = happyReduce 4# 27# happyReduction_69 -happyReduction_69 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut222 happy_x_1 of { happy_var_1 -> - happyIn36 - (IThingAll happy_var_1 - ) `HappyStk` happyRest} - -happyReduce_70 = happySpecReduce_3 27# happyReduction_70 -happyReduction_70 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut222 happy_x_1 of { happy_var_1 -> - happyIn36 - (IThingWith happy_var_1 [] - )} - -happyReduce_71 = happyReduce 4# 27# happyReduction_71 -happyReduction_71 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut222 happy_x_1 of { happy_var_1 -> - case happyOut37 happy_x_3 of { happy_var_3 -> - happyIn36 - (IThingWith happy_var_1 (reverse happy_var_3) - ) `HappyStk` happyRest}} - -happyReduce_72 = happySpecReduce_3 28# happyReduction_72 -happyReduction_72 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut38 happy_x_3 of { happy_var_3 -> - happyIn37 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_73 = happySpecReduce_1 28# happyReduction_73 -happyReduction_73 happy_x_1 - = case happyOut38 happy_x_1 of { happy_var_1 -> - happyIn37 - ([happy_var_1] - )} - -happyReduce_74 = happySpecReduce_1 29# happyReduction_74 -happyReduction_74 happy_x_1 - = case happyOut189 happy_x_1 of { happy_var_1 -> - happyIn38 - (VarName happy_var_1 - )} - -happyReduce_75 = happySpecReduce_1 29# happyReduction_75 -happyReduction_75 happy_x_1 - = case happyOut193 happy_x_1 of { happy_var_1 -> - happyIn38 - (ConName happy_var_1 - )} - -happyReduce_76 = happyReduce 4# 30# happyReduction_76 -happyReduction_76 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_2 of { happy_var_2 -> - case happyOut40 happy_x_3 of { happy_var_3 -> - case happyOut42 happy_x_4 of { happy_var_4 -> - happyIn39 - (InfixDecl happy_var_1 happy_var_2 happy_var_3 (reverse happy_var_4) - ) `HappyStk` happyRest}}}} - -happyReduce_77 = happySpecReduce_0 31# happyReduction_77 -happyReduction_77 = happyIn40 - (9 - ) - -happyReduce_78 = happyMonadReduce 1# 31# happyReduction_78 -happyReduction_78 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (IntTok happy_var_1) -> - ( checkPrec happy_var_1)} - ) (\r -> happyReturn (happyIn40 r)) - -happyReduce_79 = happySpecReduce_1 32# happyReduction_79 -happyReduction_79 happy_x_1 - = happyIn41 - (AssocNone - ) - -happyReduce_80 = happySpecReduce_1 32# happyReduction_80 -happyReduction_80 happy_x_1 - = happyIn41 - (AssocLeft - ) - -happyReduce_81 = happySpecReduce_1 32# happyReduction_81 -happyReduction_81 happy_x_1 - = happyIn41 - (AssocRight - ) - -happyReduce_82 = happySpecReduce_3 33# happyReduction_82 -happyReduction_82 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut42 happy_x_1 of { happy_var_1 -> - case happyOut200 happy_x_3 of { happy_var_3 -> - happyIn42 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_83 = happySpecReduce_1 33# happyReduction_83 -happyReduction_83 happy_x_1 - = case happyOut200 happy_x_1 of { happy_var_1 -> - happyIn42 - ([happy_var_1] - )} - -happyReduce_84 = happyMonadReduce 2# 34# happyReduction_84 -happyReduction_84 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut44 happy_x_1 of { happy_var_1 -> - ( checkRevDecls happy_var_1)} - ) (\r -> happyReturn (happyIn43 r)) - -happyReduce_85 = happySpecReduce_3 35# happyReduction_85 -happyReduction_85 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut44 happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_3 of { happy_var_3 -> - happyIn44 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_86 = happySpecReduce_1 35# happyReduction_86 -happyReduction_86 happy_x_1 - = case happyOut45 happy_x_1 of { happy_var_1 -> - happyIn44 - ([happy_var_1] - )} - -happyReduce_87 = happyMonadReduce 5# 36# happyReduction_87 -happyReduction_87 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut71 happy_x_3 of { happy_var_3 -> - case happyOut81 happy_x_5 of { happy_var_5 -> - ( do { (c,ts) <- checkSimpleType happy_var_3; - return (TypeDecl happy_var_1 c ts happy_var_5) })}}} - ) (\r -> happyReturn (happyIn45 r)) - -happyReduce_88 = happyMonadReduce 5# 36# happyReduction_88 -happyReduction_88 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut73 happy_x_4 of { happy_var_4 -> - case happyOut115 happy_x_5 of { happy_var_5 -> - ( do { (c,ts) <- checkSimpleType happy_var_4; - return (TypeFamDecl happy_var_1 c ts happy_var_5) })}}} - ) (\r -> happyReturn (happyIn45 r)) - -happyReduce_89 = happyMonadReduce 6# 36# happyReduction_89 -happyReduction_89 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut70 happy_x_4 of { happy_var_4 -> - case happyOut81 happy_x_6 of { happy_var_6 -> - ( do { -- no checkSimpleType happy_var_4 since dtype may contain type patterns - checkEnabled TypeFamilies ; - return (TypeInsDecl happy_var_1 happy_var_4 happy_var_6) })}}} - ) (\r -> happyReturn (happyIn45 r)) - -happyReduce_90 = happyMonadReduce 5# 36# happyReduction_90 -happyReduction_90 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut46 happy_x_2 of { happy_var_2 -> - case happyOut82 happy_x_3 of { happy_var_3 -> - case happyOut97 happy_x_4 of { happy_var_4 -> - case happyOut109 happy_x_5 of { happy_var_5 -> - ( do { (cs,c,t) <- checkDataHeader happy_var_3; - checkDataOrNew happy_var_2 happy_var_4; - return (DataDecl happy_var_1 happy_var_2 cs c t (reverse happy_var_4) happy_var_5) })}}}}} - ) (\r -> happyReturn (happyIn45 r)) - -happyReduce_91 = happyMonadReduce 7# 36# happyReduction_91 -happyReduction_91 (happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut46 happy_x_2 of { happy_var_2 -> - case happyOut82 happy_x_3 of { happy_var_3 -> - case happyOut115 happy_x_4 of { happy_var_4 -> - case happyOut92 happy_x_6 of { happy_var_6 -> - case happyOut109 happy_x_7 of { happy_var_7 -> - ( do { (cs,c,t) <- checkDataHeader happy_var_3; - checkDataOrNew happy_var_2 happy_var_6; - return (GDataDecl happy_var_1 happy_var_2 cs c t happy_var_4 (reverse happy_var_6) happy_var_7) })}}}}}} - ) (\r -> happyReturn (happyIn45 r)) - -happyReduce_92 = happyMonadReduce 5# 36# happyReduction_92 -happyReduction_92 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_4 of { happy_var_4 -> - case happyOut115 happy_x_5 of { happy_var_5 -> - ( do { (cs,c,t) <- checkDataHeader happy_var_4; - return (DataFamDecl happy_var_1 cs c t happy_var_5) })}}} - ) (\r -> happyReturn (happyIn45 r)) - -happyReduce_93 = happyMonadReduce 6# 36# happyReduction_93 -happyReduction_93 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut46 happy_x_2 of { happy_var_2 -> - case happyOut81 happy_x_4 of { happy_var_4 -> - case happyOut97 happy_x_5 of { happy_var_5 -> - case happyOut109 happy_x_6 of { happy_var_6 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; - checkEnabled TypeFamilies ; - checkDataOrNew happy_var_2 happy_var_5; - return (DataInsDecl happy_var_1 happy_var_2 happy_var_4 (reverse happy_var_5) happy_var_6) })}}}}} - ) (\r -> happyReturn (happyIn45 r)) - -happyReduce_94 = happyMonadReduce 8# 36# happyReduction_94 -happyReduction_94 (happy_x_8 `HappyStk` - happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut46 happy_x_2 of { happy_var_2 -> - case happyOut81 happy_x_4 of { happy_var_4 -> - case happyOut115 happy_x_5 of { happy_var_5 -> - case happyOut92 happy_x_7 of { happy_var_7 -> - case happyOut109 happy_x_8 of { happy_var_8 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; - checkEnabled TypeFamilies ; - checkDataOrNew happy_var_2 happy_var_7; - return (GDataInsDecl happy_var_1 happy_var_2 happy_var_4 happy_var_5 (reverse happy_var_7) happy_var_8) })}}}}}} - ) (\r -> happyReturn (happyIn45 r)) - -happyReduce_95 = happyMonadReduce 5# 36# happyReduction_95 -happyReduction_95 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_3 of { happy_var_3 -> - case happyOut89 happy_x_4 of { happy_var_4 -> - case happyOut116 happy_x_5 of { happy_var_5 -> - ( do { (cs,c,vs) <- checkClassHeader happy_var_3; - return (ClassDecl happy_var_1 cs c vs happy_var_4 happy_var_5) })}}}} - ) (\r -> happyReturn (happyIn45 r)) - -happyReduce_96 = happyMonadReduce 4# 36# happyReduction_96 -happyReduction_96 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_3 of { happy_var_3 -> - case happyOut122 happy_x_4 of { happy_var_4 -> - ( do { (cs,c,ts) <- checkInstHeader happy_var_3; - return (InstDecl happy_var_1 cs c ts happy_var_4) })}}} - ) (\r -> happyReturn (happyIn45 r)) - -happyReduce_97 = happyMonadReduce 4# 36# happyReduction_97 -happyReduction_97 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_4 of { happy_var_4 -> - ( do { checkEnabled StandaloneDeriving ; - (cs, c, ts) <- checkInstHeader happy_var_4; - return (DerivDecl happy_var_1 cs c ts) })}} - ) (\r -> happyReturn (happyIn45 r)) - -happyReduce_98 = happyReduce 5# 36# happyReduction_98 -happyReduction_98 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut47 happy_x_4 of { happy_var_4 -> - happyIn45 - (DefaultDecl happy_var_1 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_99 = happyReduce 4# 36# happyReduction_99 -happyReduction_99 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut134 happy_x_3 of { happy_var_3 -> - happyIn45 - (SpliceDecl happy_var_1 $ ParenSplice happy_var_3 - ) `HappyStk` happyRest}} - -happyReduce_100 = happyReduce 6# 36# happyReduction_100 -happyReduction_100 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut57 happy_x_4 of { happy_var_4 -> - case happyOut58 happy_x_5 of { happy_var_5 -> - case happyOut59 happy_x_6 of { happy_var_6 -> - happyIn45 - (let (s,n,t) = happy_var_6 in ForImp happy_var_1 happy_var_4 happy_var_5 s n t - ) `HappyStk` happyRest}}}} - -happyReduce_101 = happyReduce 5# 36# happyReduction_101 -happyReduction_101 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut57 happy_x_4 of { happy_var_4 -> - case happyOut59 happy_x_5 of { happy_var_5 -> - happyIn45 - (let (s,n,t) = happy_var_5 in ForExp happy_var_1 happy_var_4 s n t - ) `HappyStk` happyRest}}} - -happyReduce_102 = happyReduce 4# 36# happyReduction_102 -happyReduction_102 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut60 happy_x_3 of { happy_var_3 -> - happyIn45 - (RulePragmaDecl happy_var_1 $ reverse happy_var_3 - ) `HappyStk` happyRest}} - -happyReduce_103 = happyReduce 4# 36# happyReduction_103 -happyReduction_103 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut66 happy_x_3 of { happy_var_3 -> - happyIn45 - (DeprPragmaDecl happy_var_1 $ reverse happy_var_3 - ) `HappyStk` happyRest}} - -happyReduce_104 = happyReduce 4# 36# happyReduction_104 -happyReduction_104 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut66 happy_x_3 of { happy_var_3 -> - happyIn45 - (WarnPragmaDecl happy_var_1 $ reverse happy_var_3 - ) `HappyStk` happyRest}} - -happyReduce_105 = happySpecReduce_1 36# happyReduction_105 -happyReduction_105 happy_x_1 - = case happyOut50 happy_x_1 of { happy_var_1 -> - happyIn45 - (happy_var_1 - )} - -happyReduce_106 = happySpecReduce_1 37# happyReduction_106 -happyReduction_106 happy_x_1 - = happyIn46 - (DataType - ) - -happyReduce_107 = happySpecReduce_1 37# happyReduction_107 -happyReduction_107 happy_x_1 - = happyIn46 - (NewType - ) - -happyReduce_108 = happyMonadReduce 1# 38# happyReduction_108 -happyReduction_108 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut84 happy_x_1 of { happy_var_1 -> - ( do { ts <- mapM checkType happy_var_1; - return $ reverse ts })} - ) (\r -> happyReturn (happyIn47 r)) - -happyReduce_109 = happySpecReduce_1 38# happyReduction_109 -happyReduction_109 happy_x_1 - = case happyOut72 happy_x_1 of { happy_var_1 -> - happyIn47 - ([happy_var_1] - )} - -happyReduce_110 = happySpecReduce_0 38# happyReduction_110 -happyReduction_110 = happyIn47 - ([] - ) - -happyReduce_111 = happyMonadReduce 3# 39# happyReduction_111 -happyReduction_111 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut49 happy_x_2 of { happy_var_2 -> - ( checkRevDecls happy_var_2)} - ) (\r -> happyReturn (happyIn48 r)) - -happyReduce_112 = happySpecReduce_1 39# happyReduction_112 -happyReduction_112 happy_x_1 - = happyIn48 - ([] - ) - -happyReduce_113 = happySpecReduce_3 40# happyReduction_113 -happyReduction_113 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut49 happy_x_1 of { happy_var_1 -> - case happyOut50 happy_x_3 of { happy_var_3 -> - happyIn49 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_114 = happySpecReduce_1 40# happyReduction_114 -happyReduction_114 happy_x_1 - = case happyOut50 happy_x_1 of { happy_var_1 -> - happyIn49 - ([happy_var_1] - )} - -happyReduce_115 = happySpecReduce_1 41# happyReduction_115 -happyReduction_115 happy_x_1 - = case happyOut52 happy_x_1 of { happy_var_1 -> - happyIn50 - (happy_var_1 - )} - -happyReduce_116 = happySpecReduce_1 41# happyReduction_116 -happyReduction_116 happy_x_1 - = case happyOut39 happy_x_1 of { happy_var_1 -> - happyIn50 - (happy_var_1 - )} - -happyReduce_117 = happySpecReduce_1 41# happyReduction_117 -happyReduction_117 happy_x_1 - = case happyOut128 happy_x_1 of { happy_var_1 -> - happyIn50 - (happy_var_1 - )} - -happyReduce_118 = happySpecReduce_3 42# happyReduction_118 -happyReduction_118 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut48 happy_x_2 of { happy_var_2 -> - happyIn51 - (happy_var_2 - )} - -happyReduce_119 = happySpecReduce_3 42# happyReduction_119 -happyReduction_119 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut48 happy_x_2 of { happy_var_2 -> - happyIn51 - (happy_var_2 - )} - -happyReduce_120 = happyMonadReduce 4# 43# happyReduction_120 -happyReduction_120 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut138 happy_x_2 of { happy_var_2 -> - case happyOut81 happy_x_4 of { happy_var_4 -> - ( do { v <- checkSigVar happy_var_2; - return $ TypeSig happy_var_1 [v] happy_var_4 })}}} - ) (\r -> happyReturn (happyIn52 r)) - -happyReduce_121 = happyMonadReduce 6# 43# happyReduction_121 -happyReduction_121 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut138 happy_x_2 of { happy_var_2 -> - case happyOut56 happy_x_4 of { happy_var_4 -> - case happyOut81 happy_x_6 of { happy_var_6 -> - ( do { v <- checkSigVar happy_var_2; - return $ TypeSig happy_var_1 (v : reverse happy_var_4) happy_var_6 })}}}} - ) (\r -> happyReturn (happyIn52 r)) - -happyReduce_122 = happyReduce 5# 43# happyReduction_122 -happyReduction_122 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (INLINE happy_var_2) -> - case happyOut62 happy_x_3 of { happy_var_3 -> - case happyOut191 happy_x_4 of { happy_var_4 -> - happyIn52 - (InlineSig happy_var_1 happy_var_2 happy_var_3 happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_123 = happyReduce 6# 43# happyReduction_123 -happyReduction_123 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut191 happy_x_3 of { happy_var_3 -> - case happyOut53 happy_x_5 of { happy_var_5 -> - happyIn52 - (SpecSig happy_var_1 happy_var_3 happy_var_5 - ) `HappyStk` happyRest}}} - -happyReduce_124 = happyReduce 7# 43# happyReduction_124 -happyReduction_124 (happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (SPECIALISE_INLINE happy_var_2) -> - case happyOut62 happy_x_3 of { happy_var_3 -> - case happyOut191 happy_x_4 of { happy_var_4 -> - case happyOut53 happy_x_6 of { happy_var_6 -> - happyIn52 - (SpecInlineSig happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_6 - ) `HappyStk` happyRest}}}}} - -happyReduce_125 = happyMonadReduce 5# 43# happyReduction_125 -happyReduction_125 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_4 of { happy_var_4 -> - ( do { (cs,c,ts) <- checkInstHeader happy_var_4; - return $ InstSig happy_var_1 cs c ts })}} - ) (\r -> happyReturn (happyIn52 r)) - -happyReduce_126 = happySpecReduce_1 44# happyReduction_126 -happyReduction_126 happy_x_1 - = case happyOut54 happy_x_1 of { happy_var_1 -> - happyIn53 - ([ happy_var_1 ] - )} - -happyReduce_127 = happySpecReduce_3 44# happyReduction_127 -happyReduction_127 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut54 happy_x_1 of { happy_var_1 -> - case happyOut53 happy_x_3 of { happy_var_3 -> - happyIn53 - (happy_var_1 : happy_var_3 - )}} - -happyReduce_128 = happyMonadReduce 1# 45# happyReduction_128 -happyReduction_128 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - ( checkType $ mkTyForall Nothing [] happy_var_1)} - ) (\r -> happyReturn (happyIn54 r)) - -happyReduce_129 = happySpecReduce_1 46# happyReduction_129 -happyReduction_129 happy_x_1 - = case happyOut51 happy_x_1 of { happy_var_1 -> - happyIn55 - (BDecls happy_var_1 - )} - -happyReduce_130 = happySpecReduce_3 46# happyReduction_130 -happyReduction_130 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut185 happy_x_2 of { happy_var_2 -> - happyIn55 - (IPBinds happy_var_2 - )} - -happyReduce_131 = happySpecReduce_3 46# happyReduction_131 -happyReduction_131 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut185 happy_x_2 of { happy_var_2 -> - happyIn55 - (IPBinds happy_var_2 - )} - -happyReduce_132 = happySpecReduce_3 47# happyReduction_132 -happyReduction_132 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut56 happy_x_1 of { happy_var_1 -> - case happyOut189 happy_x_3 of { happy_var_3 -> - happyIn56 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_133 = happyMonadReduce 1# 47# happyReduction_133 -happyReduction_133 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut191 happy_x_1 of { happy_var_1 -> - ( do { n <- checkUnQual happy_var_1; - return [n] })} - ) (\r -> happyReturn (happyIn56 r)) - -happyReduce_134 = happySpecReduce_1 48# happyReduction_134 -happyReduction_134 happy_x_1 - = happyIn57 - (StdCall - ) - -happyReduce_135 = happySpecReduce_1 48# happyReduction_135 -happyReduction_135 happy_x_1 - = happyIn57 - (CCall - ) - -happyReduce_136 = happySpecReduce_1 49# happyReduction_136 -happyReduction_136 happy_x_1 - = happyIn58 - (PlaySafe False - ) - -happyReduce_137 = happySpecReduce_1 49# happyReduction_137 -happyReduction_137 happy_x_1 - = happyIn58 - (PlayRisky - ) - -happyReduce_138 = happySpecReduce_1 49# happyReduction_138 -happyReduction_138 happy_x_1 - = happyIn58 - (PlaySafe True - ) - -happyReduce_139 = happySpecReduce_0 49# happyReduction_139 -happyReduction_139 = happyIn58 - (PlaySafe False - ) - -happyReduce_140 = happyReduce 4# 50# happyReduction_140 -happyReduction_140 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_1 of { (StringTok happy_var_1) -> - case happyOut190 happy_x_2 of { happy_var_2 -> - case happyOut70 happy_x_4 of { happy_var_4 -> - happyIn59 - ((happy_var_1, happy_var_2, happy_var_4) - ) `HappyStk` happyRest}}} - -happyReduce_141 = happySpecReduce_3 50# happyReduction_141 -happyReduction_141 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut190 happy_x_1 of { happy_var_1 -> - case happyOut70 happy_x_3 of { happy_var_3 -> - happyIn59 - (("", happy_var_1, happy_var_3) - )}} - -happyReduce_142 = happySpecReduce_3 51# happyReduction_142 -happyReduction_142 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut60 happy_x_1 of { happy_var_1 -> - case happyOut61 happy_x_3 of { happy_var_3 -> - happyIn60 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_143 = happySpecReduce_2 51# happyReduction_143 -happyReduction_143 happy_x_2 - happy_x_1 - = case happyOut60 happy_x_1 of { happy_var_1 -> - happyIn60 - (happy_var_1 - )} - -happyReduce_144 = happySpecReduce_1 51# happyReduction_144 -happyReduction_144 happy_x_1 - = case happyOut61 happy_x_1 of { happy_var_1 -> - happyIn60 - ([happy_var_1] - )} - -happyReduce_145 = happySpecReduce_0 51# happyReduction_145 -happyReduction_145 = happyIn60 - ([] - ) - -happyReduce_146 = happyMonadReduce 6# 52# happyReduction_146 -happyReduction_146 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOutTok happy_x_1 of { (StringTok happy_var_1) -> - case happyOut62 happy_x_2 of { happy_var_2 -> - case happyOut63 happy_x_3 of { happy_var_3 -> - case happyOut136 happy_x_4 of { happy_var_4 -> - case happyOut134 happy_x_6 of { happy_var_6 -> - ( do { e <- checkRuleExpr happy_var_4; - return $ Rule happy_var_1 happy_var_2 happy_var_3 e happy_var_6 })}}}}} - ) (\r -> happyReturn (happyIn61 r)) - -happyReduce_147 = happySpecReduce_0 53# happyReduction_147 -happyReduction_147 = happyIn62 - (AlwaysActive - ) - -happyReduce_148 = happySpecReduce_3 53# happyReduction_148 -happyReduction_148 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOutTok happy_x_2 of { (IntTok happy_var_2) -> - happyIn62 - (ActiveFrom (fromInteger happy_var_2) - )} - -happyReduce_149 = happyReduce 4# 53# happyReduction_149 -happyReduction_149 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_3 of { (IntTok happy_var_3) -> - happyIn62 - (ActiveUntil (fromInteger happy_var_3) - ) `HappyStk` happyRest} - -happyReduce_150 = happySpecReduce_0 54# happyReduction_150 -happyReduction_150 = happyIn63 - (Nothing - ) - -happyReduce_151 = happySpecReduce_3 54# happyReduction_151 -happyReduction_151 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut64 happy_x_2 of { happy_var_2 -> - happyIn63 - (Just happy_var_2 - )} - -happyReduce_152 = happySpecReduce_1 55# happyReduction_152 -happyReduction_152 happy_x_1 - = case happyOut65 happy_x_1 of { happy_var_1 -> - happyIn64 - ([happy_var_1] - )} - -happyReduce_153 = happySpecReduce_2 55# happyReduction_153 -happyReduction_153 happy_x_2 - happy_x_1 - = case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_2 of { happy_var_2 -> - happyIn64 - (happy_var_1 : happy_var_2 - )}} - -happyReduce_154 = happySpecReduce_1 56# happyReduction_154 -happyReduction_154 happy_x_1 - = case happyOut206 happy_x_1 of { happy_var_1 -> - happyIn65 - (RuleVar happy_var_1 - )} - -happyReduce_155 = happyReduce 5# 56# happyReduction_155 -happyReduction_155 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut206 happy_x_2 of { happy_var_2 -> - case happyOut81 happy_x_4 of { happy_var_4 -> - happyIn65 - (TypedRuleVar happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_156 = happySpecReduce_3 57# happyReduction_156 -happyReduction_156 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut66 happy_x_1 of { happy_var_1 -> - case happyOut67 happy_x_3 of { happy_var_3 -> - happyIn66 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_157 = happySpecReduce_2 57# happyReduction_157 -happyReduction_157 happy_x_2 - happy_x_1 - = case happyOut66 happy_x_1 of { happy_var_1 -> - happyIn66 - (happy_var_1 - )} - -happyReduce_158 = happySpecReduce_1 57# happyReduction_158 -happyReduction_158 happy_x_1 - = case happyOut67 happy_x_1 of { happy_var_1 -> - happyIn66 - ([happy_var_1] - )} - -happyReduce_159 = happySpecReduce_0 57# happyReduction_159 -happyReduction_159 = happyIn66 - ([] - ) - -happyReduce_160 = happySpecReduce_2 58# happyReduction_160 -happyReduction_160 happy_x_2 - happy_x_1 - = case happyOut68 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (StringTok happy_var_2) -> - happyIn67 - ((happy_var_1,happy_var_2) - )}} - -happyReduce_161 = happySpecReduce_1 59# happyReduction_161 -happyReduction_161 happy_x_1 - = case happyOut69 happy_x_1 of { happy_var_1 -> - happyIn68 - ([happy_var_1] - )} - -happyReduce_162 = happySpecReduce_3 59# happyReduction_162 -happyReduction_162 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut69 happy_x_1 of { happy_var_1 -> - case happyOut68 happy_x_3 of { happy_var_3 -> - happyIn68 - (happy_var_1 : happy_var_3 - )}} - -happyReduce_163 = happySpecReduce_1 60# happyReduction_163 -happyReduction_163 happy_x_1 - = case happyOut193 happy_x_1 of { happy_var_1 -> - happyIn69 - (happy_var_1 - )} - -happyReduce_164 = happySpecReduce_1 60# happyReduction_164 -happyReduction_164 happy_x_1 - = case happyOut189 happy_x_1 of { happy_var_1 -> - happyIn69 - (happy_var_1 - )} - -happyReduce_165 = happyMonadReduce 1# 61# happyReduction_165 -happyReduction_165 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut71 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn70 r)) - -happyReduce_166 = happySpecReduce_1 62# happyReduction_166 -happyReduction_166 happy_x_1 - = case happyOut75 happy_x_1 of { happy_var_1 -> - happyIn71 - (happy_var_1 - )} - -happyReduce_167 = happySpecReduce_3 62# happyReduction_167 -happyReduction_167 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut75 happy_x_1 of { happy_var_1 -> - case happyOut80 happy_x_2 of { happy_var_2 -> - case happyOut71 happy_x_3 of { happy_var_3 -> - happyIn71 - (TyInfix happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_168 = happySpecReduce_3 62# happyReduction_168 -happyReduction_168 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut75 happy_x_1 of { happy_var_1 -> - case happyOut225 happy_x_2 of { happy_var_2 -> - case happyOut71 happy_x_3 of { happy_var_3 -> - happyIn71 - (TyInfix happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_169 = happySpecReduce_3 62# happyReduction_169 -happyReduction_169 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut75 happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_3 of { happy_var_3 -> - happyIn71 - (TyFun happy_var_1 happy_var_3 - )}} - -happyReduce_170 = happyMonadReduce 3# 62# happyReduction_170 -happyReduction_170 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut75 happy_x_1 of { happy_var_1 -> - case happyOut75 happy_x_3 of { happy_var_3 -> - ( do { checkEnabled TypeFamilies ; - return $ TyPred $ EqualP happy_var_1 happy_var_3 })}} - ) (\r -> happyReturn (happyIn71 r)) - -happyReduce_171 = happyMonadReduce 1# 63# happyReduction_171 -happyReduction_171 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut73 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn72 r)) - -happyReduce_172 = happySpecReduce_3 64# happyReduction_172 -happyReduction_172 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut192 happy_x_1 of { happy_var_1 -> - case happyOut71 happy_x_3 of { happy_var_3 -> - happyIn73 - (TyPred $ IParam happy_var_1 happy_var_3 - )}} - -happyReduce_173 = happySpecReduce_1 64# happyReduction_173 -happyReduction_173 happy_x_1 - = case happyOut71 happy_x_1 of { happy_var_1 -> - happyIn73 - (happy_var_1 - )} - -happyReduce_174 = happyMonadReduce 1# 65# happyReduction_174 -happyReduction_174 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut75 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn74 r)) - -happyReduce_175 = happySpecReduce_2 66# happyReduction_175 -happyReduction_175 happy_x_2 - happy_x_1 - = case happyOut75 happy_x_1 of { happy_var_1 -> - case happyOut77 happy_x_2 of { happy_var_2 -> - happyIn75 - (TyApp happy_var_1 happy_var_2 - )}} - -happyReduce_176 = happySpecReduce_1 66# happyReduction_176 -happyReduction_176 happy_x_1 - = case happyOut77 happy_x_1 of { happy_var_1 -> - happyIn75 - (happy_var_1 - )} - -happyReduce_177 = happyMonadReduce 1# 67# happyReduction_177 -happyReduction_177 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut77 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn76 r)) - -happyReduce_178 = happySpecReduce_1 68# happyReduction_178 -happyReduction_178 happy_x_1 - = case happyOut78 happy_x_1 of { happy_var_1 -> - happyIn77 - (TyCon happy_var_1 - )} - -happyReduce_179 = happySpecReduce_1 68# happyReduction_179 -happyReduction_179 happy_x_1 - = case happyOut224 happy_x_1 of { happy_var_1 -> - happyIn77 - (TyVar happy_var_1 - )} - -happyReduce_180 = happySpecReduce_3 68# happyReduction_180 -happyReduction_180 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut84 happy_x_2 of { happy_var_2 -> - happyIn77 - (TyTuple Boxed (reverse happy_var_2) - )} - -happyReduce_181 = happySpecReduce_3 68# happyReduction_181 -happyReduction_181 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut85 happy_x_2 of { happy_var_2 -> - happyIn77 - (TyTuple Unboxed (reverse happy_var_2) - )} - -happyReduce_182 = happySpecReduce_3 68# happyReduction_182 -happyReduction_182 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut73 happy_x_2 of { happy_var_2 -> - happyIn77 - (TyApp (TyCon list_tycon_name) happy_var_2 - )} - -happyReduce_183 = happySpecReduce_3 68# happyReduction_183 -happyReduction_183 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut82 happy_x_2 of { happy_var_2 -> - happyIn77 - (TyParen happy_var_2 - )} - -happyReduce_184 = happyReduce 5# 68# happyReduction_184 -happyReduction_184 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut82 happy_x_2 of { happy_var_2 -> - case happyOut112 happy_x_4 of { happy_var_4 -> - happyIn77 - (TyKind happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_185 = happySpecReduce_1 69# happyReduction_185 -happyReduction_185 happy_x_1 - = case happyOut79 happy_x_1 of { happy_var_1 -> - happyIn78 - (happy_var_1 - )} - -happyReduce_186 = happySpecReduce_2 69# happyReduction_186 -happyReduction_186 happy_x_2 - happy_x_1 - = happyIn78 - (unit_tycon_name - ) - -happyReduce_187 = happySpecReduce_3 69# happyReduction_187 -happyReduction_187 happy_x_3 - happy_x_2 - happy_x_1 - = happyIn78 - (fun_tycon_name - ) - -happyReduce_188 = happySpecReduce_2 69# happyReduction_188 -happyReduction_188 happy_x_2 - happy_x_1 - = happyIn78 - (list_tycon_name - ) - -happyReduce_189 = happySpecReduce_3 69# happyReduction_189 -happyReduction_189 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut148 happy_x_2 of { happy_var_2 -> - happyIn78 - (tuple_tycon_name Boxed happy_var_2 - )} - -happyReduce_190 = happySpecReduce_2 69# happyReduction_190 -happyReduction_190 happy_x_2 - happy_x_1 - = happyIn78 - (unboxed_singleton_tycon_name - ) - -happyReduce_191 = happySpecReduce_3 69# happyReduction_191 -happyReduction_191 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut148 happy_x_2 of { happy_var_2 -> - happyIn78 - (tuple_tycon_name Unboxed happy_var_2 - )} - -happyReduce_192 = happySpecReduce_1 70# happyReduction_192 -happyReduction_192 happy_x_1 - = case happyOut208 happy_x_1 of { happy_var_1 -> - happyIn79 - (happy_var_1 - )} - -happyReduce_193 = happySpecReduce_3 70# happyReduction_193 -happyReduction_193 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut203 happy_x_2 of { happy_var_2 -> - happyIn79 - (happy_var_2 - )} - -happyReduce_194 = happySpecReduce_1 71# happyReduction_194 -happyReduction_194 happy_x_1 - = case happyOut199 happy_x_1 of { happy_var_1 -> - happyIn80 - (happy_var_1 - )} - -happyReduce_195 = happyMonadReduce 1# 72# happyReduction_195 -happyReduction_195 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut82 happy_x_1 of { happy_var_1 -> - ( checkType happy_var_1)} - ) (\r -> happyReturn (happyIn81 r)) - -happyReduce_196 = happyReduce 4# 73# happyReduction_196 -happyReduction_196 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut86 happy_x_2 of { happy_var_2 -> - case happyOut82 happy_x_4 of { happy_var_4 -> - happyIn82 - (mkTyForall (Just happy_var_2) [] happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_197 = happySpecReduce_3 73# happyReduction_197 -happyReduction_197 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut83 happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_3 of { happy_var_3 -> - happyIn82 - (mkTyForall Nothing happy_var_1 happy_var_3 - )}} - -happyReduce_198 = happySpecReduce_1 73# happyReduction_198 -happyReduction_198 happy_x_1 - = case happyOut73 happy_x_1 of { happy_var_1 -> - happyIn82 - (happy_var_1 - )} - -happyReduce_199 = happyMonadReduce 1# 74# happyReduction_199 -happyReduction_199 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut75 happy_x_1 of { happy_var_1 -> - ( checkPContext happy_var_1)} - ) (\r -> happyReturn (happyIn83 r)) - -happyReduce_200 = happyMonadReduce 3# 74# happyReduction_200 -happyReduction_200 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut75 happy_x_1 of { happy_var_1 -> - case happyOut75 happy_x_3 of { happy_var_3 -> - ( checkEnabled TypeFamilies >> checkPContext (TyPred $ EqualP happy_var_1 happy_var_3))}} - ) (\r -> happyReturn (happyIn83 r)) - -happyReduce_201 = happySpecReduce_3 75# happyReduction_201 -happyReduction_201 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut85 happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_3 of { happy_var_3 -> - happyIn84 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_202 = happySpecReduce_1 76# happyReduction_202 -happyReduction_202 happy_x_1 - = case happyOut82 happy_x_1 of { happy_var_1 -> - happyIn85 - ([happy_var_1] - )} - -happyReduce_203 = happySpecReduce_3 76# happyReduction_203 -happyReduction_203 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut85 happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_3 of { happy_var_3 -> - happyIn85 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_204 = happySpecReduce_2 77# happyReduction_204 -happyReduction_204 happy_x_2 - happy_x_1 - = case happyOut86 happy_x_1 of { happy_var_1 -> - case happyOut87 happy_x_2 of { happy_var_2 -> - happyIn86 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_205 = happySpecReduce_0 77# happyReduction_205 -happyReduction_205 = happyIn86 - ([] - ) - -happyReduce_206 = happySpecReduce_1 78# happyReduction_206 -happyReduction_206 happy_x_1 - = case happyOut224 happy_x_1 of { happy_var_1 -> - happyIn87 - (UnkindedVar happy_var_1 - )} - -happyReduce_207 = happyReduce 5# 78# happyReduction_207 -happyReduction_207 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut224 happy_x_2 of { happy_var_2 -> - case happyOut112 happy_x_4 of { happy_var_4 -> - happyIn87 - (KindedVar happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_208 = happySpecReduce_2 79# happyReduction_208 -happyReduction_208 happy_x_2 - happy_x_1 - = case happyOut88 happy_x_1 of { happy_var_1 -> - case happyOut224 happy_x_2 of { happy_var_2 -> - happyIn88 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_209 = happySpecReduce_0 79# happyReduction_209 -happyReduction_209 = happyIn88 - ([] - ) - -happyReduce_210 = happySpecReduce_0 80# happyReduction_210 -happyReduction_210 = happyIn89 - ([] - ) - -happyReduce_211 = happyMonadReduce 2# 80# happyReduction_211 -happyReduction_211 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut90 happy_x_2 of { happy_var_2 -> - ( checkEnabled FunctionalDependencies >> return (reverse happy_var_2))} - ) (\r -> happyReturn (happyIn89 r)) - -happyReduce_212 = happySpecReduce_3 81# happyReduction_212 -happyReduction_212 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut90 happy_x_1 of { happy_var_1 -> - case happyOut91 happy_x_3 of { happy_var_3 -> - happyIn90 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_213 = happySpecReduce_1 81# happyReduction_213 -happyReduction_213 happy_x_1 - = case happyOut91 happy_x_1 of { happy_var_1 -> - happyIn90 - ([happy_var_1] - )} - -happyReduce_214 = happySpecReduce_3 82# happyReduction_214 -happyReduction_214 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut88 happy_x_1 of { happy_var_1 -> - case happyOut88 happy_x_3 of { happy_var_3 -> - happyIn91 - (FunDep (reverse happy_var_1) (reverse happy_var_3) - )}} - -happyReduce_215 = happyMonadReduce 1# 83# happyReduction_215 -happyReduction_215 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut93 happy_x_1 of { happy_var_1 -> - ( checkEnabled GADTs >> return happy_var_1)} - ) (\r -> happyReturn (happyIn92 r)) - -happyReduce_216 = happySpecReduce_3 84# happyReduction_216 -happyReduction_216 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut94 happy_x_2 of { happy_var_2 -> - happyIn93 - (happy_var_2 - )} - -happyReduce_217 = happySpecReduce_3 84# happyReduction_217 -happyReduction_217 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut94 happy_x_2 of { happy_var_2 -> - happyIn93 - (happy_var_2 - )} - -happyReduce_218 = happySpecReduce_3 85# happyReduction_218 -happyReduction_218 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut95 happy_x_2 of { happy_var_2 -> - happyIn94 - (happy_var_2 - )} - -happyReduce_219 = happySpecReduce_3 86# happyReduction_219 -happyReduction_219 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut95 happy_x_1 of { happy_var_1 -> - case happyOut96 happy_x_3 of { happy_var_3 -> - happyIn95 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_220 = happySpecReduce_1 86# happyReduction_220 -happyReduction_220 happy_x_1 - = case happyOut96 happy_x_1 of { happy_var_1 -> - happyIn95 - ([happy_var_1] - )} - -happyReduce_221 = happyMonadReduce 4# 87# happyReduction_221 -happyReduction_221 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut194 happy_x_2 of { happy_var_2 -> - case happyOut81 happy_x_4 of { happy_var_4 -> - ( do { c <- checkUnQual happy_var_2; - return $ GadtDecl happy_var_1 c happy_var_4 })}}} - ) (\r -> happyReturn (happyIn96 r)) - -happyReduce_222 = happyMonadReduce 0# 88# happyReduction_222 -happyReduction_222 (happyRest) tk - = happyThen (( checkEnabled EmptyDataDecls >> return []) - ) (\r -> happyReturn (happyIn97 r)) - -happyReduce_223 = happySpecReduce_2 88# happyReduction_223 -happyReduction_223 happy_x_2 - happy_x_1 - = case happyOut98 happy_x_2 of { happy_var_2 -> - happyIn97 - (happy_var_2 - )} - -happyReduce_224 = happySpecReduce_3 89# happyReduction_224 -happyReduction_224 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut98 happy_x_1 of { happy_var_1 -> - case happyOut99 happy_x_3 of { happy_var_3 -> - happyIn98 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_225 = happySpecReduce_1 89# happyReduction_225 -happyReduction_225 happy_x_1 - = case happyOut99 happy_x_1 of { happy_var_1 -> - happyIn98 - ([happy_var_1] - )} - -happyReduce_226 = happyMonadReduce 5# 90# happyReduction_226 -happyReduction_226 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut100 happy_x_2 of { happy_var_2 -> - case happyOut83 happy_x_3 of { happy_var_3 -> - case happyOut101 happy_x_5 of { happy_var_5 -> - ( do { checkEnabled ExistentialQuantification ; - ctxt <- checkContext happy_var_3 ; - return $ QualConDecl happy_var_1 happy_var_2 ctxt happy_var_5 })}}}} - ) (\r -> happyReturn (happyIn99 r)) - -happyReduce_227 = happySpecReduce_3 90# happyReduction_227 -happyReduction_227 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut100 happy_x_2 of { happy_var_2 -> - case happyOut101 happy_x_3 of { happy_var_3 -> - happyIn99 - (QualConDecl happy_var_1 happy_var_2 [] happy_var_3 - )}}} - -happyReduce_228 = happyMonadReduce 3# 91# happyReduction_228 -happyReduction_228 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut86 happy_x_2 of { happy_var_2 -> - ( checkEnabled ExistentialQuantification >> return happy_var_2)} - ) (\r -> happyReturn (happyIn100 r)) - -happyReduce_229 = happySpecReduce_0 91# happyReduction_229 -happyReduction_229 = happyIn100 - ([] - ) - -happyReduce_230 = happySpecReduce_1 92# happyReduction_230 -happyReduction_230 happy_x_1 - = case happyOut102 happy_x_1 of { happy_var_1 -> - happyIn101 - (ConDecl (fst happy_var_1) (snd happy_var_1) - )} - -happyReduce_231 = happySpecReduce_3 92# happyReduction_231 -happyReduction_231 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut105 happy_x_1 of { happy_var_1 -> - case happyOut198 happy_x_2 of { happy_var_2 -> - case happyOut105 happy_x_3 of { happy_var_3 -> - happyIn101 - (InfixConDecl happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_232 = happyMonadReduce 3# 92# happyReduction_232 -happyReduction_232 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut194 happy_x_1 of { happy_var_1 -> - ( do { c <- checkUnQual happy_var_1; return $ RecDecl c [] })} - ) (\r -> happyReturn (happyIn101 r)) - -happyReduce_233 = happyMonadReduce 4# 92# happyReduction_233 -happyReduction_233 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut194 happy_x_1 of { happy_var_1 -> - case happyOut106 happy_x_3 of { happy_var_3 -> - ( do { c <- checkUnQual happy_var_1; return $ RecDecl c (reverse happy_var_3) })}} - ) (\r -> happyReturn (happyIn101 r)) - -happyReduce_234 = happyMonadReduce 1# 93# happyReduction_234 -happyReduction_234 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut75 happy_x_1 of { happy_var_1 -> - ( do { (c,ts) <- splitTyConApp happy_var_1; - return (c,map UnBangedTy ts) })} - ) (\r -> happyReturn (happyIn102 r)) - -happyReduce_235 = happySpecReduce_1 93# happyReduction_235 -happyReduction_235 happy_x_1 - = case happyOut103 happy_x_1 of { happy_var_1 -> - happyIn102 - (happy_var_1 - )} - -happyReduce_236 = happyMonadReduce 3# 94# happyReduction_236 -happyReduction_236 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut75 happy_x_1 of { happy_var_1 -> - case happyOut76 happy_x_3 of { happy_var_3 -> - ( do { (c,ts) <- splitTyConApp happy_var_1; - return (c,map UnBangedTy ts++ - [BangedTy happy_var_3]) })}} - ) (\r -> happyReturn (happyIn103 r)) - -happyReduce_237 = happyMonadReduce 5# 94# happyReduction_237 -happyReduction_237 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut75 happy_x_1 of { happy_var_1 -> - case happyOut76 happy_x_5 of { happy_var_5 -> - ( do { (c,ts) <- splitTyConApp happy_var_1; - return (c,map UnBangedTy ts++ - [UnpackedTy happy_var_5]) })}} - ) (\r -> happyReturn (happyIn103 r)) - -happyReduce_238 = happySpecReduce_2 94# happyReduction_238 -happyReduction_238 happy_x_2 - happy_x_1 - = case happyOut103 happy_x_1 of { happy_var_1 -> - case happyOut104 happy_x_2 of { happy_var_2 -> - happyIn103 - ((fst happy_var_1, snd happy_var_1 ++ [happy_var_2] ) - )}} - -happyReduce_239 = happySpecReduce_1 95# happyReduction_239 -happyReduction_239 happy_x_1 - = case happyOut76 happy_x_1 of { happy_var_1 -> - happyIn104 - (UnBangedTy happy_var_1 - )} - -happyReduce_240 = happySpecReduce_2 95# happyReduction_240 -happyReduction_240 happy_x_2 - happy_x_1 - = case happyOut76 happy_x_2 of { happy_var_2 -> - happyIn104 - (BangedTy happy_var_2 - )} - -happyReduce_241 = happyReduce 4# 95# happyReduction_241 -happyReduction_241 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut76 happy_x_4 of { happy_var_4 -> - happyIn104 - (UnpackedTy happy_var_4 - ) `HappyStk` happyRest} - -happyReduce_242 = happySpecReduce_1 96# happyReduction_242 -happyReduction_242 happy_x_1 - = case happyOut74 happy_x_1 of { happy_var_1 -> - happyIn105 - (UnBangedTy happy_var_1 - )} - -happyReduce_243 = happySpecReduce_2 96# happyReduction_243 -happyReduction_243 happy_x_2 - happy_x_1 - = case happyOut76 happy_x_2 of { happy_var_2 -> - happyIn105 - (BangedTy happy_var_2 - )} - -happyReduce_244 = happyReduce 4# 96# happyReduction_244 -happyReduction_244 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut76 happy_x_4 of { happy_var_4 -> - happyIn105 - (UnpackedTy happy_var_4 - ) `HappyStk` happyRest} - -happyReduce_245 = happySpecReduce_3 97# happyReduction_245 -happyReduction_245 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut106 happy_x_1 of { happy_var_1 -> - case happyOut107 happy_x_3 of { happy_var_3 -> - happyIn106 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_246 = happySpecReduce_1 97# happyReduction_246 -happyReduction_246 happy_x_1 - = case happyOut107 happy_x_1 of { happy_var_1 -> - happyIn106 - ([happy_var_1] - )} - -happyReduce_247 = happySpecReduce_3 98# happyReduction_247 -happyReduction_247 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut56 happy_x_1 of { happy_var_1 -> - case happyOut108 happy_x_3 of { happy_var_3 -> - happyIn107 - ((reverse happy_var_1, happy_var_3) - )}} - -happyReduce_248 = happySpecReduce_1 99# happyReduction_248 -happyReduction_248 happy_x_1 - = case happyOut81 happy_x_1 of { happy_var_1 -> - happyIn108 - (UnBangedTy happy_var_1 - )} - -happyReduce_249 = happySpecReduce_2 99# happyReduction_249 -happyReduction_249 happy_x_2 - happy_x_1 - = case happyOut76 happy_x_2 of { happy_var_2 -> - happyIn108 - (BangedTy happy_var_2 - )} - -happyReduce_250 = happyReduce 4# 99# happyReduction_250 -happyReduction_250 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut76 happy_x_4 of { happy_var_4 -> - happyIn108 - (UnpackedTy happy_var_4 - ) `HappyStk` happyRest} - -happyReduce_251 = happySpecReduce_0 100# happyReduction_251 -happyReduction_251 = happyIn109 - ([] - ) - -happyReduce_252 = happySpecReduce_2 100# happyReduction_252 -happyReduction_252 happy_x_2 - happy_x_1 - = case happyOut111 happy_x_2 of { happy_var_2 -> - happyIn109 - ([(happy_var_2, [])] - )} - -happyReduce_253 = happySpecReduce_3 100# happyReduction_253 -happyReduction_253 happy_x_3 - happy_x_2 - happy_x_1 - = happyIn109 - ([] - ) - -happyReduce_254 = happyReduce 4# 100# happyReduction_254 -happyReduction_254 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut110 happy_x_3 of { happy_var_3 -> - happyIn109 - (reverse happy_var_3 - ) `HappyStk` happyRest} - -happyReduce_255 = happyMonadReduce 1# 101# happyReduction_255 -happyReduction_255 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut85 happy_x_1 of { happy_var_1 -> - ( checkDeriving happy_var_1)} - ) (\r -> happyReturn (happyIn110 r)) - -happyReduce_256 = happySpecReduce_1 102# happyReduction_256 -happyReduction_256 happy_x_1 - = case happyOut208 happy_x_1 of { happy_var_1 -> - happyIn111 - (happy_var_1 - )} - -happyReduce_257 = happyMonadReduce 1# 103# happyReduction_257 -happyReduction_257 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut113 happy_x_1 of { happy_var_1 -> - ( checkEnabled KindSignatures >> return happy_var_1)} - ) (\r -> happyReturn (happyIn112 r)) - -happyReduce_258 = happySpecReduce_1 104# happyReduction_258 -happyReduction_258 happy_x_1 - = case happyOut114 happy_x_1 of { happy_var_1 -> - happyIn113 - (happy_var_1 - )} - -happyReduce_259 = happySpecReduce_3 104# happyReduction_259 -happyReduction_259 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut114 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_3 of { happy_var_3 -> - happyIn113 - (KindFn happy_var_1 happy_var_3 - )}} - -happyReduce_260 = happySpecReduce_1 105# happyReduction_260 -happyReduction_260 happy_x_1 - = happyIn114 - (KindStar - ) - -happyReduce_261 = happySpecReduce_1 105# happyReduction_261 -happyReduction_261 happy_x_1 - = happyIn114 - (KindBang - ) - -happyReduce_262 = happySpecReduce_3 105# happyReduction_262 -happyReduction_262 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut113 happy_x_2 of { happy_var_2 -> - happyIn114 - (happy_var_2 - )} - -happyReduce_263 = happySpecReduce_0 106# happyReduction_263 -happyReduction_263 = happyIn115 - (Nothing - ) - -happyReduce_264 = happySpecReduce_2 106# happyReduction_264 -happyReduction_264 happy_x_2 - happy_x_1 - = case happyOut112 happy_x_2 of { happy_var_2 -> - happyIn115 - (Just happy_var_2 - )} - -happyReduce_265 = happyMonadReduce 2# 107# happyReduction_265 -happyReduction_265 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut117 happy_x_2 of { happy_var_2 -> - ( checkClassBody happy_var_2)} - ) (\r -> happyReturn (happyIn116 r)) - -happyReduce_266 = happySpecReduce_0 107# happyReduction_266 -happyReduction_266 = happyIn116 - ([] - ) - -happyReduce_267 = happySpecReduce_3 108# happyReduction_267 -happyReduction_267 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut118 happy_x_2 of { happy_var_2 -> - happyIn117 - (happy_var_2 - )} - -happyReduce_268 = happySpecReduce_3 108# happyReduction_268 -happyReduction_268 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut118 happy_x_2 of { happy_var_2 -> - happyIn117 - (happy_var_2 - )} - -happyReduce_269 = happyMonadReduce 3# 109# happyReduction_269 -happyReduction_269 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut119 happy_x_2 of { happy_var_2 -> - ( checkRevClsDecls happy_var_2)} - ) (\r -> happyReturn (happyIn118 r)) - -happyReduce_270 = happySpecReduce_1 109# happyReduction_270 -happyReduction_270 happy_x_1 - = happyIn118 - ([] - ) - -happyReduce_271 = happySpecReduce_3 110# happyReduction_271 -happyReduction_271 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut119 happy_x_1 of { happy_var_1 -> - case happyOut120 happy_x_3 of { happy_var_3 -> - happyIn119 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_272 = happySpecReduce_1 110# happyReduction_272 -happyReduction_272 happy_x_1 - = case happyOut120 happy_x_1 of { happy_var_1 -> - happyIn119 - ([happy_var_1] - )} - -happyReduce_273 = happySpecReduce_1 111# happyReduction_273 -happyReduction_273 happy_x_1 - = case happyOut50 happy_x_1 of { happy_var_1 -> - happyIn120 - (ClsDecl happy_var_1 - )} - -happyReduce_274 = happyMonadReduce 1# 111# happyReduction_274 -happyReduction_274 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut121 happy_x_1 of { happy_var_1 -> - ( checkEnabled TypeFamilies >> return happy_var_1)} - ) (\r -> happyReturn (happyIn120 r)) - -happyReduce_275 = happyMonadReduce 4# 112# happyReduction_275 -happyReduction_275 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut73 happy_x_3 of { happy_var_3 -> - case happyOut115 happy_x_4 of { happy_var_4 -> - ( do { (c,ts) <- checkSimpleType happy_var_3; - return (ClsTyFam happy_var_1 c ts happy_var_4) })}}} - ) (\r -> happyReturn (happyIn121 r)) - -happyReduce_276 = happyReduce 5# 112# happyReduction_276 -happyReduction_276 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut70 happy_x_3 of { happy_var_3 -> - case happyOut81 happy_x_5 of { happy_var_5 -> - happyIn121 - (ClsTyDef happy_var_1 happy_var_3 happy_var_5 - ) `HappyStk` happyRest}}} - -happyReduce_277 = happyMonadReduce 4# 112# happyReduction_277 -happyReduction_277 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_3 of { happy_var_3 -> - case happyOut115 happy_x_4 of { happy_var_4 -> - ( do { (cs,c,t) <- checkDataHeader happy_var_3; - return (ClsDataFam happy_var_1 cs c t happy_var_4) })}}} - ) (\r -> happyReturn (happyIn121 r)) - -happyReduce_278 = happyMonadReduce 4# 113# happyReduction_278 -happyReduction_278 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut123 happy_x_3 of { happy_var_3 -> - ( checkInstBody happy_var_3)} - ) (\r -> happyReturn (happyIn122 r)) - -happyReduce_279 = happyMonadReduce 4# 113# happyReduction_279 -happyReduction_279 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut123 happy_x_3 of { happy_var_3 -> - ( checkInstBody happy_var_3)} - ) (\r -> happyReturn (happyIn122 r)) - -happyReduce_280 = happySpecReduce_0 113# happyReduction_280 -happyReduction_280 = happyIn122 - ([] - ) - -happyReduce_281 = happyMonadReduce 3# 114# happyReduction_281 -happyReduction_281 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut124 happy_x_2 of { happy_var_2 -> - ( checkRevInstDecls happy_var_2)} - ) (\r -> happyReturn (happyIn123 r)) - -happyReduce_282 = happySpecReduce_1 114# happyReduction_282 -happyReduction_282 happy_x_1 - = happyIn123 - ([] - ) - -happyReduce_283 = happySpecReduce_3 115# happyReduction_283 -happyReduction_283 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut124 happy_x_1 of { happy_var_1 -> - case happyOut125 happy_x_3 of { happy_var_3 -> - happyIn124 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_284 = happySpecReduce_1 115# happyReduction_284 -happyReduction_284 happy_x_1 - = case happyOut125 happy_x_1 of { happy_var_1 -> - happyIn124 - ([happy_var_1] - )} - -happyReduce_285 = happySpecReduce_1 116# happyReduction_285 -happyReduction_285 happy_x_1 - = case happyOut128 happy_x_1 of { happy_var_1 -> - happyIn125 - (InsDecl happy_var_1 - )} - -happyReduce_286 = happyMonadReduce 1# 116# happyReduction_286 -happyReduction_286 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut127 happy_x_1 of { happy_var_1 -> - ( checkEnabled TypeFamilies >> return happy_var_1)} - ) (\r -> happyReturn (happyIn125 r)) - -happyReduce_287 = happySpecReduce_1 116# happyReduction_287 -happyReduction_287 happy_x_1 - = case happyOut126 happy_x_1 of { happy_var_1 -> - happyIn125 - (happy_var_1 - )} - -happyReduce_288 = happyReduce 5# 117# happyReduction_288 -happyReduction_288 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (INLINE happy_var_2) -> - case happyOut62 happy_x_3 of { happy_var_3 -> - case happyOut191 happy_x_4 of { happy_var_4 -> - happyIn126 - (InsInline happy_var_1 happy_var_2 happy_var_3 happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_289 = happyMonadReduce 5# 118# happyReduction_289 -happyReduction_289 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut70 happy_x_3 of { happy_var_3 -> - case happyOutTok happy_x_4 of { happy_var_4 -> - case happyOut81 happy_x_5 of { happy_var_5 -> - ( do { -- no checkSimpleType happy_var_4 since dtype may contain type patterns - return (InsType happy_var_1 happy_var_3 happy_var_5) })}}}} - ) (\r -> happyReturn (happyIn127 r)) - -happyReduce_290 = happyMonadReduce 5# 118# happyReduction_290 -happyReduction_290 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut46 happy_x_2 of { happy_var_2 -> - case happyOut81 happy_x_3 of { happy_var_3 -> - case happyOut97 happy_x_4 of { happy_var_4 -> - case happyOut109 happy_x_5 of { happy_var_5 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; - checkDataOrNew happy_var_2 happy_var_4; - return (InsData happy_var_1 happy_var_2 happy_var_3 (reverse happy_var_4) happy_var_5) })}}}}} - ) (\r -> happyReturn (happyIn127 r)) - -happyReduce_291 = happyMonadReduce 7# 118# happyReduction_291 -happyReduction_291 (happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut46 happy_x_2 of { happy_var_2 -> - case happyOut81 happy_x_3 of { happy_var_3 -> - case happyOut115 happy_x_4 of { happy_var_4 -> - case happyOut92 happy_x_6 of { happy_var_6 -> - case happyOut109 happy_x_7 of { happy_var_7 -> - ( do { -- (cs,c,t) <- checkDataHeader happy_var_4; - checkDataOrNew happy_var_2 happy_var_6; - return (InsGData happy_var_1 happy_var_2 happy_var_3 happy_var_4 (reverse happy_var_6) happy_var_7) })}}}}}} - ) (\r -> happyReturn (happyIn127 r)) - -happyReduce_292 = happyMonadReduce 5# 119# happyReduction_292 -happyReduction_292 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut138 happy_x_2 of { happy_var_2 -> - case happyOut130 happy_x_3 of { happy_var_3 -> - case happyOut131 happy_x_4 of { happy_var_4 -> - case happyOut129 happy_x_5 of { happy_var_5 -> - ( checkValDef happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5)}}}}} - ) (\r -> happyReturn (happyIn128 r)) - -happyReduce_293 = happyMonadReduce 5# 119# happyReduction_293 -happyReduction_293 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut145 happy_x_3 of { happy_var_3 -> - case happyOut131 happy_x_4 of { happy_var_4 -> - case happyOut129 happy_x_5 of { happy_var_5 -> - ( do { checkEnabled BangPatterns ; - p <- checkPattern happy_var_3; - return $ PatBind happy_var_1 p Nothing happy_var_4 happy_var_5 })}}}} - ) (\r -> happyReturn (happyIn128 r)) - -happyReduce_294 = happySpecReduce_2 120# happyReduction_294 -happyReduction_294 happy_x_2 - happy_x_1 - = case happyOut55 happy_x_2 of { happy_var_2 -> - happyIn129 - (happy_var_2 - )} - -happyReduce_295 = happySpecReduce_0 120# happyReduction_295 -happyReduction_295 = happyIn129 - (BDecls [] - ) - -happyReduce_296 = happyMonadReduce 2# 121# happyReduction_296 -happyReduction_296 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut81 happy_x_2 of { happy_var_2 -> - ( checkEnabled ScopedTypeVariables >> return (Just happy_var_2))} - ) (\r -> happyReturn (happyIn130 r)) - -happyReduce_297 = happySpecReduce_0 121# happyReduction_297 -happyReduction_297 = happyIn130 - (Nothing - ) - -happyReduce_298 = happySpecReduce_2 122# happyReduction_298 -happyReduction_298 happy_x_2 - happy_x_1 - = case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn131 - (UnGuardedRhs happy_var_2 - )} - -happyReduce_299 = happySpecReduce_1 122# happyReduction_299 -happyReduction_299 happy_x_1 - = case happyOut132 happy_x_1 of { happy_var_1 -> - happyIn131 - (GuardedRhss (reverse happy_var_1) - )} - -happyReduce_300 = happySpecReduce_2 123# happyReduction_300 -happyReduction_300 happy_x_2 - happy_x_1 - = case happyOut132 happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - happyIn132 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_301 = happySpecReduce_1 123# happyReduction_301 -happyReduction_301 happy_x_1 - = case happyOut133 happy_x_1 of { happy_var_1 -> - happyIn132 - ([happy_var_1] - )} - -happyReduce_302 = happyMonadReduce 5# 124# happyReduction_302 -happyReduction_302 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut169 happy_x_3 of { happy_var_3 -> - case happyOut134 happy_x_5 of { happy_var_5 -> - ( checkPatternGuards happy_var_3 >> return (GuardedRhs happy_var_1 (reverse happy_var_3) happy_var_5))}}} - ) (\r -> happyReturn (happyIn133 r)) - -happyReduce_303 = happyMonadReduce 1# 125# happyReduction_303 -happyReduction_303 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut135 happy_x_1 of { happy_var_1 -> - ( checkExpr happy_var_1)} - ) (\r -> happyReturn (happyIn134 r)) - -happyReduce_304 = happyReduce 4# 126# happyReduction_304 -happyReduction_304 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut138 happy_x_1 of { happy_var_1 -> - case happyOut218 happy_x_3 of { happy_var_3 -> - case happyOut81 happy_x_4 of { happy_var_4 -> - happyIn135 - (ExpTypeSig happy_var_3 happy_var_1 happy_var_4 - ) `HappyStk` happyRest}}} - -happyReduce_305 = happySpecReduce_1 126# happyReduction_305 -happyReduction_305 happy_x_1 - = case happyOut136 happy_x_1 of { happy_var_1 -> - happyIn135 - (happy_var_1 - )} - -happyReduce_306 = happySpecReduce_2 126# happyReduction_306 -happyReduction_306 happy_x_2 - happy_x_1 - = case happyOut138 happy_x_1 of { happy_var_1 -> - case happyOut201 happy_x_2 of { happy_var_2 -> - happyIn135 - (PostOp happy_var_1 happy_var_2 - )}} - -happyReduce_307 = happySpecReduce_3 126# happyReduction_307 -happyReduction_307 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut138 happy_x_1 of { happy_var_1 -> - case happyOut135 happy_x_3 of { happy_var_3 -> - happyIn135 - (LeftArrApp happy_var_1 happy_var_3 - )}} - -happyReduce_308 = happySpecReduce_3 126# happyReduction_308 -happyReduction_308 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut138 happy_x_1 of { happy_var_1 -> - case happyOut135 happy_x_3 of { happy_var_3 -> - happyIn135 - (RightArrApp happy_var_1 happy_var_3 - )}} - -happyReduce_309 = happySpecReduce_3 126# happyReduction_309 -happyReduction_309 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut138 happy_x_1 of { happy_var_1 -> - case happyOut135 happy_x_3 of { happy_var_3 -> - happyIn135 - (LeftArrHighApp happy_var_1 happy_var_3 - )}} - -happyReduce_310 = happySpecReduce_3 126# happyReduction_310 -happyReduction_310 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut138 happy_x_1 of { happy_var_1 -> - case happyOut135 happy_x_3 of { happy_var_3 -> - happyIn135 - (RightArrHighApp happy_var_1 happy_var_3 - )}} - -happyReduce_311 = happySpecReduce_1 127# happyReduction_311 -happyReduction_311 happy_x_1 - = case happyOut137 happy_x_1 of { happy_var_1 -> - happyIn136 - (happy_var_1 - )} - -happyReduce_312 = happySpecReduce_1 127# happyReduction_312 -happyReduction_312 happy_x_1 - = case happyOut138 happy_x_1 of { happy_var_1 -> - happyIn136 - (happy_var_1 - )} - -happyReduce_313 = happySpecReduce_3 128# happyReduction_313 -happyReduction_313 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut138 happy_x_1 of { happy_var_1 -> - case happyOut201 happy_x_2 of { happy_var_2 -> - case happyOut139 happy_x_3 of { happy_var_3 -> - happyIn137 - (InfixApp happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_314 = happySpecReduce_1 128# happyReduction_314 -happyReduction_314 happy_x_1 - = case happyOut139 happy_x_1 of { happy_var_1 -> - happyIn137 - (happy_var_1 - )} - -happyReduce_315 = happySpecReduce_3 129# happyReduction_315 -happyReduction_315 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut138 happy_x_1 of { happy_var_1 -> - case happyOut201 happy_x_2 of { happy_var_2 -> - case happyOut140 happy_x_3 of { happy_var_3 -> - happyIn138 - (InfixApp happy_var_1 happy_var_2 happy_var_3 - )}}} - -happyReduce_316 = happySpecReduce_1 129# happyReduction_316 -happyReduction_316 happy_x_1 - = case happyOut162 happy_x_1 of { happy_var_1 -> - happyIn138 - (happy_var_1 - )} - -happyReduce_317 = happySpecReduce_1 129# happyReduction_317 -happyReduction_317 happy_x_1 - = case happyOut140 happy_x_1 of { happy_var_1 -> - happyIn138 - (happy_var_1 - )} - -happyReduce_318 = happyReduce 5# 130# happyReduction_318 -happyReduction_318 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_2 of { happy_var_2 -> - case happyOut143 happy_x_3 of { happy_var_3 -> - case happyOut135 happy_x_5 of { happy_var_5 -> - happyIn139 - (Lambda happy_var_2 (reverse happy_var_3) happy_var_5 - ) `HappyStk` happyRest}}} - -happyReduce_319 = happyReduce 4# 130# happyReduction_319 -happyReduction_319 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut55 happy_x_2 of { happy_var_2 -> - case happyOut135 happy_x_4 of { happy_var_4 -> - happyIn139 - (Let happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_320 = happyReduce 6# 130# happyReduction_320 -happyReduction_320 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut135 happy_x_2 of { happy_var_2 -> - case happyOut135 happy_x_4 of { happy_var_4 -> - case happyOut135 happy_x_6 of { happy_var_6 -> - happyIn139 - (If happy_var_2 happy_var_4 happy_var_6 - ) `HappyStk` happyRest}}} - -happyReduce_321 = happyReduce 4# 130# happyReduction_321 -happyReduction_321 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut144 happy_x_2 of { happy_var_2 -> - case happyOut135 happy_x_4 of { happy_var_4 -> - happyIn139 - (Proc happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_322 = happySpecReduce_1 130# happyReduction_322 -happyReduction_322 happy_x_1 - = case happyOut141 happy_x_1 of { happy_var_1 -> - happyIn139 - (happy_var_1 - )} - -happyReduce_323 = happyReduce 4# 131# happyReduction_323 -happyReduction_323 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut135 happy_x_2 of { happy_var_2 -> - case happyOut171 happy_x_4 of { happy_var_4 -> - happyIn140 - (Case happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_324 = happySpecReduce_2 131# happyReduction_324 -happyReduction_324 happy_x_2 - happy_x_1 - = case happyOut142 happy_x_2 of { happy_var_2 -> - happyIn140 - (NegApp happy_var_2 - )} - -happyReduce_325 = happySpecReduce_2 131# happyReduction_325 -happyReduction_325 happy_x_2 - happy_x_1 - = case happyOut179 happy_x_2 of { happy_var_2 -> - happyIn140 - (Do happy_var_2 - )} - -happyReduce_326 = happySpecReduce_2 131# happyReduction_326 -happyReduction_326 happy_x_2 - happy_x_1 - = case happyOut179 happy_x_2 of { happy_var_2 -> - happyIn140 - (MDo happy_var_2 - )} - -happyReduce_327 = happySpecReduce_1 131# happyReduction_327 -happyReduction_327 happy_x_1 - = case happyOut142 happy_x_1 of { happy_var_1 -> - happyIn140 - (happy_var_1 - )} - -happyReduce_328 = happyReduce 4# 132# happyReduction_328 -happyReduction_328 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_2 of { (StringTok happy_var_2) -> - case happyOut135 happy_x_4 of { happy_var_4 -> - happyIn141 - (CorePragma happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_329 = happyReduce 4# 132# happyReduction_329 -happyReduction_329 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_2 of { (StringTok happy_var_2) -> - case happyOut135 happy_x_4 of { happy_var_4 -> - happyIn141 - (SCCPragma happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_330 = happyReduce 11# 132# happyReduction_330 -happyReduction_330 (happy_x_11 `HappyStk` - happy_x_10 `HappyStk` - happy_x_9 `HappyStk` - happy_x_8 `HappyStk` - happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOutTok happy_x_2 of { (StringTok happy_var_2) -> - case happyOutTok happy_x_3 of { (IntTok happy_var_3) -> - case happyOutTok happy_x_5 of { (IntTok happy_var_5) -> - case happyOutTok happy_x_7 of { (IntTok happy_var_7) -> - case happyOutTok happy_x_9 of { (IntTok happy_var_9) -> - case happyOut135 happy_x_11 of { happy_var_11 -> - happyIn141 - (GenPragma happy_var_2 (fromInteger happy_var_3, fromInteger happy_var_5) - (fromInteger happy_var_7, fromInteger happy_var_9) happy_var_11 - ) `HappyStk` happyRest}}}}}} - -happyReduce_331 = happySpecReduce_2 133# happyReduction_331 -happyReduction_331 happy_x_2 - happy_x_1 - = case happyOut142 happy_x_1 of { happy_var_1 -> - case happyOut145 happy_x_2 of { happy_var_2 -> - happyIn142 - (App happy_var_1 happy_var_2 - )}} - -happyReduce_332 = happySpecReduce_1 133# happyReduction_332 -happyReduction_332 happy_x_1 - = case happyOut145 happy_x_1 of { happy_var_1 -> - happyIn142 - (happy_var_1 - )} - -happyReduce_333 = happySpecReduce_2 134# happyReduction_333 -happyReduction_333 happy_x_2 - happy_x_1 - = case happyOut143 happy_x_1 of { happy_var_1 -> - case happyOut144 happy_x_2 of { happy_var_2 -> - happyIn143 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_334 = happySpecReduce_1 134# happyReduction_334 -happyReduction_334 happy_x_1 - = case happyOut144 happy_x_1 of { happy_var_1 -> - happyIn143 - ([happy_var_1] - )} - -happyReduce_335 = happyMonadReduce 1# 135# happyReduction_335 -happyReduction_335 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut145 happy_x_1 of { happy_var_1 -> - ( checkPattern happy_var_1)} - ) (\r -> happyReturn (happyIn144 r)) - -happyReduce_336 = happyMonadReduce 2# 135# happyReduction_336 -happyReduction_336 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut145 happy_x_2 of { happy_var_2 -> - ( checkPattern (BangPat happy_var_2))} - ) (\r -> happyReturn (happyIn144 r)) - -happyReduce_337 = happyMonadReduce 3# 136# happyReduction_337 -happyReduction_337 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut191 happy_x_1 of { happy_var_1 -> - case happyOut145 happy_x_3 of { happy_var_3 -> - ( do { n <- checkUnQual happy_var_1; - return (AsPat n happy_var_3) })}} - ) (\r -> happyReturn (happyIn145 r)) - -happyReduce_338 = happyMonadReduce 3# 136# happyReduction_338 -happyReduction_338 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut191 happy_x_1 of { happy_var_1 -> - case happyOut145 happy_x_3 of { happy_var_3 -> - ( do { n <- checkUnQual happy_var_1; - return (CAsRP n happy_var_3) })}} - ) (\r -> happyReturn (happyIn145 r)) - -happyReduce_339 = happySpecReduce_2 136# happyReduction_339 -happyReduction_339 happy_x_2 - happy_x_1 - = case happyOut145 happy_x_2 of { happy_var_2 -> - happyIn145 - (IrrPat happy_var_2 - )} - -happyReduce_340 = happySpecReduce_1 136# happyReduction_340 -happyReduction_340 happy_x_1 - = case happyOut146 happy_x_1 of { happy_var_1 -> - happyIn145 - (happy_var_1 - )} - -happyReduce_341 = happyMonadReduce 3# 137# happyReduction_341 -happyReduction_341 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut146 happy_x_1 of { happy_var_1 -> - ( mkRecConstrOrUpdate happy_var_1 [])} - ) (\r -> happyReturn (happyIn146 r)) - -happyReduce_342 = happyMonadReduce 4# 137# happyReduction_342 -happyReduction_342 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut146 happy_x_1 of { happy_var_1 -> - case happyOut183 happy_x_3 of { happy_var_3 -> - ( mkRecConstrOrUpdate happy_var_1 (reverse happy_var_3))}} - ) (\r -> happyReturn (happyIn146 r)) - -happyReduce_343 = happyReduce 4# 137# happyReduction_343 -happyReduction_343 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut191 happy_x_1 of { happy_var_1 -> - case happyOut72 happy_x_3 of { happy_var_3 -> - happyIn146 - (ExplTypeArg happy_var_1 happy_var_3 - ) `HappyStk` happyRest}} - -happyReduce_344 = happySpecReduce_1 137# happyReduction_344 -happyReduction_344 happy_x_1 - = case happyOut147 happy_x_1 of { happy_var_1 -> - happyIn146 - (happy_var_1 - )} - -happyReduce_345 = happySpecReduce_1 138# happyReduction_345 -happyReduction_345 happy_x_1 - = case happyOut192 happy_x_1 of { happy_var_1 -> - happyIn147 - (IPVar happy_var_1 - )} - -happyReduce_346 = happySpecReduce_1 138# happyReduction_346 -happyReduction_346 happy_x_1 - = case happyOut191 happy_x_1 of { happy_var_1 -> - happyIn147 - (Var happy_var_1 - )} - -happyReduce_347 = happySpecReduce_1 138# happyReduction_347 -happyReduction_347 happy_x_1 - = case happyOut188 happy_x_1 of { happy_var_1 -> - happyIn147 - (happy_var_1 - )} - -happyReduce_348 = happySpecReduce_1 138# happyReduction_348 -happyReduction_348 happy_x_1 - = case happyOut217 happy_x_1 of { happy_var_1 -> - happyIn147 - (Lit happy_var_1 - )} - -happyReduce_349 = happySpecReduce_3 138# happyReduction_349 -happyReduction_349 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut149 happy_x_2 of { happy_var_2 -> - happyIn147 - (Paren happy_var_2 - )} - -happyReduce_350 = happySpecReduce_3 138# happyReduction_350 -happyReduction_350 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut149 happy_x_2 of { happy_var_2 -> - case happyOut150 happy_x_3 of { happy_var_3 -> - happyIn147 - (TupleSection (Just happy_var_2 : happy_var_3) - )}} - -happyReduce_351 = happyReduce 4# 138# happyReduction_351 -happyReduction_351 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut148 happy_x_2 of { happy_var_2 -> - case happyOut149 happy_x_3 of { happy_var_3 -> - happyIn147 - (TupleSection $ replicate (happy_var_2 - 1) Nothing ++ [Just happy_var_3] - ) `HappyStk` happyRest}} - -happyReduce_352 = happyReduce 4# 138# happyReduction_352 -happyReduction_352 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut148 happy_x_2 of { happy_var_2 -> - case happyOut149 happy_x_3 of { happy_var_3 -> - case happyOut150 happy_x_4 of { happy_var_4 -> - happyIn147 - (TupleSection $ replicate (happy_var_2 - 1) Nothing ++ Just happy_var_3 : happy_var_4 - ) `HappyStk` happyRest}}} - -happyReduce_353 = happySpecReduce_3 138# happyReduction_353 -happyReduction_353 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut163 happy_x_2 of { happy_var_2 -> - happyIn147 - (happy_var_2 - )} - -happyReduce_354 = happySpecReduce_1 138# happyReduction_354 -happyReduction_354 happy_x_1 - = happyIn147 - (WildCard - ) - -happyReduce_355 = happyMonadReduce 3# 138# happyReduction_355 -happyReduction_355 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut152 happy_x_2 of { happy_var_2 -> - ( checkEnabled RegularPatterns >> return happy_var_2)} - ) (\r -> happyReturn (happyIn147 r)) - -happyReduce_356 = happySpecReduce_3 138# happyReduction_356 -happyReduction_356 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut151 happy_x_2 of { happy_var_2 -> - happyIn147 - (SeqRP $ reverse happy_var_2 - )} - -happyReduce_357 = happyReduce 5# 138# happyReduction_357 -happyReduction_357 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut135 happy_x_2 of { happy_var_2 -> - case happyOut169 happy_x_4 of { happy_var_4 -> - happyIn147 - (GuardRP happy_var_2 $ reverse happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_358 = happySpecReduce_1 138# happyReduction_358 -happyReduction_358 happy_x_1 - = case happyOut153 happy_x_1 of { happy_var_1 -> - happyIn147 - (happy_var_1 - )} - -happyReduce_359 = happySpecReduce_1 138# happyReduction_359 -happyReduction_359 happy_x_1 - = case happyOutTok happy_x_1 of { (THIdEscape happy_var_1) -> - happyIn147 - (SpliceExp $ IdSplice happy_var_1 - )} - -happyReduce_360 = happySpecReduce_3 138# happyReduction_360 -happyReduction_360 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn147 - (SpliceExp $ ParenSplice happy_var_2 - )} - -happyReduce_361 = happySpecReduce_3 138# happyReduction_361 -happyReduction_361 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn147 - (BracketExp $ ExpBracket happy_var_2 - )} - -happyReduce_362 = happyMonadReduce 3# 138# happyReduction_362 -happyReduction_362 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut136 happy_x_2 of { happy_var_2 -> - ( do { p <- checkPattern happy_var_2; - return $ BracketExp $ PatBracket p })} - ) (\r -> happyReturn (happyIn147 r)) - -happyReduce_363 = happySpecReduce_3 138# happyReduction_363 -happyReduction_363 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut81 happy_x_2 of { happy_var_2 -> - happyIn147 - (BracketExp $ TypeBracket happy_var_2 - )} - -happyReduce_364 = happyReduce 5# 138# happyReduction_364 -happyReduction_364 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut43 happy_x_3 of { happy_var_3 -> - happyIn147 - (BracketExp $ DeclBracket happy_var_3 - ) `HappyStk` happyRest} - -happyReduce_365 = happySpecReduce_2 138# happyReduction_365 -happyReduction_365 happy_x_2 - happy_x_1 - = case happyOut191 happy_x_2 of { happy_var_2 -> - happyIn147 - (VarQuote happy_var_2 - )} - -happyReduce_366 = happySpecReduce_2 138# happyReduction_366 -happyReduction_366 happy_x_2 - happy_x_1 - = case happyOut194 happy_x_2 of { happy_var_2 -> - happyIn147 - (VarQuote happy_var_2 - )} - -happyReduce_367 = happySpecReduce_2 138# happyReduction_367 -happyReduction_367 happy_x_2 - happy_x_1 - = case happyOut224 happy_x_2 of { happy_var_2 -> - happyIn147 - (TypQuote (UnQual happy_var_2) - )} - -happyReduce_368 = happySpecReduce_2 138# happyReduction_368 -happyReduction_368 happy_x_2 - happy_x_1 - = case happyOut78 happy_x_2 of { happy_var_2 -> - happyIn147 - (TypQuote happy_var_2 - )} - -happyReduce_369 = happySpecReduce_1 138# happyReduction_369 -happyReduction_369 happy_x_1 - = case happyOutTok happy_x_1 of { (THQuasiQuote happy_var_1) -> - happyIn147 - (let (n,q) = happy_var_1 in QuasiQuote n q - )} - -happyReduce_370 = happySpecReduce_2 139# happyReduction_370 -happyReduction_370 happy_x_2 - happy_x_1 - = case happyOut148 happy_x_1 of { happy_var_1 -> - happyIn148 - (happy_var_1 + 1 - )} - -happyReduce_371 = happySpecReduce_1 139# happyReduction_371 -happyReduction_371 happy_x_1 - = happyIn148 - (1 - ) - -happyReduce_372 = happySpecReduce_1 140# happyReduction_372 -happyReduction_372 happy_x_1 - = case happyOut135 happy_x_1 of { happy_var_1 -> - happyIn149 - (happy_var_1 - )} - -happyReduce_373 = happySpecReduce_2 140# happyReduction_373 -happyReduction_373 happy_x_2 - happy_x_1 - = case happyOut202 happy_x_1 of { happy_var_1 -> - case happyOut136 happy_x_2 of { happy_var_2 -> - happyIn149 - (PreOp happy_var_1 happy_var_2 - )}} - -happyReduce_374 = happyMonadReduce 3# 140# happyReduction_374 -happyReduction_374 (happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut135 happy_x_1 of { happy_var_1 -> - case happyOut135 happy_x_3 of { happy_var_3 -> - ( checkEnabled ViewPatterns >> return (ViewPat happy_var_1 happy_var_3))}} - ) (\r -> happyReturn (happyIn149 r)) - -happyReduce_375 = happySpecReduce_3 141# happyReduction_375 -happyReduction_375 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut148 happy_x_1 of { happy_var_1 -> - case happyOut149 happy_x_2 of { happy_var_2 -> - case happyOut150 happy_x_3 of { happy_var_3 -> - happyIn150 - (replicate (happy_var_1 - 1) Nothing ++ Just happy_var_2 : happy_var_3 - )}}} - -happyReduce_376 = happySpecReduce_3 141# happyReduction_376 -happyReduction_376 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut148 happy_x_1 of { happy_var_1 -> - case happyOut149 happy_x_2 of { happy_var_2 -> - happyIn150 - (replicate (happy_var_1 - 1) Nothing ++ [Just happy_var_2] - )}} - -happyReduce_377 = happySpecReduce_2 141# happyReduction_377 -happyReduction_377 happy_x_2 - happy_x_1 - = case happyOut148 happy_x_1 of { happy_var_1 -> - happyIn150 - (replicate happy_var_1 Nothing - )} - -happyReduce_378 = happySpecReduce_3 142# happyReduction_378 -happyReduction_378 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut151 happy_x_1 of { happy_var_1 -> - case happyOut135 happy_x_3 of { happy_var_3 -> - happyIn151 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_379 = happySpecReduce_1 142# happyReduction_379 -happyReduction_379 happy_x_1 - = case happyOut135 happy_x_1 of { happy_var_1 -> - happyIn151 - ([happy_var_1] - )} - -happyReduce_380 = happySpecReduce_3 143# happyReduction_380 -happyReduction_380 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut135 happy_x_1 of { happy_var_1 -> - case happyOut152 happy_x_3 of { happy_var_3 -> - happyIn152 - (EitherRP happy_var_1 happy_var_3 - )}} - -happyReduce_381 = happySpecReduce_3 143# happyReduction_381 -happyReduction_381 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut135 happy_x_1 of { happy_var_1 -> - case happyOut135 happy_x_3 of { happy_var_3 -> - happyIn152 - (EitherRP happy_var_1 happy_var_3 - )}} - -happyReduce_382 = happyMonadReduce 10# 144# happyReduction_382 -happyReduction_382 (happy_x_10 `HappyStk` - happy_x_9 `HappyStk` - happy_x_8 `HappyStk` - happy_x_7 `HappyStk` - happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut156 happy_x_3 of { happy_var_3 -> - case happyOut159 happy_x_4 of { happy_var_4 -> - case happyOut161 happy_x_5 of { happy_var_5 -> - case happyOut154 happy_x_7 of { happy_var_7 -> - case happyOut156 happy_x_9 of { happy_var_9 -> - ( do { n <- checkEqNames happy_var_3 happy_var_9; - let { cn = reverse happy_var_7; - as = reverse happy_var_4; }; - return $ XTag happy_var_1 n as happy_var_5 cn })}}}}}} - ) (\r -> happyReturn (happyIn153 r)) - -happyReduce_383 = happyReduce 6# 144# happyReduction_383 -happyReduction_383 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut156 happy_x_3 of { happy_var_3 -> - case happyOut159 happy_x_4 of { happy_var_4 -> - case happyOut161 happy_x_5 of { happy_var_5 -> - happyIn153 - (XETag happy_var_1 happy_var_3 (reverse happy_var_4) happy_var_5 - ) `HappyStk` happyRest}}}} - -happyReduce_384 = happySpecReduce_3 144# happyReduction_384 -happyReduction_384 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut135 happy_x_2 of { happy_var_2 -> - happyIn153 - (XExpTag happy_var_2 - )} - -happyReduce_385 = happySpecReduce_2 145# happyReduction_385 -happyReduction_385 happy_x_2 - happy_x_1 - = case happyOut154 happy_x_1 of { happy_var_1 -> - case happyOut155 happy_x_2 of { happy_var_2 -> - happyIn154 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_386 = happySpecReduce_0 145# happyReduction_386 -happyReduction_386 = happyIn154 - ([] - ) - -happyReduce_387 = happySpecReduce_1 146# happyReduction_387 -happyReduction_387 happy_x_1 - = case happyOutTok happy_x_1 of { (XPCDATA happy_var_1) -> - happyIn155 - (XPcdata happy_var_1 - )} - -happyReduce_388 = happySpecReduce_3 146# happyReduction_388 -happyReduction_388 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut151 happy_x_2 of { happy_var_2 -> - happyIn155 - (XRPats $ reverse happy_var_2 - )} - -happyReduce_389 = happySpecReduce_1 146# happyReduction_389 -happyReduction_389 happy_x_1 - = case happyOut153 happy_x_1 of { happy_var_1 -> - happyIn155 - (happy_var_1 - )} - -happyReduce_390 = happySpecReduce_3 147# happyReduction_390 -happyReduction_390 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut157 happy_x_1 of { happy_var_1 -> - case happyOut157 happy_x_3 of { happy_var_3 -> - happyIn156 - (XDomName happy_var_1 happy_var_3 - )}} - -happyReduce_391 = happySpecReduce_1 147# happyReduction_391 -happyReduction_391 happy_x_1 - = case happyOut157 happy_x_1 of { happy_var_1 -> - happyIn156 - (XName happy_var_1 - )} - -happyReduce_392 = happySpecReduce_1 148# happyReduction_392 -happyReduction_392 happy_x_1 - = case happyOutTok happy_x_1 of { (VarId happy_var_1) -> - happyIn157 - (happy_var_1 - )} - -happyReduce_393 = happySpecReduce_1 148# happyReduction_393 -happyReduction_393 happy_x_1 - = case happyOutTok happy_x_1 of { (ConId happy_var_1) -> - happyIn157 - (happy_var_1 - )} - -happyReduce_394 = happySpecReduce_1 148# happyReduction_394 -happyReduction_394 happy_x_1 - = case happyOutTok happy_x_1 of { (DVarId happy_var_1) -> - happyIn157 - (mkDVar happy_var_1 - )} - -happyReduce_395 = happySpecReduce_1 148# happyReduction_395 -happyReduction_395 happy_x_1 - = case happyOut158 happy_x_1 of { happy_var_1 -> - happyIn157 - (happy_var_1 - )} - -happyReduce_396 = happySpecReduce_1 149# happyReduction_396 -happyReduction_396 happy_x_1 - = happyIn158 - ("type" - ) - -happyReduce_397 = happySpecReduce_1 149# happyReduction_397 -happyReduction_397 happy_x_1 - = happyIn158 - ("class" - ) - -happyReduce_398 = happySpecReduce_1 149# happyReduction_398 -happyReduction_398 happy_x_1 - = happyIn158 - ("data" - ) - -happyReduce_399 = happySpecReduce_1 149# happyReduction_399 -happyReduction_399 happy_x_1 - = happyIn158 - ("foreign" - ) - -happyReduce_400 = happySpecReduce_1 149# happyReduction_400 -happyReduction_400 happy_x_1 - = happyIn158 - ("export" - ) - -happyReduce_401 = happySpecReduce_1 149# happyReduction_401 -happyReduction_401 happy_x_1 - = happyIn158 - ("safe" - ) - -happyReduce_402 = happySpecReduce_1 149# happyReduction_402 -happyReduction_402 happy_x_1 - = happyIn158 - ("unsafe" - ) - -happyReduce_403 = happySpecReduce_1 149# happyReduction_403 -happyReduction_403 happy_x_1 - = happyIn158 - ("threadsafe" - ) - -happyReduce_404 = happySpecReduce_1 149# happyReduction_404 -happyReduction_404 happy_x_1 - = happyIn158 - ("stdcall" - ) - -happyReduce_405 = happySpecReduce_1 149# happyReduction_405 -happyReduction_405 happy_x_1 - = happyIn158 - ("ccall" - ) - -happyReduce_406 = happySpecReduce_1 149# happyReduction_406 -happyReduction_406 happy_x_1 - = happyIn158 - ("as" - ) - -happyReduce_407 = happySpecReduce_1 149# happyReduction_407 -happyReduction_407 happy_x_1 - = happyIn158 - ("by" - ) - -happyReduce_408 = happySpecReduce_1 149# happyReduction_408 -happyReduction_408 happy_x_1 - = happyIn158 - ("case" - ) - -happyReduce_409 = happySpecReduce_1 149# happyReduction_409 -happyReduction_409 happy_x_1 - = happyIn158 - ("default" - ) - -happyReduce_410 = happySpecReduce_1 149# happyReduction_410 -happyReduction_410 happy_x_1 - = happyIn158 - ("deriving" - ) - -happyReduce_411 = happySpecReduce_1 149# happyReduction_411 -happyReduction_411 happy_x_1 - = happyIn158 - ("do" - ) - -happyReduce_412 = happySpecReduce_1 149# happyReduction_412 -happyReduction_412 happy_x_1 - = happyIn158 - ("else" - ) - -happyReduce_413 = happySpecReduce_1 149# happyReduction_413 -happyReduction_413 happy_x_1 - = happyIn158 - ("family" - ) - -happyReduce_414 = happySpecReduce_1 149# happyReduction_414 -happyReduction_414 happy_x_1 - = happyIn158 - ("forall" - ) - -happyReduce_415 = happySpecReduce_1 149# happyReduction_415 -happyReduction_415 happy_x_1 - = happyIn158 - ("group" - ) - -happyReduce_416 = happySpecReduce_1 149# happyReduction_416 -happyReduction_416 happy_x_1 - = happyIn158 - ("hiding" - ) - -happyReduce_417 = happySpecReduce_1 149# happyReduction_417 -happyReduction_417 happy_x_1 - = happyIn158 - ("if" - ) - -happyReduce_418 = happySpecReduce_1 149# happyReduction_418 -happyReduction_418 happy_x_1 - = happyIn158 - ("import" - ) - -happyReduce_419 = happySpecReduce_1 149# happyReduction_419 -happyReduction_419 happy_x_1 - = happyIn158 - ("in" - ) - -happyReduce_420 = happySpecReduce_1 149# happyReduction_420 -happyReduction_420 happy_x_1 - = happyIn158 - ("infix" - ) - -happyReduce_421 = happySpecReduce_1 149# happyReduction_421 -happyReduction_421 happy_x_1 - = happyIn158 - ("infixl" - ) - -happyReduce_422 = happySpecReduce_1 149# happyReduction_422 -happyReduction_422 happy_x_1 - = happyIn158 - ("infixr" - ) - -happyReduce_423 = happySpecReduce_1 149# happyReduction_423 -happyReduction_423 happy_x_1 - = happyIn158 - ("instance" - ) - -happyReduce_424 = happySpecReduce_1 149# happyReduction_424 -happyReduction_424 happy_x_1 - = happyIn158 - ("let" - ) - -happyReduce_425 = happySpecReduce_1 149# happyReduction_425 -happyReduction_425 happy_x_1 - = happyIn158 - ("mdo" - ) - -happyReduce_426 = happySpecReduce_1 149# happyReduction_426 -happyReduction_426 happy_x_1 - = happyIn158 - ("module" - ) - -happyReduce_427 = happySpecReduce_1 149# happyReduction_427 -happyReduction_427 happy_x_1 - = happyIn158 - ("newtype" - ) - -happyReduce_428 = happySpecReduce_1 149# happyReduction_428 -happyReduction_428 happy_x_1 - = happyIn158 - ("of" - ) - -happyReduce_429 = happySpecReduce_1 149# happyReduction_429 -happyReduction_429 happy_x_1 - = happyIn158 - ("proc" - ) - -happyReduce_430 = happySpecReduce_1 149# happyReduction_430 -happyReduction_430 happy_x_1 - = happyIn158 - ("rec" - ) - -happyReduce_431 = happySpecReduce_1 149# happyReduction_431 -happyReduction_431 happy_x_1 - = happyIn158 - ("then" - ) - -happyReduce_432 = happySpecReduce_1 149# happyReduction_432 -happyReduction_432 happy_x_1 - = happyIn158 - ("using" - ) - -happyReduce_433 = happySpecReduce_1 149# happyReduction_433 -happyReduction_433 happy_x_1 - = happyIn158 - ("where" - ) - -happyReduce_434 = happySpecReduce_1 149# happyReduction_434 -happyReduction_434 happy_x_1 - = happyIn158 - ("qualified" - ) - -happyReduce_435 = happySpecReduce_2 150# happyReduction_435 -happyReduction_435 happy_x_2 - happy_x_1 - = case happyOut159 happy_x_1 of { happy_var_1 -> - case happyOut160 happy_x_2 of { happy_var_2 -> - happyIn159 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_436 = happySpecReduce_0 150# happyReduction_436 -happyReduction_436 = happyIn159 - ([] - ) - -happyReduce_437 = happySpecReduce_3 151# happyReduction_437 -happyReduction_437 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut156 happy_x_1 of { happy_var_1 -> - case happyOut145 happy_x_3 of { happy_var_3 -> - happyIn160 - (XAttr happy_var_1 happy_var_3 - )}} - -happyReduce_438 = happySpecReduce_1 152# happyReduction_438 -happyReduction_438 happy_x_1 - = case happyOut145 happy_x_1 of { happy_var_1 -> - happyIn161 - (Just happy_var_1 - )} - -happyReduce_439 = happySpecReduce_0 152# happyReduction_439 -happyReduction_439 = happyIn161 - (Nothing - ) - -happyReduce_440 = happySpecReduce_1 153# happyReduction_440 -happyReduction_440 happy_x_1 - = case happyOutTok happy_x_1 of { (DVarId happy_var_1) -> - happyIn162 - (mkDVarExpr happy_var_1 - )} - -happyReduce_441 = happySpecReduce_1 154# happyReduction_441 -happyReduction_441 happy_x_1 - = case happyOut149 happy_x_1 of { happy_var_1 -> - happyIn163 - (List [happy_var_1] - )} - -happyReduce_442 = happySpecReduce_1 154# happyReduction_442 -happyReduction_442 happy_x_1 - = case happyOut164 happy_x_1 of { happy_var_1 -> - happyIn163 - (List (reverse happy_var_1) - )} - -happyReduce_443 = happySpecReduce_2 154# happyReduction_443 -happyReduction_443 happy_x_2 - happy_x_1 - = case happyOut149 happy_x_1 of { happy_var_1 -> - happyIn163 - (EnumFrom happy_var_1 - )} - -happyReduce_444 = happyReduce 4# 154# happyReduction_444 -happyReduction_444 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut149 happy_x_1 of { happy_var_1 -> - case happyOut135 happy_x_3 of { happy_var_3 -> - happyIn163 - (EnumFromThen happy_var_1 happy_var_3 - ) `HappyStk` happyRest}} - -happyReduce_445 = happySpecReduce_3 154# happyReduction_445 -happyReduction_445 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut149 happy_x_1 of { happy_var_1 -> - case happyOut135 happy_x_3 of { happy_var_3 -> - happyIn163 - (EnumFromTo happy_var_1 happy_var_3 - )}} - -happyReduce_446 = happyReduce 5# 154# happyReduction_446 -happyReduction_446 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut149 happy_x_1 of { happy_var_1 -> - case happyOut135 happy_x_3 of { happy_var_3 -> - case happyOut135 happy_x_5 of { happy_var_5 -> - happyIn163 - (EnumFromThenTo happy_var_1 happy_var_3 happy_var_5 - ) `HappyStk` happyRest}}} - -happyReduce_447 = happySpecReduce_3 154# happyReduction_447 -happyReduction_447 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut149 happy_x_1 of { happy_var_1 -> - case happyOut165 happy_x_3 of { happy_var_3 -> - happyIn163 - (ParComp happy_var_1 (reverse happy_var_3) - )}} - -happyReduce_448 = happySpecReduce_3 155# happyReduction_448 -happyReduction_448 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut164 happy_x_1 of { happy_var_1 -> - case happyOut149 happy_x_3 of { happy_var_3 -> - happyIn164 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_449 = happySpecReduce_3 155# happyReduction_449 -happyReduction_449 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut149 happy_x_1 of { happy_var_1 -> - case happyOut149 happy_x_3 of { happy_var_3 -> - happyIn164 - ([happy_var_3,happy_var_1] - )}} - -happyReduce_450 = happySpecReduce_3 156# happyReduction_450 -happyReduction_450 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut165 happy_x_1 of { happy_var_1 -> - case happyOut166 happy_x_3 of { happy_var_3 -> - happyIn165 - (reverse happy_var_3 : happy_var_1 - )}} - -happyReduce_451 = happySpecReduce_1 156# happyReduction_451 -happyReduction_451 happy_x_1 - = case happyOut166 happy_x_1 of { happy_var_1 -> - happyIn165 - ([reverse happy_var_1] - )} - -happyReduce_452 = happySpecReduce_3 157# happyReduction_452 -happyReduction_452 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut166 happy_x_1 of { happy_var_1 -> - case happyOut167 happy_x_3 of { happy_var_3 -> - happyIn166 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_453 = happySpecReduce_1 157# happyReduction_453 -happyReduction_453 happy_x_1 - = case happyOut167 happy_x_1 of { happy_var_1 -> - happyIn166 - ([happy_var_1] - )} - -happyReduce_454 = happySpecReduce_1 158# happyReduction_454 -happyReduction_454 happy_x_1 - = case happyOut168 happy_x_1 of { happy_var_1 -> - happyIn167 - (happy_var_1 - )} - -happyReduce_455 = happySpecReduce_1 158# happyReduction_455 -happyReduction_455 happy_x_1 - = case happyOut170 happy_x_1 of { happy_var_1 -> - happyIn167 - (QualStmt happy_var_1 - )} - -happyReduce_456 = happySpecReduce_2 159# happyReduction_456 -happyReduction_456 happy_x_2 - happy_x_1 - = case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn168 - (ThenTrans happy_var_2 - )} - -happyReduce_457 = happyReduce 4# 159# happyReduction_457 -happyReduction_457 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut134 happy_x_2 of { happy_var_2 -> - case happyOut134 happy_x_4 of { happy_var_4 -> - happyIn168 - (ThenBy happy_var_2 happy_var_4 - ) `HappyStk` happyRest}} - -happyReduce_458 = happyReduce 4# 159# happyReduction_458 -happyReduction_458 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut134 happy_x_4 of { happy_var_4 -> - happyIn168 - (GroupBy happy_var_4 - ) `HappyStk` happyRest} - -happyReduce_459 = happyReduce 4# 159# happyReduction_459 -happyReduction_459 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut134 happy_x_4 of { happy_var_4 -> - happyIn168 - (GroupUsing happy_var_4 - ) `HappyStk` happyRest} - -happyReduce_460 = happyReduce 6# 159# happyReduction_460 -happyReduction_460 (happy_x_6 `HappyStk` - happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut134 happy_x_4 of { happy_var_4 -> - case happyOut134 happy_x_6 of { happy_var_6 -> - happyIn168 - (GroupByUsing happy_var_4 happy_var_6 - ) `HappyStk` happyRest}} - -happyReduce_461 = happySpecReduce_3 160# happyReduction_461 -happyReduction_461 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut169 happy_x_1 of { happy_var_1 -> - case happyOut170 happy_x_3 of { happy_var_3 -> - happyIn169 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_462 = happySpecReduce_1 160# happyReduction_462 -happyReduction_462 happy_x_1 - = case happyOut170 happy_x_1 of { happy_var_1 -> - happyIn169 - ([happy_var_1] - )} - -happyReduce_463 = happyReduce 4# 161# happyReduction_463 -happyReduction_463 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut178 happy_x_1 of { happy_var_1 -> - case happyOut218 happy_x_2 of { happy_var_2 -> - case happyOut134 happy_x_4 of { happy_var_4 -> - happyIn170 - (Generator happy_var_2 happy_var_1 happy_var_4 - ) `HappyStk` happyRest}}} - -happyReduce_464 = happySpecReduce_1 161# happyReduction_464 -happyReduction_464 happy_x_1 - = case happyOut134 happy_x_1 of { happy_var_1 -> - happyIn170 - (Qualifier happy_var_1 - )} - -happyReduce_465 = happySpecReduce_2 161# happyReduction_465 -happyReduction_465 happy_x_2 - happy_x_1 - = case happyOut55 happy_x_2 of { happy_var_2 -> - happyIn170 - (LetStmt happy_var_2 - )} - -happyReduce_466 = happySpecReduce_3 162# happyReduction_466 -happyReduction_466 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut172 happy_x_2 of { happy_var_2 -> - happyIn171 - (happy_var_2 - )} - -happyReduce_467 = happySpecReduce_3 162# happyReduction_467 -happyReduction_467 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut172 happy_x_2 of { happy_var_2 -> - happyIn171 - (happy_var_2 - )} - -happyReduce_468 = happySpecReduce_3 163# happyReduction_468 -happyReduction_468 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut173 happy_x_2 of { happy_var_2 -> - happyIn172 - (reverse happy_var_2 - )} - -happyReduce_469 = happySpecReduce_3 164# happyReduction_469 -happyReduction_469 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut173 happy_x_1 of { happy_var_1 -> - case happyOut174 happy_x_3 of { happy_var_3 -> - happyIn173 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_470 = happySpecReduce_1 164# happyReduction_470 -happyReduction_470 happy_x_1 - = case happyOut174 happy_x_1 of { happy_var_1 -> - happyIn173 - ([happy_var_1] - )} - -happyReduce_471 = happyReduce 4# 165# happyReduction_471 -happyReduction_471 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut178 happy_x_2 of { happy_var_2 -> - case happyOut175 happy_x_3 of { happy_var_3 -> - case happyOut129 happy_x_4 of { happy_var_4 -> - happyIn174 - (Alt happy_var_1 happy_var_2 happy_var_3 happy_var_4 - ) `HappyStk` happyRest}}}} - -happyReduce_472 = happySpecReduce_2 166# happyReduction_472 -happyReduction_472 happy_x_2 - happy_x_1 - = case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn175 - (UnGuardedAlt happy_var_2 - )} - -happyReduce_473 = happySpecReduce_1 166# happyReduction_473 -happyReduction_473 happy_x_1 - = case happyOut176 happy_x_1 of { happy_var_1 -> - happyIn175 - (GuardedAlts (reverse happy_var_1) - )} - -happyReduce_474 = happySpecReduce_2 167# happyReduction_474 -happyReduction_474 happy_x_2 - happy_x_1 - = case happyOut176 happy_x_1 of { happy_var_1 -> - case happyOut177 happy_x_2 of { happy_var_2 -> - happyIn176 - (happy_var_2 : happy_var_1 - )}} - -happyReduce_475 = happySpecReduce_1 167# happyReduction_475 -happyReduction_475 happy_x_1 - = case happyOut177 happy_x_1 of { happy_var_1 -> - happyIn176 - ([happy_var_1] - )} - -happyReduce_476 = happyMonadReduce 5# 168# happyReduction_476 -happyReduction_476 (happy_x_5 `HappyStk` - happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut169 happy_x_3 of { happy_var_3 -> - case happyOut134 happy_x_5 of { happy_var_5 -> - ( do { checkPatternGuards happy_var_3; - return (GuardedAlt happy_var_1 (reverse happy_var_3) happy_var_5) })}}} - ) (\r -> happyReturn (happyIn177 r)) - -happyReduce_477 = happyMonadReduce 1# 169# happyReduction_477 -happyReduction_477 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut135 happy_x_1 of { happy_var_1 -> - ( checkPattern happy_var_1)} - ) (\r -> happyReturn (happyIn178 r)) - -happyReduce_478 = happyMonadReduce 2# 169# happyReduction_478 -happyReduction_478 (happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut145 happy_x_2 of { happy_var_2 -> - ( checkPattern (BangPat happy_var_2))} - ) (\r -> happyReturn (happyIn178 r)) - -happyReduce_479 = happySpecReduce_3 170# happyReduction_479 -happyReduction_479 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut180 happy_x_2 of { happy_var_2 -> - happyIn179 - (happy_var_2 - )} - -happyReduce_480 = happySpecReduce_3 170# happyReduction_480 -happyReduction_480 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut180 happy_x_2 of { happy_var_2 -> - happyIn179 - (happy_var_2 - )} - -happyReduce_481 = happySpecReduce_2 171# happyReduction_481 -happyReduction_481 happy_x_2 - happy_x_1 - = case happyOut182 happy_x_1 of { happy_var_1 -> - case happyOut181 happy_x_2 of { happy_var_2 -> - happyIn180 - (happy_var_1 : happy_var_2 - )}} - -happyReduce_482 = happySpecReduce_2 171# happyReduction_482 -happyReduction_482 happy_x_2 - happy_x_1 - = case happyOut180 happy_x_2 of { happy_var_2 -> - happyIn180 - (happy_var_2 - )} - -happyReduce_483 = happySpecReduce_0 171# happyReduction_483 -happyReduction_483 = happyIn180 - ([] - ) - -happyReduce_484 = happySpecReduce_2 172# happyReduction_484 -happyReduction_484 happy_x_2 - happy_x_1 - = case happyOut180 happy_x_2 of { happy_var_2 -> - happyIn181 - (happy_var_2 - )} - -happyReduce_485 = happySpecReduce_0 172# happyReduction_485 -happyReduction_485 = happyIn181 - ([] - ) - -happyReduce_486 = happySpecReduce_2 173# happyReduction_486 -happyReduction_486 happy_x_2 - happy_x_1 - = case happyOut55 happy_x_2 of { happy_var_2 -> - happyIn182 - (LetStmt happy_var_2 - )} - -happyReduce_487 = happyReduce 4# 173# happyReduction_487 -happyReduction_487 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut178 happy_x_1 of { happy_var_1 -> - case happyOut218 happy_x_2 of { happy_var_2 -> - case happyOut134 happy_x_4 of { happy_var_4 -> - happyIn182 - (Generator happy_var_2 happy_var_1 happy_var_4 - ) `HappyStk` happyRest}}} - -happyReduce_488 = happySpecReduce_1 173# happyReduction_488 -happyReduction_488 happy_x_1 - = case happyOut134 happy_x_1 of { happy_var_1 -> - happyIn182 - (Qualifier happy_var_1 - )} - -happyReduce_489 = happySpecReduce_2 173# happyReduction_489 -happyReduction_489 happy_x_2 - happy_x_1 - = case happyOut179 happy_x_2 of { happy_var_2 -> - happyIn182 - (RecStmt happy_var_2 - )} - -happyReduce_490 = happySpecReduce_3 174# happyReduction_490 -happyReduction_490 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut183 happy_x_1 of { happy_var_1 -> - case happyOut184 happy_x_3 of { happy_var_3 -> - happyIn183 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_491 = happySpecReduce_1 174# happyReduction_491 -happyReduction_491 happy_x_1 - = case happyOut184 happy_x_1 of { happy_var_1 -> - happyIn183 - ([happy_var_1] - )} - -happyReduce_492 = happySpecReduce_3 175# happyReduction_492 -happyReduction_492 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut191 happy_x_1 of { happy_var_1 -> - case happyOut135 happy_x_3 of { happy_var_3 -> - happyIn184 - (FieldUpdate happy_var_1 happy_var_3 - )}} - -happyReduce_493 = happyMonadReduce 1# 175# happyReduction_493 -happyReduction_493 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (case happyOut191 happy_x_1 of { happy_var_1 -> - ( checkEnabled NamedFieldPuns >> checkUnQual happy_var_1 >>= return . FieldPun)} - ) (\r -> happyReturn (happyIn184 r)) - -happyReduce_494 = happyMonadReduce 1# 175# happyReduction_494 -happyReduction_494 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (( checkEnabled RecordWildCards >> return FieldWildcard) - ) (\r -> happyReturn (happyIn184 r)) - -happyReduce_495 = happySpecReduce_3 176# happyReduction_495 -happyReduction_495 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut186 happy_x_2 of { happy_var_2 -> - happyIn185 - (reverse happy_var_2 - )} - -happyReduce_496 = happySpecReduce_3 177# happyReduction_496 -happyReduction_496 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut186 happy_x_1 of { happy_var_1 -> - case happyOut187 happy_x_3 of { happy_var_3 -> - happyIn186 - (happy_var_3 : happy_var_1 - )}} - -happyReduce_497 = happySpecReduce_1 177# happyReduction_497 -happyReduction_497 happy_x_1 - = case happyOut187 happy_x_1 of { happy_var_1 -> - happyIn186 - ([happy_var_1] - )} - -happyReduce_498 = happyReduce 4# 178# happyReduction_498 -happyReduction_498 (happy_x_4 `HappyStk` - happy_x_3 `HappyStk` - happy_x_2 `HappyStk` - happy_x_1 `HappyStk` - happyRest) - = case happyOut218 happy_x_1 of { happy_var_1 -> - case happyOut192 happy_x_2 of { happy_var_2 -> - case happyOut134 happy_x_4 of { happy_var_4 -> - happyIn187 - (IPBind happy_var_1 happy_var_2 happy_var_4 - ) `HappyStk` happyRest}}} - -happyReduce_499 = happySpecReduce_2 179# happyReduction_499 -happyReduction_499 happy_x_2 - happy_x_1 - = happyIn188 - (p_unit_con - ) - -happyReduce_500 = happySpecReduce_2 179# happyReduction_500 -happyReduction_500 happy_x_2 - happy_x_1 - = happyIn188 - (List [] - ) - -happyReduce_501 = happySpecReduce_3 179# happyReduction_501 -happyReduction_501 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut148 happy_x_2 of { happy_var_2 -> - happyIn188 - (p_tuple_con Boxed happy_var_2 - )} - -happyReduce_502 = happySpecReduce_2 179# happyReduction_502 -happyReduction_502 happy_x_2 - happy_x_1 - = happyIn188 - (p_unboxed_singleton_con - ) - -happyReduce_503 = happySpecReduce_3 179# happyReduction_503 -happyReduction_503 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut148 happy_x_2 of { happy_var_2 -> - happyIn188 - (p_tuple_con Unboxed happy_var_2 - )} - -happyReduce_504 = happySpecReduce_1 179# happyReduction_504 -happyReduction_504 happy_x_1 - = case happyOut194 happy_x_1 of { happy_var_1 -> - happyIn188 - (Con happy_var_1 - )} - -happyReduce_505 = happySpecReduce_1 180# happyReduction_505 -happyReduction_505 happy_x_1 - = case happyOut206 happy_x_1 of { happy_var_1 -> - happyIn189 - (happy_var_1 - )} - -happyReduce_506 = happySpecReduce_3 180# happyReduction_506 -happyReduction_506 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut214 happy_x_2 of { happy_var_2 -> - happyIn189 - (happy_var_2 - )} - -happyReduce_507 = happySpecReduce_1 181# happyReduction_507 -happyReduction_507 happy_x_1 - = case happyOut205 happy_x_1 of { happy_var_1 -> - happyIn190 - (happy_var_1 - )} - -happyReduce_508 = happySpecReduce_3 181# happyReduction_508 -happyReduction_508 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut214 happy_x_2 of { happy_var_2 -> - happyIn190 - (happy_var_2 - )} - -happyReduce_509 = happySpecReduce_1 182# happyReduction_509 -happyReduction_509 happy_x_1 - = case happyOut204 happy_x_1 of { happy_var_1 -> - happyIn191 - (happy_var_1 - )} - -happyReduce_510 = happySpecReduce_3 182# happyReduction_510 -happyReduction_510 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut212 happy_x_2 of { happy_var_2 -> - happyIn191 - (happy_var_2 - )} - -happyReduce_511 = happySpecReduce_1 183# happyReduction_511 -happyReduction_511 happy_x_1 - = case happyOut207 happy_x_1 of { happy_var_1 -> - happyIn192 - (happy_var_1 - )} - -happyReduce_512 = happySpecReduce_1 184# happyReduction_512 -happyReduction_512 happy_x_1 - = case happyOut209 happy_x_1 of { happy_var_1 -> - happyIn193 - (happy_var_1 - )} - -happyReduce_513 = happySpecReduce_3 184# happyReduction_513 -happyReduction_513 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut211 happy_x_2 of { happy_var_2 -> - happyIn193 - (happy_var_2 - )} - -happyReduce_514 = happySpecReduce_1 185# happyReduction_514 -happyReduction_514 happy_x_1 - = case happyOut208 happy_x_1 of { happy_var_1 -> - happyIn194 - (happy_var_1 - )} - -happyReduce_515 = happySpecReduce_3 185# happyReduction_515 -happyReduction_515 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut203 happy_x_2 of { happy_var_2 -> - happyIn194 - (happy_var_2 - )} - -happyReduce_516 = happySpecReduce_1 186# happyReduction_516 -happyReduction_516 happy_x_1 - = case happyOut214 happy_x_1 of { happy_var_1 -> - happyIn195 - (happy_var_1 - )} - -happyReduce_517 = happySpecReduce_3 186# happyReduction_517 -happyReduction_517 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut206 happy_x_2 of { happy_var_2 -> - happyIn195 - (happy_var_2 - )} - -happyReduce_518 = happySpecReduce_1 187# happyReduction_518 -happyReduction_518 happy_x_1 - = case happyOut212 happy_x_1 of { happy_var_1 -> - happyIn196 - (happy_var_1 - )} - -happyReduce_519 = happySpecReduce_3 187# happyReduction_519 -happyReduction_519 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut204 happy_x_2 of { happy_var_2 -> - happyIn196 - (happy_var_2 - )} - -happyReduce_520 = happySpecReduce_1 188# happyReduction_520 -happyReduction_520 happy_x_1 - = case happyOut213 happy_x_1 of { happy_var_1 -> - happyIn197 - (happy_var_1 - )} - -happyReduce_521 = happySpecReduce_3 188# happyReduction_521 -happyReduction_521 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut204 happy_x_2 of { happy_var_2 -> - happyIn197 - (happy_var_2 - )} - -happyReduce_522 = happySpecReduce_1 189# happyReduction_522 -happyReduction_522 happy_x_1 - = case happyOut211 happy_x_1 of { happy_var_1 -> - happyIn198 - (happy_var_1 - )} - -happyReduce_523 = happySpecReduce_3 189# happyReduction_523 -happyReduction_523 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut209 happy_x_2 of { happy_var_2 -> - happyIn198 - (happy_var_2 - )} - -happyReduce_524 = happySpecReduce_1 190# happyReduction_524 -happyReduction_524 happy_x_1 - = case happyOut203 happy_x_1 of { happy_var_1 -> - happyIn199 - (happy_var_1 - )} - -happyReduce_525 = happySpecReduce_3 190# happyReduction_525 -happyReduction_525 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut208 happy_x_2 of { happy_var_2 -> - happyIn199 - (happy_var_2 - )} - -happyReduce_526 = happySpecReduce_1 191# happyReduction_526 -happyReduction_526 happy_x_1 - = case happyOut195 happy_x_1 of { happy_var_1 -> - happyIn200 - (VarOp happy_var_1 - )} - -happyReduce_527 = happySpecReduce_1 191# happyReduction_527 -happyReduction_527 happy_x_1 - = case happyOut198 happy_x_1 of { happy_var_1 -> - happyIn200 - (ConOp happy_var_1 - )} - -happyReduce_528 = happySpecReduce_1 192# happyReduction_528 -happyReduction_528 happy_x_1 - = case happyOut196 happy_x_1 of { happy_var_1 -> - happyIn201 - (QVarOp happy_var_1 - )} - -happyReduce_529 = happySpecReduce_1 192# happyReduction_529 -happyReduction_529 happy_x_1 - = case happyOut199 happy_x_1 of { happy_var_1 -> - happyIn201 - (QConOp happy_var_1 - )} - -happyReduce_530 = happySpecReduce_1 193# happyReduction_530 -happyReduction_530 happy_x_1 - = case happyOut197 happy_x_1 of { happy_var_1 -> - happyIn202 - (QVarOp happy_var_1 - )} - -happyReduce_531 = happySpecReduce_1 193# happyReduction_531 -happyReduction_531 happy_x_1 - = case happyOut199 happy_x_1 of { happy_var_1 -> - happyIn202 - (QConOp happy_var_1 - )} - -happyReduce_532 = happySpecReduce_1 194# happyReduction_532 -happyReduction_532 happy_x_1 - = happyIn203 - (list_cons_name - ) - -happyReduce_533 = happySpecReduce_1 194# happyReduction_533 -happyReduction_533 happy_x_1 - = case happyOut210 happy_x_1 of { happy_var_1 -> - happyIn203 - (happy_var_1 - )} - -happyReduce_534 = happySpecReduce_1 195# happyReduction_534 -happyReduction_534 happy_x_1 - = case happyOut206 happy_x_1 of { happy_var_1 -> - happyIn204 - (UnQual happy_var_1 - )} - -happyReduce_535 = happySpecReduce_1 195# happyReduction_535 -happyReduction_535 happy_x_1 - = case happyOutTok happy_x_1 of { (QVarId happy_var_1) -> - happyIn204 - (Qual (ModuleName (fst happy_var_1)) (Ident (snd happy_var_1)) - )} - -happyReduce_536 = happySpecReduce_1 196# happyReduction_536 -happyReduction_536 happy_x_1 - = case happyOutTok happy_x_1 of { (VarId happy_var_1) -> - happyIn205 - (Ident happy_var_1 - )} - -happyReduce_537 = happySpecReduce_1 196# happyReduction_537 -happyReduction_537 happy_x_1 - = happyIn205 - (as_name - ) - -happyReduce_538 = happySpecReduce_1 196# happyReduction_538 -happyReduction_538 happy_x_1 - = happyIn205 - (qualified_name - ) - -happyReduce_539 = happySpecReduce_1 196# happyReduction_539 -happyReduction_539 happy_x_1 - = happyIn205 - (hiding_name - ) - -happyReduce_540 = happySpecReduce_1 196# happyReduction_540 -happyReduction_540 happy_x_1 - = happyIn205 - (export_name - ) - -happyReduce_541 = happySpecReduce_1 196# happyReduction_541 -happyReduction_541 happy_x_1 - = happyIn205 - (stdcall_name - ) - -happyReduce_542 = happySpecReduce_1 196# happyReduction_542 -happyReduction_542 happy_x_1 - = happyIn205 - (ccall_name - ) - -happyReduce_543 = happySpecReduce_1 197# happyReduction_543 -happyReduction_543 happy_x_1 - = case happyOut205 happy_x_1 of { happy_var_1 -> - happyIn206 - (happy_var_1 - )} - -happyReduce_544 = happySpecReduce_1 197# happyReduction_544 -happyReduction_544 happy_x_1 - = happyIn206 - (safe_name - ) - -happyReduce_545 = happySpecReduce_1 197# happyReduction_545 -happyReduction_545 happy_x_1 - = happyIn206 - (unsafe_name - ) - -happyReduce_546 = happySpecReduce_1 197# happyReduction_546 -happyReduction_546 happy_x_1 - = happyIn206 - (threadsafe_name - ) - -happyReduce_547 = happySpecReduce_1 198# happyReduction_547 -happyReduction_547 happy_x_1 - = case happyOutTok happy_x_1 of { (IDupVarId happy_var_1) -> - happyIn207 - (IPDup happy_var_1 - )} - -happyReduce_548 = happySpecReduce_1 198# happyReduction_548 -happyReduction_548 happy_x_1 - = case happyOutTok happy_x_1 of { (ILinVarId happy_var_1) -> - happyIn207 - (IPLin happy_var_1 - )} - -happyReduce_549 = happySpecReduce_1 199# happyReduction_549 -happyReduction_549 happy_x_1 - = case happyOut209 happy_x_1 of { happy_var_1 -> - happyIn208 - (UnQual happy_var_1 - )} - -happyReduce_550 = happySpecReduce_1 199# happyReduction_550 -happyReduction_550 happy_x_1 - = case happyOutTok happy_x_1 of { (QConId happy_var_1) -> - happyIn208 - (Qual (ModuleName (fst happy_var_1)) (Ident (snd happy_var_1)) - )} - -happyReduce_551 = happySpecReduce_1 200# happyReduction_551 -happyReduction_551 happy_x_1 - = case happyOutTok happy_x_1 of { (ConId happy_var_1) -> - happyIn209 - (Ident happy_var_1 - )} - -happyReduce_552 = happySpecReduce_1 201# happyReduction_552 -happyReduction_552 happy_x_1 - = case happyOut211 happy_x_1 of { happy_var_1 -> - happyIn210 - (UnQual happy_var_1 - )} - -happyReduce_553 = happySpecReduce_1 201# happyReduction_553 -happyReduction_553 happy_x_1 - = case happyOutTok happy_x_1 of { (QConSym happy_var_1) -> - happyIn210 - (Qual (ModuleName (fst happy_var_1)) (Symbol (snd happy_var_1)) - )} - -happyReduce_554 = happySpecReduce_1 202# happyReduction_554 -happyReduction_554 happy_x_1 - = case happyOutTok happy_x_1 of { (ConSym happy_var_1) -> - happyIn211 - (Symbol happy_var_1 - )} - -happyReduce_555 = happySpecReduce_1 203# happyReduction_555 -happyReduction_555 happy_x_1 - = case happyOut214 happy_x_1 of { happy_var_1 -> - happyIn212 - (UnQual happy_var_1 - )} - -happyReduce_556 = happySpecReduce_1 203# happyReduction_556 -happyReduction_556 happy_x_1 - = case happyOut216 happy_x_1 of { happy_var_1 -> - happyIn212 - (happy_var_1 - )} - -happyReduce_557 = happySpecReduce_1 204# happyReduction_557 -happyReduction_557 happy_x_1 - = case happyOut215 happy_x_1 of { happy_var_1 -> - happyIn213 - (UnQual happy_var_1 - )} - -happyReduce_558 = happySpecReduce_1 204# happyReduction_558 -happyReduction_558 happy_x_1 - = case happyOut216 happy_x_1 of { happy_var_1 -> - happyIn213 - (happy_var_1 - )} - -happyReduce_559 = happySpecReduce_1 205# happyReduction_559 -happyReduction_559 happy_x_1 - = case happyOutTok happy_x_1 of { (VarSym happy_var_1) -> - happyIn214 - (Symbol happy_var_1 - )} - -happyReduce_560 = happySpecReduce_1 205# happyReduction_560 -happyReduction_560 happy_x_1 - = happyIn214 - (minus_name - ) - -happyReduce_561 = happySpecReduce_1 205# happyReduction_561 -happyReduction_561 happy_x_1 - = happyIn214 - (bang_name - ) - -happyReduce_562 = happySpecReduce_1 205# happyReduction_562 -happyReduction_562 happy_x_1 - = happyIn214 - (dot_name - ) - -happyReduce_563 = happySpecReduce_1 205# happyReduction_563 -happyReduction_563 happy_x_1 - = happyIn214 - (star_name - ) - -happyReduce_564 = happySpecReduce_1 206# happyReduction_564 -happyReduction_564 happy_x_1 - = case happyOutTok happy_x_1 of { (VarSym happy_var_1) -> - happyIn215 - (Symbol happy_var_1 - )} - -happyReduce_565 = happySpecReduce_1 206# happyReduction_565 -happyReduction_565 happy_x_1 - = happyIn215 - (bang_name - ) - -happyReduce_566 = happySpecReduce_1 206# happyReduction_566 -happyReduction_566 happy_x_1 - = happyIn215 - (dot_name - ) - -happyReduce_567 = happySpecReduce_1 206# happyReduction_567 -happyReduction_567 happy_x_1 - = happyIn215 - (star_name - ) - -happyReduce_568 = happySpecReduce_1 207# happyReduction_568 -happyReduction_568 happy_x_1 - = case happyOutTok happy_x_1 of { (QVarSym happy_var_1) -> - happyIn216 - (Qual (ModuleName (fst happy_var_1)) (Symbol (snd happy_var_1)) - )} - -happyReduce_569 = happySpecReduce_1 208# happyReduction_569 -happyReduction_569 happy_x_1 - = case happyOutTok happy_x_1 of { (IntTok happy_var_1) -> - happyIn217 - (Int happy_var_1 - )} - -happyReduce_570 = happySpecReduce_1 208# happyReduction_570 -happyReduction_570 happy_x_1 - = case happyOutTok happy_x_1 of { (Character happy_var_1) -> - happyIn217 - (Char happy_var_1 - )} - -happyReduce_571 = happySpecReduce_1 208# happyReduction_571 -happyReduction_571 happy_x_1 - = case happyOutTok happy_x_1 of { (FloatTok happy_var_1) -> - happyIn217 - (Frac happy_var_1 - )} - -happyReduce_572 = happySpecReduce_1 208# happyReduction_572 -happyReduction_572 happy_x_1 - = case happyOutTok happy_x_1 of { (StringTok happy_var_1) -> - happyIn217 - (String happy_var_1 - )} - -happyReduce_573 = happySpecReduce_1 208# happyReduction_573 -happyReduction_573 happy_x_1 - = case happyOutTok happy_x_1 of { (IntTokHash happy_var_1) -> - happyIn217 - (PrimInt happy_var_1 - )} - -happyReduce_574 = happySpecReduce_1 208# happyReduction_574 -happyReduction_574 happy_x_1 - = case happyOutTok happy_x_1 of { (WordTokHash happy_var_1) -> - happyIn217 - (PrimWord happy_var_1 - )} - -happyReduce_575 = happySpecReduce_1 208# happyReduction_575 -happyReduction_575 happy_x_1 - = case happyOutTok happy_x_1 of { (FloatTokHash happy_var_1) -> - happyIn217 - (PrimFloat happy_var_1 - )} - -happyReduce_576 = happySpecReduce_1 208# happyReduction_576 -happyReduction_576 happy_x_1 - = case happyOutTok happy_x_1 of { (DoubleTokHash happy_var_1) -> - happyIn217 - (PrimDouble happy_var_1 - )} - -happyReduce_577 = happySpecReduce_1 208# happyReduction_577 -happyReduction_577 happy_x_1 - = case happyOutTok happy_x_1 of { (CharacterHash happy_var_1) -> - happyIn217 - (PrimChar happy_var_1 - )} - -happyReduce_578 = happySpecReduce_1 208# happyReduction_578 -happyReduction_578 happy_x_1 - = case happyOutTok happy_x_1 of { (StringHash happy_var_1) -> - happyIn217 - (PrimString happy_var_1 - )} - -happyReduce_579 = happyMonadReduce 0# 209# happyReduction_579 -happyReduction_579 (happyRest) tk - = happyThen (( getSrcLoc) - ) (\r -> happyReturn (happyIn218 r)) - -happyReduce_580 = happyMonadReduce 0# 210# happyReduction_580 -happyReduction_580 (happyRest) tk - = happyThen (( pushCurrentContext {- >>= \x -> trace (show x) (return x) -}) - ) (\r -> happyReturn (happyIn219 r)) - -happyReduce_581 = happyMonadReduce 1# 211# happyReduction_581 -happyReduction_581 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (( return () {- >>= \x -> trace (show x ++ show x ++ show x) (return x) -}) - ) (\r -> happyReturn (happyIn220 r)) - -happyReduce_582 = happyMonadReduce 1# 211# happyReduction_582 -happyReduction_582 (happy_x_1 `HappyStk` - happyRest) tk - = happyThen (( popContext {- >>= \x -> trace (show x ++ show x) (return x) -}) - ) (\r -> happyReturn (happyIn220 r)) - -happyReduce_583 = happySpecReduce_1 212# happyReduction_583 -happyReduction_583 happy_x_1 - = case happyOutTok happy_x_1 of { (ConId happy_var_1) -> - happyIn221 - (ModuleName happy_var_1 - )} - -happyReduce_584 = happySpecReduce_1 212# happyReduction_584 -happyReduction_584 happy_x_1 - = case happyOutTok happy_x_1 of { (QConId happy_var_1) -> - happyIn221 - (ModuleName (fst happy_var_1 ++ '.':snd happy_var_1) - )} - -happyReduce_585 = happySpecReduce_1 213# happyReduction_585 -happyReduction_585 happy_x_1 - = case happyOut193 happy_x_1 of { happy_var_1 -> - happyIn222 - (happy_var_1 - )} - -happyReduce_586 = happySpecReduce_1 214# happyReduction_586 -happyReduction_586 happy_x_1 - = case happyOut194 happy_x_1 of { happy_var_1 -> - happyIn223 - (happy_var_1 - )} - -happyReduce_587 = happySpecReduce_1 215# happyReduction_587 -happyReduction_587 happy_x_1 - = case happyOut206 happy_x_1 of { happy_var_1 -> - happyIn224 - (happy_var_1 - )} - -happyReduce_588 = happySpecReduce_3 216# happyReduction_588 -happyReduction_588 happy_x_3 - happy_x_2 - happy_x_1 - = case happyOut224 happy_x_2 of { happy_var_2 -> - happyIn225 - (UnQual happy_var_2 - )} - -happyReduce_589 = happySpecReduce_1 216# happyReduction_589 -happyReduction_589 happy_x_1 - = case happyOut226 happy_x_1 of { happy_var_1 -> - happyIn225 - (UnQual happy_var_1 - )} - -happyReduce_590 = happySpecReduce_1 217# happyReduction_590 -happyReduction_590 happy_x_1 - = case happyOutTok happy_x_1 of { (VarSym happy_var_1) -> - happyIn226 - (Symbol happy_var_1 - )} - -happyNewToken action sts stk - = lexer(\tk -> - let cont i = happyDoAction i tk action sts stk in - case tk of { - EOF -> happyDoAction 133# tk action sts stk; - VarId happy_dollar_dollar -> cont 1#; - QVarId happy_dollar_dollar -> cont 2#; - IDupVarId happy_dollar_dollar -> cont 3#; - ILinVarId happy_dollar_dollar -> cont 4#; - ConId happy_dollar_dollar -> cont 5#; - QConId happy_dollar_dollar -> cont 6#; - DVarId happy_dollar_dollar -> cont 7#; - VarSym happy_dollar_dollar -> cont 8#; - ConSym happy_dollar_dollar -> cont 9#; - QVarSym happy_dollar_dollar -> cont 10#; - QConSym happy_dollar_dollar -> cont 11#; - IntTok happy_dollar_dollar -> cont 12#; - FloatTok happy_dollar_dollar -> cont 13#; - Character happy_dollar_dollar -> cont 14#; - StringTok happy_dollar_dollar -> cont 15#; - IntTokHash happy_dollar_dollar -> cont 16#; - WordTokHash happy_dollar_dollar -> cont 17#; - FloatTokHash happy_dollar_dollar -> cont 18#; - DoubleTokHash happy_dollar_dollar -> cont 19#; - CharacterHash happy_dollar_dollar -> cont 20#; - StringHash happy_dollar_dollar -> cont 21#; - LeftParen -> cont 22#; - RightParen -> cont 23#; - LeftHashParen -> cont 24#; - RightHashParen -> cont 25#; - LeftCurlyBar -> cont 26#; - RightCurlyBar -> cont 27#; - SemiColon -> cont 28#; - LeftCurly -> cont 29#; - RightCurly -> cont 30#; - VRightCurly -> cont 31#; - LeftSquare -> cont 32#; - RightSquare -> cont 33#; - Comma -> cont 34#; - Underscore -> cont 35#; - BackQuote -> cont 36#; - Dot -> cont 37#; - DotDot -> cont 38#; - Colon -> cont 39#; - DoubleColon -> cont 40#; - Equals -> cont 41#; - Backslash -> cont 42#; - Bar -> cont 43#; - LeftArrow -> cont 44#; - RightArrow -> cont 45#; - At -> cont 46#; - Tilde -> cont 47#; - DoubleArrow -> cont 48#; - Minus -> cont 49#; - Exclamation -> cont 50#; - Star -> cont 51#; - LeftArrowTail -> cont 52#; - RightArrowTail -> cont 53#; - LeftDblArrowTail -> cont 54#; - RightDblArrowTail -> cont 55#; - RPGuardOpen -> cont 56#; - RPGuardClose -> cont 57#; - RPCAt -> cont 58#; - THIdEscape happy_dollar_dollar -> cont 59#; - THParenEscape -> cont 60#; - THExpQuote -> cont 61#; - THPatQuote -> cont 62#; - THTypQuote -> cont 63#; - THDecQuote -> cont 64#; - THCloseQuote -> cont 65#; - THVarQuote -> cont 66#; - THTyQuote -> cont 67#; - THQuasiQuote happy_dollar_dollar -> cont 68#; - XPCDATA happy_dollar_dollar -> cont 69#; - XStdTagOpen -> cont 70#; - XCloseTagOpen -> cont 71#; - XCodeTagOpen -> cont 72#; - XStdTagClose -> cont 73#; - XEmptyTagClose -> cont 74#; - XCodeTagClose -> cont 75#; - XRPatOpen -> cont 76#; - XRPatClose -> cont 77#; - KW_Foreign -> cont 78#; - KW_Export -> cont 79#; - KW_Safe -> cont 80#; - KW_Unsafe -> cont 81#; - KW_Threadsafe -> cont 82#; - KW_StdCall -> cont 83#; - KW_CCall -> cont 84#; - KW_As -> cont 85#; - KW_By -> cont 86#; - KW_Case -> cont 87#; - KW_Class -> cont 88#; - KW_Data -> cont 89#; - KW_Default -> cont 90#; - KW_Deriving -> cont 91#; - KW_Do -> cont 92#; - KW_Else -> cont 93#; - KW_Family -> cont 94#; - KW_Forall -> cont 95#; - KW_Group -> cont 96#; - KW_Hiding -> cont 97#; - KW_If -> cont 98#; - KW_Import -> cont 99#; - KW_In -> cont 100#; - KW_Infix -> cont 101#; - KW_InfixL -> cont 102#; - KW_InfixR -> cont 103#; - KW_Instance -> cont 104#; - KW_Let -> cont 105#; - KW_MDo -> cont 106#; - KW_Module -> cont 107#; - KW_NewType -> cont 108#; - KW_Of -> cont 109#; - KW_Proc -> cont 110#; - KW_Rec -> cont 111#; - KW_Then -> cont 112#; - KW_Type -> cont 113#; - KW_Using -> cont 114#; - KW_Where -> cont 115#; - KW_Qualified -> cont 116#; - INLINE happy_dollar_dollar -> cont 117#; - SPECIALISE -> cont 118#; - SPECIALISE_INLINE happy_dollar_dollar -> cont 119#; - SOURCE -> cont 120#; - RULES -> cont 121#; - CORE -> cont 122#; - SCC -> cont 123#; - GENERATED -> cont 124#; - DEPRECATED -> cont 125#; - WARNING -> cont 126#; - UNPACK -> cont 127#; - OPTIONS happy_dollar_dollar -> cont 128#; - CFILES happy_dollar_dollar -> cont 129#; - INCLUDE happy_dollar_dollar -> cont 130#; - LANGUAGE -> cont 131#; - PragmaEnd -> cont 132#; - _ -> happyError' tk - }) - -happyError_ tk = happyError' tk - -happyThen :: () => P a -> (a -> P b) -> P b -happyThen = (>>=) -happyReturn :: () => a -> P a -happyReturn = (return) -happyThen1 = happyThen -happyReturn1 :: () => a -> P a -happyReturn1 = happyReturn -happyError' :: () => (Token) -> P a -happyError' tk = parseError tk - -mparseModule = happySomeParser where - happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut9 x)) - -mparseExp = happySomeParser where - happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut134 x)) - -mparsePat = happySomeParser where - happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut178 x)) - -mparseDecl = happySomeParser where - happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut45 x)) - -mparseType = happySomeParser where - happySomeParser = happyThen (happyParse 4#) (\x -> happyReturn (happyOut81 x)) - -mfindOptPragmas = happySomeParser where - happySomeParser = happyThen (happyParse 5#) (\x -> happyReturn (happyOut11 x)) - -happySeq = happyDontSeq - - -parseError :: Token -> P a -parseError t = fail $ "Parse error: " ++ show t - --- | Class to reuse the parse function at many different types. -class Parseable ast where - -- | Parse a string with default mode. - parse :: String -> ParseResult ast - -- | Parse a string with an explicit mode. - parseWithMode :: ParseMode -> String -> ParseResult ast - -- | Parse a string with an explicit mode, returning all comments along the AST - parseWithComments :: ParseMode -> String -> ParseResult (ast, [Comment]) -instance Parseable Module where - parse = parseModule - parseWithMode = parseModuleWithMode - parseWithComments = parseModuleWithComments -instance Parseable Exp where - parse = parseExp - parseWithMode = parseExpWithMode - parseWithComments = parseExpWithComments -instance Parseable Pat where - parse = parsePat - parseWithMode = parsePatWithMode - parseWithComments = parsePatWithComments -instance Parseable Decl where - parse = parseDecl - parseWithMode = parseDeclWithMode - parseWithComments = parseDeclWithComments -instance Parseable Type where - parse = parseType - parseWithMode = parseTypeWithMode - parseWithComments = parseTypeWithComments - --- | Parse of a string, which should contain a complete Haskell module. -parseModule :: String -> ParseResult Module -parseModule = simpleParse mparseModule - --- | Parse of a string containing a complete Haskell module, using an explicit mode. -parseModuleWithMode :: ParseMode -> String -> ParseResult Module -parseModuleWithMode = modeParse mparseModule - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseModuleWithComments :: ParseMode -> String -> ParseResult (Module, [Comment]) -parseModuleWithComments = commentParse mparseModule - --- | Parse of a string containing a Haskell expression. -parseExp :: String -> ParseResult Exp -parseExp = simpleParse mparseExp - --- | Parse of a string containing a Haskell expression, using an explicit mode. -parseExpWithMode :: ParseMode -> String -> ParseResult Exp -parseExpWithMode = modeParse mparseExp - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseExpWithComments :: ParseMode -> String -> ParseResult (Exp, [Comment]) -parseExpWithComments = commentParse mparseExp - --- | Parse of a string containing a Haskell pattern. -parsePat :: String -> ParseResult Pat -parsePat = simpleParse mparsePat - --- | Parse of a string containing a Haskell pattern, using an explicit mode. -parsePatWithMode :: ParseMode -> String -> ParseResult Pat -parsePatWithMode = modeParse mparsePat - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parsePatWithComments :: ParseMode -> String -> ParseResult (Pat, [Comment]) -parsePatWithComments = commentParse mparsePat - --- | Parse of a string containing a Haskell top-level declaration. -parseDecl :: String -> ParseResult Decl -parseDecl = simpleParse mparseDecl - --- | Parse of a string containing a Haskell top-level declaration, using an explicit mode. -parseDeclWithMode :: ParseMode -> String -> ParseResult Decl -parseDeclWithMode = modeParse mparseDecl - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl, [Comment]) -parseDeclWithComments = commentParse mparseDecl - --- | Parse of a string containing a Haskell type. -parseType :: String -> ParseResult Type -parseType = runParser mparseType - --- | Parse of a string containing a Haskell type, using an explicit mode. -parseTypeWithMode :: ParseMode -> String -> ParseResult Type -parseTypeWithMode mode = runParserWithMode mode mparseType - --- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. -parseTypeWithComments :: ParseMode -> String -> ParseResult (Type, [Comment]) -parseTypeWithComments mode str = runParserWithModeComments mode mparseType str - - -simpleParse :: AppFixity a => P a -> String -> ParseResult a -simpleParse p = fmap (applyFixities preludeFixities) . runParser p - -modeParse :: AppFixity a => P a -> ParseMode -> String -> ParseResult a -modeParse p mode = fmap (applyFixities (fixities mode)) . runParserWithMode mode p - -commentParse :: AppFixity a => P a -> ParseMode -> String -> ParseResult (a, [Comment]) -commentParse p mode str = runParserWithModeComments mode p str - >>= \(ast, cs) -> return (applyFixities (fixities mode) ast, cs) - --- | Partial parse of a string starting with a series of top-level option pragmas. -getTopPragmas :: String -> ParseResult [OptionPragma] -getTopPragmas = runParser mfindOptPragmas -{-# LINE 1 "templates\GenericTemplate.hs" #-} -{-# LINE 1 "templates\\GenericTemplate.hs" #-} -{-# LINE 1 "<built-in>" #-} -{-# LINE 1 "<command line>" #-} -{-# LINE 1 "templates\\GenericTemplate.hs" #-} --- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp - -{-# LINE 28 "templates\\GenericTemplate.hs" #-} - - -data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList - - - - - -{-# LINE 49 "templates\\GenericTemplate.hs" #-} - -{-# LINE 59 "templates\\GenericTemplate.hs" #-} - -{-# LINE 68 "templates\\GenericTemplate.hs" #-} - -infixr 9 `HappyStk` -data HappyStk a = HappyStk a (HappyStk a) - ------------------------------------------------------------------------------ --- starting the parse - -happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll - ------------------------------------------------------------------------------ --- Accepting the parse - --- If the current token is 0#, it means we've just accepted a partial --- parse (a %partial parser). We must ignore the saved token on the top of --- the stack in this case. -happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) = - happyReturn1 ans -happyAccept j tk st sts (HappyStk ans _) = - (happyTcHack j (happyTcHack st)) (happyReturn1 ans) - ------------------------------------------------------------------------------ --- Arrays only: do the next action - - - -happyDoAction i tk st - = {- nothing -} - - - case action of - 0# -> {- nothing -} - happyFail i tk st - -1# -> {- nothing -} - happyAccept i tk st - n | (n Happy_GHC_Exts.<# (0# :: Happy_GHC_Exts.Int#)) -> {- nothing -} - - (happyReduceArr Happy_Data_Array.! rule) i tk st - where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#)))))) - n -> {- nothing -} - - - happyShift new_state i tk st - where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) - where off = indexShortOffAddr happyActOffsets st - off_i = (off Happy_GHC_Exts.+# i) - check = if (off_i Happy_GHC_Exts.>=# (0# :: Happy_GHC_Exts.Int#)) - then (indexShortOffAddr happyCheck off_i Happy_GHC_Exts.==# i) - else False - action | check = indexShortOffAddr happyTable off_i - | otherwise = indexShortOffAddr happyDefActions st - -{-# LINE 127 "templates\\GenericTemplate.hs" #-} - - -indexShortOffAddr (HappyA# arr) off = -#if __GLASGOW_HASKELL__ > 500 - Happy_GHC_Exts.narrow16Int# i -#elif __GLASGOW_HASKELL__ == 500 - Happy_GHC_Exts.intToInt16# i -#else - Happy_GHC_Exts.iShiftRA# (Happy_GHC_Exts.iShiftL# i 16#) 16# -#endif - where -#if __GLASGOW_HASKELL__ >= 503 - i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low) -#else - i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.shiftL# high 8#) low) -#endif - high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#))) - low = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off')) - off' = off Happy_GHC_Exts.*# 2# - - - - - -data HappyAddr = HappyA# Happy_GHC_Exts.Addr# - - - - ------------------------------------------------------------------------------ --- HappyState data type (not arrays) - -{-# LINE 170 "templates\\GenericTemplate.hs" #-} - ------------------------------------------------------------------------------ --- Shifting a token - -happyShift new_state 0# tk st sts stk@(x `HappyStk` _) = - let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in --- trace "shifting the error token" $ - happyDoAction i tk new_state (HappyCons (st) (sts)) (stk) - -happyShift new_state i tk st sts stk = - happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk) - --- happyReduce is specialised for the common cases. - -happySpecReduce_0 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_0 nt fn j tk st@((action)) sts stk - = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk) - -happySpecReduce_1 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk') - = let r = fn v1 in - happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) - -happySpecReduce_2 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk') - = let r = fn v1 v2 in - happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) - -happySpecReduce_3 i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk') - = let r = fn v1 v2 v3 in - happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk')) - -happyReduce k i fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happyReduce k nt fn j tk st sts stk - = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of - sts1@((HappyCons (st1@(action)) (_))) -> - let r = fn stk in -- it doesn't hurt to always seq here... - happyDoSeq r (happyGoto nt j tk st1 sts1 r) - -happyMonadReduce k nt fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happyMonadReduce k nt fn j tk st sts stk = - happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk)) - where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) - drop_stk = happyDropStk k stk - -happyMonad2Reduce k nt fn 0# tk st sts stk - = happyFail 0# tk st sts stk -happyMonad2Reduce k nt fn j tk st sts stk = - happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk)) - where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) - drop_stk = happyDropStk k stk - - off = indexShortOffAddr happyGotoOffsets st1 - off_i = (off Happy_GHC_Exts.+# nt) - new_state = indexShortOffAddr happyTable off_i - - - - -happyDrop 0# l = l -happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t - -happyDropStk 0# l = l -happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs - ------------------------------------------------------------------------------ --- Moving to a new state after a reduction - - -happyGoto nt j tk st = - {- nothing -} - happyDoAction j tk new_state - where off = indexShortOffAddr happyGotoOffsets st - off_i = (off Happy_GHC_Exts.+# nt) - new_state = indexShortOffAddr happyTable off_i - - - - ------------------------------------------------------------------------------ --- Error recovery (0# is the error token) - --- parse error if we are in recovery and we fail again -happyFail 0# tk old_st _ stk = --- trace "failing" $ - happyError_ tk - -{- We don't need state discarding for our restricted implementation of - "error". In fact, it can cause some bogus parses, so I've disabled it - for now --SDM - --- discard a state -happyFail 0# tk old_st (HappyCons ((action)) (sts)) - (saved_tok `HappyStk` _ `HappyStk` stk) = --- trace ("discarding state, depth " ++ show (length stk)) $ - happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk)) --} - --- Enter error recovery: generate an error token, --- save the old token and carry on. -happyFail i tk (action) sts stk = --- trace "entering error recovery" $ - happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk) - --- Internal happy errors: - -notHappyAtAll = error "Internal Happy error\n" - ------------------------------------------------------------------------------ --- Hack to get the typechecker to accept our action functions - - -happyTcHack :: Happy_GHC_Exts.Int# -> a -> a -happyTcHack x y = y -{-# INLINE happyTcHack #-} - - ------------------------------------------------------------------------------ --- Seq-ing. If the --strict flag is given, then Happy emits --- happySeq = happyDoSeq --- otherwise it emits --- happySeq = happyDontSeq - -happyDoSeq, happyDontSeq :: a -> b -> b -happyDoSeq a b = a `seq` b -happyDontSeq a b = b - ------------------------------------------------------------------------------ --- Don't inline any functions from the template. GHC has a nasty habit --- of deciding to inline happyGoto everywhere, which increases the size of --- the generated parser quite a bit. - - -{-# NOINLINE happyDoAction #-} -{-# NOINLINE happyTable #-} -{-# NOINLINE happyCheck #-} -{-# NOINLINE happyActOffsets #-} -{-# NOINLINE happyGotoOffsets #-} -{-# NOINLINE happyDefActions #-} - -{-# NOINLINE happyShift #-} -{-# NOINLINE happySpecReduce_0 #-} -{-# NOINLINE happySpecReduce_1 #-} -{-# NOINLINE happySpecReduce_2 #-} -{-# NOINLINE happySpecReduce_3 #-} -{-# NOINLINE happyReduce #-} -{-# NOINLINE happyMonadReduce #-} -{-# NOINLINE happyGoto #-} -{-# NOINLINE happyFail #-} - --- end of Happy Template.
haskell-src-exts.cabal view
@@ -1,5 +1,5 @@ Name: haskell-src-exts-Version: 1.1.4+Version: 1.2.0 License: BSD3 License-File: LICENSE Author: Niklas Broberg@@ -54,23 +54,20 @@ Language.Haskell.Exts.Build, Language.Haskell.Exts.Fixity, Language.Haskell.Exts.Comments,+ Language.Haskell.Exts.SrcLoc, Language.Haskell.Exts.Annotated,- Language.Haskell.Exts.Annotated.Parser,- Language.Haskell.Exts.Annotated.Pretty, Language.Haskell.Exts.Annotated.Syntax, Language.Haskell.Exts.Annotated.Fixity, Language.Haskell.Exts.Annotated.Build,- Language.Haskell.Exts.Annotated.Comments,- Language.Haskell.Exts.Annotated.SrcLoc,- Language.Haskell.Exts.Annotated.ExactPrint+ Language.Haskell.Exts.Annotated.ExactPrint,+ Language.Haskell.Exts.Annotated.Simplify - Other-modules: Language.Haskell.Exts.ParseMonad,+ Other-modules: Language.Haskell.Exts.ExtScheme,+ + Language.Haskell.Exts.ParseMonad,+ Language.Haskell.Exts.ParseSyntax, Language.Haskell.Exts.Lexer, Language.Haskell.Exts.ParseUtils,- Language.Haskell.Exts.ExtScheme,- - Language.Haskell.Exts.Annotated.ParseMonad,- Language.Haskell.Exts.Annotated.Lexer,- Language.Haskell.Exts.Annotated.ParseUtils+ Language.Haskell.Exts.InternalParser Hs-source-dirs: src
src/Language/Haskell/Exts.hs view
@@ -72,7 +72,7 @@ allExts = impliesExts $ case (ign, readExtensions md) of (False,Just es) -> exts ++ es _ -> exts- in parseModuleWithMode (p { extensions = allExts }) md+ in parseWithMode (p { extensions = allExts }) md -- | Gather the extensions declared in LANGUAGE pragmas
src/Language/Haskell/Exts/Annotated.hs view
@@ -17,12 +17,12 @@ -- * Re-exported modules module Language.Haskell.Exts.Annotated.Syntax , module Language.Haskell.Exts.Annotated.Build- , module Language.Haskell.Exts.Annotated.Parser- , module Language.Haskell.Exts.Annotated.Pretty+ , module Language.Haskell.Exts.Parser+ , module Language.Haskell.Exts.Pretty , module Language.Haskell.Exts.Annotated.Fixity- , module Language.Haskell.Exts.Annotated.SrcLoc , module Language.Haskell.Exts.Annotated.ExactPrint- , module Language.Haskell.Exts.Annotated.Comments+ , module Language.Haskell.Exts.SrcLoc+ , module Language.Haskell.Exts.Comments , module Language.Haskell.Exts.Extension -- * Parsing of Haskell source files , parseFile@@ -39,13 +39,15 @@ import Language.Haskell.Exts.Annotated.Build import Language.Haskell.Exts.Annotated.Syntax-import Language.Haskell.Exts.Annotated.Parser-import Language.Haskell.Exts.Annotated.Pretty-import Language.Haskell.Exts.Annotated.SrcLoc+import Language.Haskell.Exts.Parser ( Parseable(..), ParseResult(..), fromParseResult, ParseMode(..), defaultParseMode )+import Language.Haskell.Exts.Pretty import Language.Haskell.Exts.Annotated.Fixity-import Language.Haskell.Exts.Annotated.Comments import Language.Haskell.Exts.Annotated.ExactPrint+import Language.Haskell.Exts.SrcLoc import Language.Haskell.Exts.Extension+import Language.Haskell.Exts.Comments++import Language.Haskell.Exts.InternalParser import Data.List import Language.Preprocessor.Unlit
src/Language/Haskell/Exts/Annotated/Build.hs view
@@ -1,6 +1,6 @@ ----------------------------------------------------------------------------- -- |--- Module : Language.Haskell.Exts.Build+-- Module : Language.Haskell.Exts.Annotated.Build -- Copyright : (c) The GHC Team, 1997-2000, -- (c) Niklas Broberg 2004 -- License : BSD-style (see the file LICENSE.txt)
− src/Language/Haskell/Exts/Annotated/Comments.hs
@@ -1,19 +0,0 @@-{-# LANGUAGE CPP, DeriveDataTypeable #-} -module Language.Haskell.Exts.Annotated.Comments where - -import Language.Haskell.Exts.Annotated.SrcLoc - -#ifdef __GLASGOW_HASKELL__ -#ifdef BASE4 -import Data.Data -#else -import Data.Generics (Data(..),Typeable(..)) -#endif -#endif - -data Comment = Comment Bool SrcSpan String -#ifdef __GLASGOW_HASKELL__ - deriving (Eq,Show,Typeable,Data) -#else - deriving (Eq,Show) -#endif
src/Language/Haskell/Exts/Annotated/ExactPrint.hs view
@@ -1,11 +1,26 @@+----------------------------------------------------------------------------- +-- | +-- Module : Language.Haskell.Exts.Annotated.ExactPrint +-- Copyright : (c) Niklas Broberg 2009 +-- License : BSD-style (see the file LICENSE.txt) +-- +-- Maintainer : Niklas Broberg, d00nibro@chalmers.se +-- Stability : stable +-- Portability : portable +-- +-- Exact-printer for Haskell abstract syntax. The input is a (semi-concrete) +-- abstract syntax tree, annotated with exact source information to enable +-- printing the tree exactly as it was parsed. +-- +----------------------------------------------------------------------------- module Language.Haskell.Exts.Annotated.ExactPrint ( exactPrint , ExactP ) where -import Language.Haskell.Exts.Annotated.Comments -import Language.Haskell.Exts.Annotated.SrcLoc import Language.Haskell.Exts.Annotated.Syntax +import Language.Haskell.Exts.SrcLoc +import Language.Haskell.Exts.Comments import Control.Monad (when) @@ -16,7 +31,7 @@ type Pos = (Int,Int) -pos :: (SrcInfo si) => si -> Pos +pos :: (SrcInfo loc) => loc -> Pos pos ss = (startLine ss, startColumn ss) newtype EP x = EP (Pos -> [Comment] -> (x, Pos, [Comment], ShowS)) @@ -66,9 +81,9 @@ padUntil (l,c) = do (l1,c1) <- getPos case {- trace (show ((l,c), (l1,c1))) -} () of - _ | l1 >= l && c1 <= c -> printString $ replicate (c - c1) ' ' - | l1 < l -> newLine >> padUntil (l,c) - | otherwise -> return () + _ {-()-} | l1 >= l && c1 <= c -> printString $ replicate (c - c1) ' ' + | l1 < l -> newLine >> padUntil (l,c) + | otherwise -> return () mPrintComments :: Pos -> EP () @@ -98,25 +113,25 @@ ------------------------------------------------------------------------------ -- Printing of source elements -exactPrint :: (ExactP ast) => ast L -> [Comment] -> String +exactPrint :: (ExactP ast) => ast SrcSpanInfo -> [Comment] -> String exactPrint ast cs = runEP (exactP ast) cs -exactPC :: (Annotated ast, ExactP ast) => ast L -> EP () +exactPC :: (Annotated ast, ExactP ast) => ast SrcSpanInfo -> EP () exactPC ast = let p = pos (ann ast) in mPrintComments p >> padUntil p >> exactP ast printSeq :: [(Pos, EP ())] -> EP () printSeq [] = return () printSeq ((p,pr):xs) = printWhitespace p >> pr >> printSeq xs -printStrs :: SrcInfo si => [(si, String)] -> EP () -printStrs = printSeq . map (\(si, str) -> (pos si, printString str)) +printStrs :: SrcInfo loc => [(loc, String)] -> EP () +printStrs = printSeq . map (\(loc, str) -> (pos loc, printString str)) -printPoints :: L -> [String] -> EP () +printPoints :: SrcSpanInfo -> [String] -> EP () printPoints l = printStrs . zip (srcInfoPoints l) -printInterleaved, printInterleaved' :: (Annotated ast, ExactP ast, SrcInfo si) => [(si, String)] -> [ast L] -> EP () +printInterleaved, printInterleaved' :: (Annotated ast, ExactP ast, SrcInfo loc) => [(loc, String)] -> [ast SrcSpanInfo] -> EP () printInterleaved sistrs asts = printSeq $ - interleave (map (\(si, str) -> (pos si, printString str)) sistrs) + interleave (map (\(loc, str) -> (pos loc, printString str)) sistrs) (map (\a -> (pos $ ann a, exactP a)) asts) printInterleaved' sistrs (a:asts) = exactPC a >> printInterleaved sistrs asts @@ -137,7 +152,7 @@ maybeEP :: (a -> EP ()) -> Maybe a -> EP () maybeEP = maybe (return ()) -bracketList :: (Annotated ast, ExactP ast) => (String, String, String) -> [SrcSpan] -> [ast L] -> EP () +bracketList :: (Annotated ast, ExactP ast) => (String, String, String) -> [SrcSpan] -> [ast SrcSpanInfo] -> EP () bracketList (a,b,c) poss asts = printInterleaved (pList poss (a,b,c)) asts pList (p:ps) (a,b,c) = (p,a) : pList' ps (b,c) @@ -145,12 +160,12 @@ pList' [p] (_,c) = [(p,c)] pList' (p:ps) (b,c) = (p, b) : pList' ps (b,c) -parenList, squareList, curlyList :: (Annotated ast, ExactP ast) => [SrcSpan] -> [ast L] -> EP () +parenList, squareList, curlyList :: (Annotated ast, ExactP ast) => [SrcSpan] -> [ast SrcSpanInfo] -> EP () parenList = bracketList ("(",",",")") squareList = bracketList ("[",",","]") curlyList = bracketList ("{",",","}") -layoutList :: (Functor ast, Show (ast ()), Annotated ast, ExactP ast) => [SrcSpan] -> [ast L] -> EP () +layoutList :: (Functor ast, Show (ast ()), Annotated ast, ExactP ast) => [SrcSpan] -> [ast SrcSpanInfo] -> EP () layoutList poss asts = printInterleaved (lList poss) asts lList (p:ps) = (if isNullSpan p then (p,"") else (p,"{")) : lList' ps @@ -159,13 +174,11 @@ lList' (p:ps) = (if isNullSpan p then (p,"") else (p,";")) : lList' ps -type L = SrcSpanInfo - -------------------------------------------------- -- Exact printing class ExactP ast where - exactP :: ast L -> EP () + exactP :: ast SrcSpanInfo -> EP () instance ExactP Literal where exactP lit = case lit of @@ -226,13 +239,13 @@ printStringAt (pos c) ")" | otherwise = epQName qn -epQName :: QName L -> EP () +epQName :: QName SrcSpanInfo -> EP () epQName qn = case qn of Qual l mn n -> exactP mn >> printString "." >> epName n UnQual l n -> epName n Special l sc -> exactP sc -epInfixQName :: QName L -> EP () +epInfixQName :: QName SrcSpanInfo -> EP () epInfixQName qn | isSymbol (getName qn) = printWhitespace (pos (ann qn)) >> epQName qn | otherwise = do @@ -252,11 +265,11 @@ printString str printStringAt (pos c) ")" -epName :: Name L -> EP () +epName :: Name SrcSpanInfo -> EP () epName (Ident _ str) = printString str epName (Symbol _ str) = printString str -epInfixName :: Name L -> EP () +epInfixName :: Name SrcSpanInfo -> EP () epInfixName n | isSymbol n = printWhitespace (pos (ann n)) >> epName n | otherwise = do @@ -364,12 +377,37 @@ maybeEP exactPC mmh printStreams (map (\(p,s) -> (pos p, printString s)) $ lList pts) (map (\i -> (pos $ ann i, exactPC i)) ids ++ map (\d -> (pos $ ann d, exactPC d)) (sepFunBinds decls)) -{- - XmlPage l [OptionPragma l] (XName l) [XAttr l] (Maybe (Exp l)) [Exp l] + XmlPage l _mn oss xn attrs mat es -> do + let (oPts, [a,b,c,d,e]) = splitAt (max (length oss + 1) 2) $ srcInfoPoints l + layoutList oPts oss + printStringAt (pos a) "<" + exactPC xn + mapM_ exactPC attrs + maybeEP exactPC mat + printStringAt (pos b) ">" + mapM_ exactPC es + printStringAt (pos c) "</" + printWhitespace (pos d) + exactP xn + printStringAt (pos e) ">" + XmlHybrid l mmh oss ids decls xn attrs mat es -> do + let (oPts, pts) = splitAt (max (length oss + 1) 2) (srcInfoPoints l) + layoutList oPts oss + maybeEP exactPC mmh + let (dPts, [a,b,c,d,e]) = splitAt (length pts - 5) pts + printStreams (map (\(p,s) -> (pos p, printString s)) $ lList dPts) + (map (\i -> (pos $ ann i, exactPC i)) ids ++ map (\d -> (pos $ ann d, exactPC d)) (sepFunBinds decls)) - XmlHybrid l (Maybe (ModuleHead l)) [OptionPragma l] [ImportDecl l] [Decl l] - (XName l) [XAttr l] (Maybe (Exp l)) [Exp l] --} + printStringAt (pos a) "<" + exactPC xn + mapM_ exactPC attrs + maybeEP exactPC mat + printStringAt (pos b) ">" + mapM_ exactPC es + printStringAt (pos c) "</" + printWhitespace (pos d) + exactP xn + printStringAt (pos e) ">" instance ExactP ModuleHead where exactP (ModuleHead l mn mwt mess) = do @@ -481,7 +519,7 @@ layoutList pts gds maybeEP exactPC mder ClassDecl l mctxt dh fds mcds -> do - let pts = srcInfoPoints l + let (a:pts) = srcInfoPoints l printString "class" maybeEP exactPC mctxt exactPC dh @@ -494,7 +532,7 @@ maybeEP (\cds -> do let (p:pts') = pts printStringAt (pos p) "where" - layoutList pts' cds + layoutList pts' $ sepClassFunBinds cds ) mcds InstDecl l mctxt ih mids -> do let (a:pts) = srcInfoPoints l @@ -504,7 +542,7 @@ maybeEP (\ids -> do let (p:pts') = pts printStringAt (pos p) "where" - layoutList pts' ids + layoutList pts' $ sepInstFunBinds ids ) mids DerivDecl l mctxt ih -> do let [a,b] = srcInfoPoints l @@ -611,21 +649,30 @@ exactPC ih printStringAt (pos c) "#-}" -printWarndeprs :: [Pos] -> [([Name L], String)] -> EP () +printWarndeprs :: [Pos] -> [([Name SrcSpanInfo], String)] -> EP () printWarndeprs _ [] = return () printWarndeprs ps ((ns,str):nsts) = printWd ps ns str nsts - where printWd :: [Pos] -> [Name L] -> String -> [([Name L], String)] -> EP () + where printWd :: [Pos] -> [Name SrcSpanInfo] -> String -> [([Name SrcSpanInfo], String)] -> EP () printWd (p:ps) [] str nsts = printStringAt p (show str) >> printWarndeprs ps nsts printWd ps [n] str nsts = exactPC n >> printWd ps [] str nsts printWd (p:ps) (n:ns) str nsts = exactPC n >> printStringAt p "," >> printWd ps ns str nsts -sepFunBinds :: [Decl L] -> [Decl L] +sepFunBinds :: [Decl SrcSpanInfo] -> [Decl SrcSpanInfo] sepFunBinds [] = [] sepFunBinds (FunBind _ ms:ds) = map (\m -> FunBind (ann m) [m]) ms ++ sepFunBinds ds sepFunBinds (d:ds) = d : sepFunBinds ds +sepClassFunBinds :: [ClassDecl SrcSpanInfo] -> [ClassDecl SrcSpanInfo] +sepClassFunBinds [] = [] +sepClassFunBinds (ClsDecl _ (FunBind _ ms):ds) = map (\m -> ClsDecl (ann m) $ FunBind (ann m) [m]) ms ++ sepClassFunBinds ds +sepClassFunBinds (d:ds) = d : sepClassFunBinds ds +sepInstFunBinds :: [InstDecl SrcSpanInfo] -> [InstDecl SrcSpanInfo] +sepInstFunBinds [] = [] +sepInstFunBinds (InsDecl _ (FunBind _ ms):ds) = map (\m -> InsDecl (ann m) $ FunBind (ann m) [m]) ms ++ sepInstFunBinds ds +sepInstFunBinds (d:ds) = d : sepInstFunBinds ds + instance ExactP DeclHead where exactP dh = case dh of DHead l n tvs -> exactP n >> mapM_ exactPC tvs @@ -666,6 +713,7 @@ printString "(" exactPC kd printStringAt (pos b) ")" + KindVar l n -> exactP n instance ExactP Type where exactP t = case t of
src/Language/Haskell/Exts/Annotated/Fixity.hs view
@@ -1,6 +1,6 @@ ----------------------------------------------------------------------------- -- | --- Module : Language.Haskell.Exts.Fixity +-- Module : Language.Haskell.Exts.Annotated.Fixity -- Copyright : (c) Niklas Broberg 2009 -- License : BSD-style (see the file LICENSE.txt) -- @@ -34,12 +34,10 @@ ) where import Language.Haskell.Exts.Annotated.Syntax -import Language.Haskell.Exts.Annotated.SrcLoc +import Language.Haskell.Exts.SrcLoc import Data.Char (isUpper) -type L = SrcSpanInfo - -- | Operator fixities are represented by their associativity -- (left, right or none) and their precedence (0-9). data Fixity = Fixity (Assoc ()) Int (Op ()) @@ -51,8 +49,8 @@ -- fixities given. Assumes that all operator expressions are -- fully left associative chains to begin with. applyFixities :: [Fixity] -- ^ The fixities to account for. - -> ast L -- ^ The element to tweak. - -> ast L -- ^ The same element, but with operator expressions updated. + -> ast SrcSpanInfo -- ^ The element to tweak. + -> ast SrcSpanInfo -- ^ The same element, but with operator expressions updated. instance AppFixity Exp where @@ -159,8 +157,8 @@ instance AppFixity Module where applyFixities fixs (Module l mmh prs imp decls) = Module l mmh prs imp $ appFixDecls fixs decls - applyFixities fixs (XmlPage l os xn xas mexp cs) = - XmlPage l os xn (map fix xas) (fmap fix mexp) (map fix cs) + applyFixities fixs (XmlPage l mn os xn xas mexp cs) = + XmlPage l mn os xn (map fix xas) (fmap fix mexp) (map fix cs) where fix x = applyFixities fixs x applyFixities fixs (XmlHybrid l mmh prs imp decls xn xas mexp cs) = XmlHybrid l mmh prs imp (appFixDecls fixs decls) @@ -178,7 +176,7 @@ _ -> decl where fix x = applyFixities fixs x -appFixDecls :: [Fixity] -> [Decl L] -> [Decl L] +appFixDecls :: [Fixity] -> [Decl SrcSpanInfo] -> [Decl SrcSpanInfo] appFixDecls fixs decls = let extraFixs = getFixities decls in map (applyFixities (fixs++extraFixs)) decls
− src/Language/Haskell/Exts/Annotated/Lexer.hs
@@ -1,1064 +0,0 @@-{-# OPTIONS_HADDOCK hide #-}--------------------------------------------------------------------------------- |--- Module : Language.Haskell.Exts.Lexer--- Copyright : (c) The GHC Team, 1997-2000--- (c) Niklas Broberg, 2004-2009--- License : BSD-style (see the file LICENSE.txt)------ Maintainer : Niklas Broberg, d00nibro@chalmers.se--- Stability : stable--- Portability : portable------ Lexer for Haskell, with some extensions.------------------------------------------------------------------------------------- ToDo: Introduce different tokens for decimal, octal and hexadecimal (?)--- ToDo: FloatTok should have three parts (integer part, fraction, exponent) (?)--- ToDo: Use a lexical analyser generator (lx?)--module Language.Haskell.Exts.Annotated.Lexer (Token(..), lexer) where--import Language.Haskell.Exts.Annotated.SrcLoc-import Language.Haskell.Exts.Annotated.ParseMonad-import Language.Haskell.Exts.Annotated.Comments-import Language.Haskell.Exts.Extension-import Language.Haskell.Exts.ExtScheme--import Data.Char-import Data.Ratio-import Control.Monad (when)---- import Debug.Trace (trace)--data Token- = VarId String- | QVarId (String,String)- | IDupVarId (String) -- duplicable implicit parameter- | ILinVarId (String) -- linear implicit parameter- | ConId String- | QConId (String,String)- | DVarId [String] -- to enable varid's with '-' in them- | VarSym String- | ConSym String- | QVarSym (String,String)- | QConSym (String,String)- | IntTok (Integer, String)- | FloatTok (Rational, String)- | Character (Char, String)- | StringTok (String, String)- | IntTokHash (Integer, String) -- 1#- | WordTokHash (Integer, String) -- 1##- | FloatTokHash (Rational, String) -- 1.0#- | DoubleTokHash (Rational, String) -- 1.0##- | CharacterHash (Char, String) -- c#- | StringHash (String, String) -- "Hello world!"#---- Symbols-- | LeftParen- | RightParen- | LeftHashParen- | RightHashParen- | LeftCurlyBar- | RightCurlyBar- | SemiColon- | LeftCurly- | RightCurly- | VRightCurly -- a virtual close brace- | LeftSquare- | RightSquare- | Comma- | Underscore- | BackQuote---- Reserved operators-- | Dot -- reserved for use with 'forall x . x'- | DotDot- | Colon- | DoubleColon- | Equals- | Backslash- | Bar- | LeftArrow- | RightArrow- | At- | Tilde- | DoubleArrow- | Minus- | Exclamation- | Star- | LeftArrowTail -- >-- | RightArrowTail -- -<- | LeftDblArrowTail -- >>-- | RightDblArrowTail -- -<<---- Template Haskell- | THExpQuote -- [| or [e|- | THPatQuote -- [p|- | THDecQuote -- [d|- | THTypQuote -- [t|- | THCloseQuote -- |]- | THIdEscape (String) -- dollar x- | THParenEscape -- dollar (- | THVarQuote -- 'x (but without the x)- | THTyQuote -- ''T (but without the T)- | THQuasiQuote (String,String) -- [$...|...]---- HaRP- | RPGuardOpen -- (|- | RPGuardClose -- |)- | RPCAt -- @:---- Hsx- | XCodeTagOpen -- <%- | XCodeTagClose -- %>- | XStdTagOpen -- <- | XStdTagClose -- >- | XCloseTagOpen -- </- | XEmptyTagClose -- />- | XPCDATA String- | XRPatOpen -- <[- | XRPatClose -- ]>---- Pragmas-- | PragmaEnd -- #-}--- | PragmaUnknown (String,String) -- Any pragma not recognized- | RULES- | INLINE Bool- | SPECIALISE- | SPECIALISE_INLINE Bool- | SOURCE- | DEPRECATED- | WARNING- | SCC- | GENERATED- | CORE- | UNPACK- | OPTIONS (Maybe String,String)- | CFILES String- | LANGUAGE- | INCLUDE String--- These are not yet implemented--- | LINE---- Reserved Ids-- | KW_As- | KW_By -- transform list comprehensions- | KW_Case- | KW_Class- | KW_Data- | KW_Default- | KW_Deriving- | KW_Do- | KW_MDo- | KW_Else- | KW_Family -- indexed type families- | KW_Forall -- universal/existential types- | KW_Group -- transform list comprehensions- | KW_Hiding- | KW_If- | KW_Import- | KW_In- | KW_Infix- | KW_InfixL- | KW_InfixR- | KW_Instance- | KW_Let- | KW_Module- | KW_NewType- | KW_Of- | KW_Proc -- arrows- | KW_Rec -- arrows- | KW_Then- | KW_Type- | KW_Using -- transform list comprehensions- | KW_Where- | KW_Qualified-- -- FFI- | KW_Foreign- | KW_Export- | KW_Safe- | KW_Unsafe- | KW_Threadsafe- | KW_StdCall- | KW_CCall-- | EOF- deriving (Eq,Show)--reserved_ops :: [(String,(Token, Maybe ExtScheme))]-reserved_ops = [- ( "..", (DotDot, Nothing) ),- ( ":", (Colon, Nothing) ),- ( "::", (DoubleColon, Nothing) ),- ( "=", (Equals, Nothing) ),- ( "\\", (Backslash, Nothing) ),- ( "|", (Bar, Nothing) ),- ( "<-", (LeftArrow, Nothing) ),- ( "->", (RightArrow, Nothing) ),- ( "@", (At, Nothing) ),- ( "@:", (RPCAt, Just (Any [RegularPatterns])) ),- ( "~", (Tilde, Nothing) ),- ( "=>", (DoubleArrow, Nothing) ),- ( "*", (Star, Just (Any [KindSignatures])) ),- -- Arrows notation- ( "-<", (LeftArrowTail, Just (Any [Arrows])) ),- ( ">-", (RightArrowTail, Just (Any [Arrows])) ),- ( "-<<", (LeftDblArrowTail, Just (Any [Arrows])) ),- ( ">>-", (RightDblArrowTail, Just (Any [Arrows])) )- ]--special_varops :: [(String,(Token, Maybe ExtScheme))]-special_varops = [- -- the dot is only a special symbol together with forall, but can still be used as function composition- ( ".", (Dot, Just (Any [ExplicitForall, ExistentialQuantification])) ),- ( "-", (Minus, Nothing) ),- ( "!", (Exclamation, Nothing) )- ]--reserved_ids :: [(String,(Token, Maybe ExtScheme))]-reserved_ids = [- ( "_", (Underscore, Nothing) ),- ( "by", (KW_By, Just (Any [TransformListComp])) ),- ( "case", (KW_Case, Nothing) ),- ( "class", (KW_Class, Nothing) ),- ( "data", (KW_Data, Nothing) ),- ( "default", (KW_Default, Nothing) ),- ( "deriving", (KW_Deriving, Nothing) ),- ( "do", (KW_Do, Nothing) ),- ( "else", (KW_Else, Nothing) ),- ( "family", (KW_Family, Just (Any [TypeFamilies])) ), -- indexed type families- ( "forall", (KW_Forall, Just (Any [ExplicitForall, ExistentialQuantification])) ), -- universal/existential quantification- ( "group", (KW_Group, Just (Any [TransformListComp])) ),- ( "if", (KW_If, Nothing) ),- ( "import", (KW_Import, Nothing) ),- ( "in", (KW_In, Nothing) ),- ( "infix", (KW_Infix, Nothing) ),- ( "infixl", (KW_InfixL, Nothing) ),- ( "infixr", (KW_InfixR, Nothing) ),- ( "instance", (KW_Instance, Nothing) ),- ( "let", (KW_Let, Nothing) ),- ( "mdo", (KW_MDo, Just (Any [RecursiveDo])) ),- ( "module", (KW_Module, Nothing) ),- ( "newtype", (KW_NewType, Nothing) ),- ( "of", (KW_Of, Nothing) ),- ( "proc", (KW_Proc, Just (Any [Arrows])) ),- ( "rec", (KW_Rec, Just (Any [Arrows])) ),- ( "then", (KW_Then, Nothing) ),- ( "type", (KW_Type, Nothing) ),- ( "using", (KW_Using, Just (Any [TransformListComp])) ),- ( "where", (KW_Where, Nothing) ),---- FFI- ( "foreign", (KW_Foreign, Just (Any [ForeignFunctionInterface])) )- ]---special_varids :: [(String,(Token, Maybe ExtScheme))]-special_varids = [- ( "as", (KW_As, Nothing) ),- ( "qualified", (KW_Qualified, Nothing) ),- ( "hiding", (KW_Hiding, Nothing) ),---- FFI- ( "export", (KW_Export, Just (Any [ForeignFunctionInterface])) ),- ( "safe", (KW_Safe, Just (Any [ForeignFunctionInterface])) ),- ( "unsafe", (KW_Unsafe, Just (Any [ForeignFunctionInterface])) ),- ( "threadsafe", (KW_Threadsafe, Just (Any [ForeignFunctionInterface])) ),- ( "stdcall", (KW_StdCall, Just (Any [ForeignFunctionInterface])) ),- ( "ccall", (KW_CCall, Just (Any [ForeignFunctionInterface])) )- ]--pragmas :: [(String,Token)]-pragmas = [- ( "rules", RULES ),- ( "inline", INLINE True ),- ( "noinline", INLINE False ),- ( "notinline", INLINE False ),- ( "specialise", SPECIALISE ),- ( "specialize", SPECIALISE ),- ( "source", SOURCE ),- ( "deprecated", DEPRECATED ),- ( "warning", WARNING ),- ( "scc", SCC ),- ( "generated", GENERATED ),- ( "core", CORE ),- ( "unpack", UNPACK ),- ( "language", LANGUAGE ),- ( "options", OPTIONS undefined ), -- we'll tweak it before use - promise!- ( "cfiles", CFILES undefined ), -- same here...- ( "include", INCLUDE undefined ) -- ...and here!- ]--isIdent, isHSymbol :: Char -> Bool-isIdent c = isAlpha c || isDigit c || c == '\'' || c == '_'--isHSymbol c = c `elem` ":!#%&*./?@\\-" || ((isSymbol c || isPunctuation c) && not (c `elem` "(),;[]`{}_\"'"))--matchChar :: Char -> String -> Lex a ()-matchChar c msg = do- s <- getInput- if null s || head s /= c then fail msg else discard 1---- The top-level lexer.--- We need to know whether we are at the beginning of the line to decide--- whether to insert layout tokens.--lexer :: (Loc Token -> P a) -> P a-lexer = runL topLexer--topLexer :: Lex a (Loc Token)-topLexer = do- b <- pullCtxtFlag- if b then -- trace (show cf ++ ": " ++ show VRightCurly) $- setBOL >> getSrcLocL >>= \l -> return (Loc (mkSrcSpan l l) VRightCurly) -- the lex context state flags that we must do an empty {} - UGLY- else do- bol <- checkBOL- (bol, ws) <- lexWhiteSpace bol- -- take care of whitespace in PCDATA- ec <- getExtContext- case ec of- -- if there was no linebreak, and we are lexing PCDATA,- -- then we want to care about the whitespace.- -- We don't bother to test for XmlSyntax, since we- -- couldn't end up in ChildCtxt otherwise.- Just ChildCtxt | not bol && ws -> getSrcLocL >>= \l -> return $ Loc (mkSrcSpan l l) $ XPCDATA " "- _ -> do startToken- sl <- getSrcLocL- t <- if bol then lexBOL -- >>= \t -> trace ("BOL: " ++ show t) (return t)- else lexToken -- >>= \t -> trace (show t) (return t)- el <- getSrcLocL- return $ Loc (mkSrcSpan sl el) t--lexWhiteSpace :: Bool -> Lex a (Bool, Bool)-lexWhiteSpace bol = do- s <- getInput- case s of- -- If we find a recognised pragma, we don't want to treat it as a comment.- '{':'-':'#':rest | isRecognisedPragma rest -> return (bol, False)- '{':'-':_ -> do- loc <- getSrcLocL- discard 2- (bol, c) <- lexNestedComment bol ""- loc2 <- getSrcLocL- pushComment $ Comment True (mkSrcSpan loc loc2) (reverse c)- (bol, _) <- lexWhiteSpace bol- return (bol, True)- '-':'-':s | all (== '-') (takeWhile isHSymbol s) -> do- loc <- getSrcLocL- discard 2- dashes <- lexWhile (== '-')- rest <- lexWhile (/= '\n')- s' <- getInput- case s' of- [] -> fail "Unterminated end-of-line comment"- _ -> do- loc2 <- getSrcLocL- lexNewline >> pushComment (Comment False (mkSrcSpan loc loc2) $ dashes ++ rest)- lexWhiteSpace True- return (True, True)- '\n':_ -> do- lexNewline- lexWhiteSpace True- return (True, True)- '\t':_ -> do- lexTab- (bol, _) <- lexWhiteSpace bol- return (bol, True)- c:_ | isSpace c -> do- discard 1- (bol, _) <- lexWhiteSpace bol- return (bol, True)- _ -> return (bol, False)--isRecognisedPragma :: String -> Bool-isRecognisedPragma str = let pragma = map toLower . takeWhile isAlphaNum . dropWhile isSpace $ str- in case lookup pragma pragmas of- Nothing -> False- _ -> True--lexNestedComment :: Bool -> String -> Lex a (Bool, String)-lexNestedComment bol str = do- s <- getInput- case s of- '-':'}':_ -> discard 2 >> return (bol, str)- '{':'-':_ -> do- discard 2- (bol, c) <- lexNestedComment bol ("-{" ++ str) -- rest of the subcomment- lexNestedComment bol ("}-" ++ c ) -- rest of this comment- '\t':_ -> lexTab >> lexNestedComment bol ('\t':str)- '\n':_ -> lexNewline >> lexNestedComment True ('\n':str)- c:_ -> discard 1 >> lexNestedComment bol (c:str)- [] -> fail "Unterminated nested comment"---- When we are lexing the first token of a line, check whether we need to--- insert virtual semicolons or close braces due to layout.--lexBOL :: Lex a Token-lexBOL = do- pos <- getOffside- -- trace ("Off: " ++ (show pos)) $ do- case pos of- LT -> do- -- trace "layout: inserting '}'\n" $- -- Set col to 0, indicating that we're still at the- -- beginning of the line, in case we need a semi-colon too.- -- Also pop the context here, so that we don't insert- -- another close brace before the parser can pop it.- setBOL- popContextL "lexBOL"- return VRightCurly- EQ ->- -- trace "layout: inserting ';'\n" $- return SemiColon- GT -> lexToken--lexToken :: Lex a Token-lexToken = do- ec <- getExtContext- -- we don't bother to check XmlSyntax since we couldn't- -- have ended up in a non-Nothing context if it wasn't- -- enabled.- case ec of- Just HarpCtxt -> lexHarpToken- Just TagCtxt -> lexTagCtxt- Just CloseTagCtxt -> lexCloseTagCtxt- Just ChildCtxt -> lexChildCtxt- Just CodeTagCtxt -> lexCodeTagCtxt- _ -> lexStdToken---lexChildCtxt :: Lex a Token-lexChildCtxt = do- -- if we ever end up here, then XmlSyntax must be on.- s <- getInput- case s of- '<':'%':_ -> do discard 2- pushExtContextL CodeTagCtxt- return XCodeTagOpen- '<':'/':_ -> do discard 2- popExtContextL "lexChildCtxt"- pushExtContextL CloseTagCtxt- return XCloseTagOpen- '<':'[':_ -> do discard 2- pushExtContextL HarpCtxt- return XRPatOpen- '<':_ -> do discard 1- pushExtContextL TagCtxt- return XStdTagOpen- _ -> lexPCDATA---lexPCDATA :: Lex a Token-lexPCDATA = do- -- if we ever end up here, then XmlSyntax must be on.- s <- getInput- case s of- [] -> return EOF- _ -> case s of- '\n':_ -> do- x <- lexNewline >> lexPCDATA- case x of- XPCDATA p -> return $ XPCDATA $ '\n':p- EOF -> return EOF- '<':_ -> return $ XPCDATA ""- _ -> do let pcd = takeWhile (\c -> not $ elem c "<\n") s- l = length pcd- discard l- x <- lexPCDATA- case x of- XPCDATA pcd' -> return $ XPCDATA $ pcd ++ pcd'- EOF -> return EOF---lexCodeTagCtxt :: Lex a Token-lexCodeTagCtxt = do- -- if we ever end up here, then XmlSyntax must be on.- s <- getInput- case s of- '%':'>':_ -> do discard 2- popExtContextL "lexCodeTagContext"- return XCodeTagClose- _ -> lexStdToken--lexCloseTagCtxt :: Lex a Token-lexCloseTagCtxt = do- -- if we ever end up here, then XmlSyntax must be on.- s <- getInput- case s of- '>':_ -> do discard 1- popExtContextL "lexCloseTagCtxt"- return XStdTagClose- _ -> lexStdToken--lexTagCtxt :: Lex a Token-lexTagCtxt = do- -- if we ever end up here, then XmlSyntax must be on.- s <- getInput- case s of- '/':'>':_ -> do discard 2- popExtContextL "lexTagCtxt: Empty tag"- return XEmptyTagClose- '>':_ -> do discard 1- popExtContextL "lexTagCtxt: Standard tag"- pushExtContextL ChildCtxt- return XStdTagClose- _ -> lexStdToken--lexHarpToken :: Lex a Token-lexHarpToken = do- -- if we ever end up here, then RegularPatterns must be on.- s <- getInput- case s of- ']':'>':_ -> do discard 2- popExtContextL "lexHarpToken"- return XRPatClose- _ -> lexStdToken--lexStdToken :: Lex a Token-lexStdToken = do- s <- getInput- exts <- getExtensionsL- case s of- [] -> return EOF-- '0':c:d:_ | toLower c == 'o' && isOctDigit d -> do- discard 2- (n, str) <- lexOctal- return (IntTok (n, '0':c:str))- | toLower c == 'x' && isHexDigit d -> do- discard 2- (n, str) <- lexHexadecimal- return (IntTok (n, '0':c:str))-- -- implicit parameters- '?':c:_ | isLower c && ImplicitParams `elem` exts -> do- discard 1- id <- lexWhile isIdent- return $ IDupVarId id-- '%':c:_ | isLower c && ImplicitParams `elem` exts -> do- discard 1- id <- lexWhile isIdent- return $ ILinVarId id- -- end implicit parameters-- -- harp- '(':'|':c:_ | isHSymbol c -> discard 1 >> return LeftParen- '(':'|':_ | RegularPatterns `elem` exts ->- do discard 2- return RPGuardOpen- '|':')':_ | RegularPatterns `elem` exts ->- do discard 2- return RPGuardClose- {- This is handled by the reserved_ops above.- '@':':':_ | RegularPatterns `elem` exts ->- do discard 2- return RPCAt -}-- -- template haskell- '[':'|':_ | TemplateHaskell `elem` exts -> do- discard 2- return $ THExpQuote-- '[':c:'|':_ | c == 'e' && TemplateHaskell `elem` exts -> do- discard 3- return $ THExpQuote- | c == 'p' && TemplateHaskell `elem` exts -> do- discard 3- return THPatQuote- | c == 'd' && TemplateHaskell `elem` exts -> do- discard 3- return THDecQuote- | c == 't' && TemplateHaskell `elem` exts -> do- discard 3- return THTypQuote- '[':'$':c:_ | isLower c && QuasiQuotes `elem` exts ->- discard 2 >> lexQuasiQuote-- '|':']':_ | TemplateHaskell `elem` exts -> do- discard 2- return THCloseQuote-- '$':c:_ | isLower c && TemplateHaskell `elem` exts -> do- discard 1- id <- lexWhile isIdent- return $ THIdEscape id- | c == '(' && TemplateHaskell `elem` exts -> do- discard 2- return THParenEscape- -- end template haskell-- -- hsx- '<':'%':_ | XmlSyntax `elem` exts -> do- discard 2- pushExtContextL CodeTagCtxt- return XCodeTagOpen- '<':c:_ | isAlpha c && XmlSyntax `elem` exts -> do- discard 1- pushExtContextL TagCtxt- return XStdTagOpen- -- end hsx-- '(':'#':_ | UnboxedTuples `elem` exts -> do discard 2 >> return LeftHashParen-- '#':')':_ | UnboxedTuples `elem` exts -> do discard 2 >> return RightHashParen-- '{':'|':_ | Generics `elem` exts -> do discard 2 >> return LeftCurlyBar-- '|':'}':_ | Generics `elem` exts -> do discard 2 >> return RightCurlyBar-- -- pragmas-- '{':'-':'#':_ -> do discard 3 >> lexPragmaStart-- '#':'-':'}':_ -> do discard 3 >> return PragmaEnd-- c:_ | isDigit c -> lexDecimalOrFloat-- | isUpper c -> lexConIdOrQual ""-- | isLower c || c == '_' -> do- idents <- lexIdents- case idents of- [ident] -> case lookup ident (reserved_ids ++ special_varids) of- Just (keyword, scheme) -> do- -- check if an extension keyword is enabled- if isEnabled scheme exts- then flagKW keyword >> return keyword- else return $ VarId ident- Nothing -> return $ VarId ident- _ -> return $ DVarId idents-- | isHSymbol c -> do- sym <- lexWhile isHSymbol- return $ case lookup sym (reserved_ops ++ special_varops) of- Just (t , scheme) ->- -- check if an extension op is enabled- if isEnabled scheme exts- then t- else case c of- ':' -> ConSym sym- _ -> VarSym sym- Nothing -> case c of- ':' -> ConSym sym- _ -> VarSym sym-- | otherwise -> do- discard 1- case c of-- -- First the special symbols- '(' -> return LeftParen- ')' -> return RightParen- ',' -> return Comma- ';' -> return SemiColon- '[' -> return LeftSquare- ']' -> return RightSquare- '`' -> return BackQuote- '{' -> do- pushContextL NoLayout- return LeftCurly- '}' -> do- popContextL "lexStdToken"- return RightCurly-- '\'' -> lexCharacter- '"' -> lexString-- _ -> fail ("Illegal character \'" ++ show c ++ "\'\n")-- where lexIdents :: Lex a [String]- lexIdents = do- ident <- lexWhile isIdent- s <- getInput- exts <- getExtensionsL- case s of- -- This is the only way we can get more than one ident in the list- -- and it requires XmlSyntax to be on.- '-':c:_ | XmlSyntax `elem` exts && isAlpha c -> do- discard 1- idents <- lexIdents- return $ ident : idents- '#':_ | MagicHash `elem` exts -> do- discard 1- return [ident ++ "#"]- _ -> return [ident]-- lexQuasiQuote :: Lex a Token- lexQuasiQuote = do- -- We've seen and dropped [$ already- ident <- lexWhile isIdent- matchChar '|' "Malformed quasi-quote quoter"- body <- lexQQBody- return $ THQuasiQuote (ident, body)-- lexQQBody :: Lex a String- lexQQBody = do- s <- getInput- case s of- '\\':']':_ -> do str <- lexQQBody- return (']':str)- '\\':'|':_ -> do str <- lexQQBody- return ('|':str)- '|':']':_ -> discard 2 >> return ""- _ -> do str <- lexWhile (not . (`elem` "\\|"))- rest <- lexQQBody- return (str++rest)--lexPragmaStart :: Lex a Token-lexPragmaStart = do- lexWhile isSpace- pr <- lexWhile isAlphaNum- case lookup (map toLower pr) pragmas of- Just SPECIALISE -> do- s <- getInput- case dropWhile isSpace $ map toLower s of- 'i':'n':'l':'i':'n':'e':_ -> do- lexWhile isSpace- discard 6- return $ SPECIALISE_INLINE True- 'n':'o':'i':'n':'l':'i':'n':'e':_ -> do- lexWhile isSpace- discard 8- return $ SPECIALISE_INLINE False- 'n':'o':'t':'i':'n':'l':'i':'n':'e':_ -> do- lexWhile isSpace- discard 9- return $ SPECIALISE_INLINE False- _ -> return SPECIALISE-- Just (OPTIONS _) -> do -- see, I promised we'd mask out the 'undefined'- s <- getInput- case s of- '_':_ -> do- discard 1- com <- lexWhile isIdent- rest <- lexRawPragma- return $ OPTIONS (Just com, rest)- x:_ | isSpace x -> do- rest <- lexRawPragma- return $ OPTIONS (Nothing, rest)- _ -> fail "Malformed Options pragma"- Just (CFILES _) -> do- rest <- lexRawPragma- return $ CFILES rest- Just (INCLUDE _) -> do- rest <- lexRawPragma- return $ INCLUDE rest- Just p -> return p-- _ -> fail "Internal error: Unrecognised recognised pragma"- -- do rawStr <- lexRawPragma- -- return $ PragmaUnknown (pr, rawStr) -- no support for unrecognized pragmas, treat as comment- -- discard 3 -- #-}- -- topLexer -- we just discard it as a comment for now and restart -}--lexRawPragma :: Lex a String-lexRawPragma = do- rpr <- lexRawPragmaAux- return $ dropWhile isSpace rpr- where lexRawPragmaAux = do- rpr <- lexWhile (/='#')- s <- getInput- case s of- '#':'-':'}':_ -> return rpr- _ -> do- discard 1- rpr' <- lexRawPragma- return $ rpr ++ '#':rpr'--lexDecimalOrFloat :: Lex a Token-lexDecimalOrFloat = do- ds <- lexWhile isDigit- rest <- getInput- exts <- getExtensionsL- case rest of- ('.':d:_) | isDigit d -> do- discard 1- frac <- lexWhile isDigit- let num = parseInteger 10 (ds ++ frac)- decimals = toInteger (length frac)- (exponent, estr) <- do- rest2 <- getInput- case rest2 of- 'e':_ -> lexExponent- 'E':_ -> lexExponent- _ -> return (0,"")- con <- lexHash FloatTok FloatTokHash (Right DoubleTokHash)- return $ con ((num%1) * 10^^(exponent - decimals), ds ++ '.':frac ++ estr)- e:_ | toLower e == 'e' -> do- (exponent, estr) <- lexExponent- con <- lexHash FloatTok FloatTokHash (Right DoubleTokHash)- return $ con ((parseInteger 10 ds%1) * 10^^exponent, ds ++ estr)- '#':'#':_ | MagicHash `elem` exts -> discard 2 >> return (WordTokHash (parseInteger 10 ds, ds))- '#':_ | MagicHash `elem` exts -> discard 1 >> return (IntTokHash (parseInteger 10 ds, ds))- _ -> return (IntTok (parseInteger 10 ds, ds))-- where- lexExponent :: Lex a (Integer, String)- lexExponent = do- (e:r) <- getInput- discard 1 -- 'e' or 'E'- case r of- '+':d:_ | isDigit d -> do- discard 1- (n, str) <- lexDecimal- return (n, e:'+':str)- '-':d:_ | isDigit d -> do- discard 1- (n, str) <- lexDecimal- return (negate n, e:'-':str)- d:_ | isDigit d -> lexDecimal >>= \(n,str) -> return (n, e:str)- _ -> fail "Float with missing exponent"--lexHash :: (b -> Token) -> (b -> Token) -> Either String (b -> Token) -> Lex a (b -> Token)-lexHash a b c = do- exts <- getExtensionsL- if MagicHash `elem` exts- then do- r <- getInput- case r of- '#':'#':_ -> case c of- Right c -> discard 2 >> return c- Left s -> fail s- '#':_ -> discard 1 >> return b- _ -> return a- else return a--lexConIdOrQual :: String -> Lex a Token-lexConIdOrQual qual = do- con <- lexWhile isIdent- let conid | null qual = ConId con- | otherwise = QConId (qual,con)- qual' | null qual = con- | otherwise = qual ++ '.':con- just_a_conid <- alternative (return conid)- rest <- getInput- exts <- getExtensionsL- case rest of- '.':c:_- | isLower c || c == '_' -> do -- qualified varid?- discard 1- ident <- lexWhile isIdent- s <- getInput- exts <- getExtensionsL- ident' <- case s of- '#':_ | MagicHash `elem` exts -> discard 1 >> return (ident ++ "#")- _ -> return ident- case lookup ident' reserved_ids of- -- cannot qualify a reserved word- Just _ -> just_a_conid- Nothing -> return (QVarId (qual', ident'))-- | isUpper c -> do -- qualified conid?- discard 1- lexConIdOrQual qual'-- | isHSymbol c -> do -- qualified symbol?- discard 1- sym <- lexWhile isHSymbol- exts <- getExtensionsL- case lookup sym reserved_ops of- -- cannot qualify a reserved operator- Just (_,scheme) | isEnabled scheme exts -> just_a_conid- _ -> return $ case c of- ':' -> QConSym (qual', sym)- _ -> QVarSym (qual', sym)-- '#':c:_- | not (isHSymbol c) && not (isIdent c) && MagicHash `elem` exts -> do- discard 1- case conid of- ConId con -> return $ ConId $ con ++ "#"- QConId (q,con) -> return $ QConId (q,con ++ "#")- _ -> return conid -- not a qualified thing--lexCharacter :: Lex a Token-lexCharacter = do -- We need to keep track of not only character constants but also TH 'x and ''T- -- We've seen ' so far- s <- getInput- exts <- getExtensionsL- case s of- '\'':_ | TemplateHaskell `elem` exts -> discard 1 >> return THTyQuote- '\\':_ -> do- (c,raw) <- lexEscape- matchQuote- con <- lexHash Character CharacterHash- (Left "Double hash not available for character literals")- return (con (c, '\\':raw))- c:'\'':_ -> do- discard 2- con <- lexHash Character CharacterHash- (Left "Double hash not available for character literals")- return (con (c, [c]))- _ | TemplateHaskell `elem` exts -> return THVarQuote- _ -> fail "Improper character constant or misplaced \'"-- where matchQuote = matchChar '\'' "Improperly terminated character constant"---lexString :: Lex a Token-lexString = loop ("","")- where- loop (s,raw) = do- r <- getInput- exts <- getExtensionsL- case r of- '\\':'&':_ -> do- discard 2- loop (s, '&':'\\':raw)- '\\':c:_ | isSpace c -> do- discard 1- wcs <- lexWhiteChars- matchChar '\\' "Illegal character in string gap"- loop (s, '\\':reverse wcs ++ '\\':raw)- | otherwise -> do- (ce, str) <- lexEscape- loop (ce:s, reverse str ++ '\\':raw)- '"':'#':_ | MagicHash `elem` exts -> do- discard 2- return (StringHash (reverse s, reverse raw))- '"':_ -> do- discard 1- return (StringTok (reverse s, reverse raw))- c:_ -> do- discard 1- loop (c:s, c:raw)- [] -> fail "Improperly terminated string"-- lexWhiteChars :: Lex a String- lexWhiteChars = do- s <- getInput- case s of- '\n':_ -> do- lexNewline- wcs <- lexWhiteChars- return $ '\n':wcs- '\t':_ -> do- lexTab- wcs <- lexWhiteChars- return $ '\t':wcs- c:_ | isSpace c -> do- discard 1- wcs <- lexWhiteChars- return $ c:wcs- _ -> return ""--lexEscape :: Lex a (Char, String)-lexEscape = do- discard 1- r <- getInput- case r of---- Production charesc from section B.2 (Note: \& is handled by caller)-- 'a':_ -> discard 1 >> return ('\a', "a")- 'b':_ -> discard 1 >> return ('\b', "b")- 'f':_ -> discard 1 >> return ('\f', "f")- 'n':_ -> discard 1 >> return ('\n', "n")- 'r':_ -> discard 1 >> return ('\r', "r")- 't':_ -> discard 1 >> return ('\t', "t")- 'v':_ -> discard 1 >> return ('\v', "v")- '\\':_ -> discard 1 >> return ('\\', "\\")- '"':_ -> discard 1 >> return ('\"', "\"")- '\'':_ -> discard 1 >> return ('\'', "\'")---- Production ascii from section B.2-- '^':c:_ -> discard 2 >> cntrl c- 'N':'U':'L':_ -> discard 3 >> return ('\NUL', "NUL")- 'S':'O':'H':_ -> discard 3 >> return ('\SOH', "SOH")- 'S':'T':'X':_ -> discard 3 >> return ('\STX', "STX")- 'E':'T':'X':_ -> discard 3 >> return ('\ETX', "ETX")- 'E':'O':'T':_ -> discard 3 >> return ('\EOT', "EOT")- 'E':'N':'Q':_ -> discard 3 >> return ('\ENQ', "ENQ")- 'A':'C':'K':_ -> discard 3 >> return ('\ACK', "ACK")- 'B':'E':'L':_ -> discard 3 >> return ('\BEL', "BEL")- 'B':'S':_ -> discard 2 >> return ('\BS', "BS")- 'H':'T':_ -> discard 2 >> return ('\HT', "HT")- 'L':'F':_ -> discard 2 >> return ('\LF', "LF")- 'V':'T':_ -> discard 2 >> return ('\VT', "VT")- 'F':'F':_ -> discard 2 >> return ('\FF', "FF")- 'C':'R':_ -> discard 2 >> return ('\CR', "CR")- 'S':'O':_ -> discard 2 >> return ('\SO', "SO")- 'S':'I':_ -> discard 2 >> return ('\SI', "SI")- 'D':'L':'E':_ -> discard 3 >> return ('\DLE', "DLE")- 'D':'C':'1':_ -> discard 3 >> return ('\DC1', "DC1")- 'D':'C':'2':_ -> discard 3 >> return ('\DC2', "DC2")- 'D':'C':'3':_ -> discard 3 >> return ('\DC3', "DC3")- 'D':'C':'4':_ -> discard 3 >> return ('\DC4', "DC4")- 'N':'A':'K':_ -> discard 3 >> return ('\NAK', "NAK")- 'S':'Y':'N':_ -> discard 3 >> return ('\SYN', "SYN")- 'E':'T':'B':_ -> discard 3 >> return ('\ETB', "ETB")- 'C':'A':'N':_ -> discard 3 >> return ('\CAN', "CAN")- 'E':'M':_ -> discard 2 >> return ('\EM', "EM")- 'S':'U':'B':_ -> discard 3 >> return ('\SUB', "SUB")- 'E':'S':'C':_ -> discard 3 >> return ('\ESC', "ESC")- 'F':'S':_ -> discard 2 >> return ('\FS', "FS")- 'G':'S':_ -> discard 2 >> return ('\GS', "GS")- 'R':'S':_ -> discard 2 >> return ('\RS', "RS")- 'U':'S':_ -> discard 2 >> return ('\US', "US")- 'S':'P':_ -> discard 2 >> return ('\SP', "SP")- 'D':'E':'L':_ -> discard 3 >> return ('\DEL', "DEL")---- Escaped numbers-- 'o':c:_ | isOctDigit c -> do- discard 1- (n, raw) <- lexOctal- n <- checkChar n- return (n, 'o':raw)- 'x':c:_ | isHexDigit c -> do- discard 1- (n, raw) <- lexHexadecimal- n <- checkChar n- return (n, 'x':raw)- c:_ | isDigit c -> do- (n, raw) <- lexDecimal- n <- checkChar n- return (n, raw)-- _ -> fail "Illegal escape sequence"-- where- checkChar n | n <= 0x01FFFF = return (chr (fromInteger n))- checkChar _ = fail "Character constant out of range"---- Production cntrl from section B.2-- cntrl :: Char -> Lex a (Char, String)- cntrl c | c >= '@' && c <= '_' = return (chr (ord c - ord '@'), '^':c:[])- cntrl _ = fail "Illegal control character"---- assumes at least one octal digit-lexOctal :: Lex a (Integer, String)-lexOctal = do- ds <- lexWhile isOctDigit- return (parseInteger 8 ds, ds)---- assumes at least one hexadecimal digit-lexHexadecimal :: Lex a (Integer, String)-lexHexadecimal = do- ds <- lexWhile isHexDigit- return (parseInteger 16 ds, ds)---- assumes at least one decimal digit-lexDecimal :: Lex a (Integer, String)-lexDecimal = do- ds <- lexWhile isDigit- return (parseInteger 10 ds, ds)---- Stolen from Hugs's Prelude-parseInteger :: Integer -> String -> Integer-parseInteger radix ds =- foldl1 (\n d -> n * radix + d) (map (toInteger . digitToInt) ds)--flagKW :: Token -> Lex a ()-flagKW t = when (t `elem` [KW_Do, KW_MDo]) flagDo
− src/Language/Haskell/Exts/Annotated/ParseMonad.hs
@@ -1,405 +0,0 @@-{-# OPTIONS_HADDOCK hide #-}--------------------------------------------------------------------------------- |--- Module : Language.Haskell.Exts.ParseMonad--- Copyright : Niklas Broberg (c) 2004-2009,--- Original (c) The GHC Team, 1997-2000--- License : BSD-style (see the file libraries/base/LICENSE)------ Maintainer : Niklas Broberg, d00nibro@chalmers.se--- Stability : stable--- Portability : portable------ Monads for the Haskell parser and lexer.-----------------------------------------------------------------------------------module Language.Haskell.Exts.Annotated.ParseMonad(- -- * Parsing- P, ParseResult(..), atSrcLoc, LexContext(..),- ParseMode(..), defaultParseMode, fromParseResult,- runParserWithMode, runParserWithModeComments, runParser,- getSrcLoc, pushCurrentContext, popContext,- getExtensions,- -- * Lexing- Lex(runL), getInput, discard, lexNewline, lexTab, lexWhile,- alternative, checkBOL, setBOL, startToken, getOffside,- pushContextL, popContextL, getExtensionsL, pushComment, getSrcLocL,- -- * Harp/Hsx- ExtContext(..),- pushExtContextL, popExtContextL, getExtContext,- pullCtxtFlag, flagDo,- getModuleName- ) where--import Language.Haskell.Exts.Annotated.SrcLoc(SrcLoc(..))-import Language.Haskell.Exts.Annotated.Fixity (Fixity, preludeFixities)-import Language.Haskell.Exts.Annotated.Comments-import Language.Haskell.Exts.Extension (Extension)--import Data.List ( intersperse )-import Control.Applicative-import Control.Monad (when)-import Data.Monoid---- | The result of a parse.-data ParseResult a- = ParseOk a -- ^ The parse succeeded, yielding a value.- | ParseFailed SrcLoc String- -- ^ The parse failed at the specified- -- source location, with an error message.- deriving Show---- | Retrieve the result of a successful parse, throwing an--- error if the parse is actually not successful.-fromParseResult :: ParseResult a -> a-fromParseResult (ParseOk a) = a-fromParseResult (ParseFailed loc str) = error $ "fromParseResult: Parse failed at ("- ++ show (srcLine loc) ++ ":" ++ show (srcColumn loc) ++ "): " ++ str--instance Functor ParseResult where- fmap f (ParseOk x) = ParseOk $ f x- fmap f (ParseFailed loc msg) = ParseFailed loc msg--instance Applicative ParseResult where- pure = ParseOk- ParseOk f <*> x = f <$> x- ParseFailed loc msg <*> _ = ParseFailed loc msg--instance Monad ParseResult where- return = ParseOk- ParseOk x >>= f = f x- ParseFailed loc msg >>= _ = ParseFailed loc msg--instance Monoid m => Monoid (ParseResult m) where- mempty = ParseOk mempty- ParseOk x `mappend` ParseOk y = ParseOk $ x `mappend` y- ParseOk x `mappend` err = err- err `mappend` _ = err -- left-biased----- internal version-data ParseStatus a = Ok ParseState a | Failed SrcLoc String- deriving Show--data LexContext = NoLayout | Layout Int- deriving (Eq,Ord,Show)--data ExtContext = CodeCtxt | HarpCtxt | TagCtxt | ChildCtxt- | CloseTagCtxt | CodeTagCtxt- deriving (Eq,Ord,Show)--type CtxtFlag = (Bool,Bool)--- (True,_) = We're in a do context.--- (_, True)= Next token must be a virtual closing brace.--type ParseState = ([LexContext],[ExtContext],CtxtFlag,[Comment])--indentOfParseState :: ParseState -> Int-indentOfParseState (Layout n:_,_,_,_) = n-indentOfParseState _ = 0---- | Static parameters governing a parse.--- Note that the various parse functions in "Language.Haskell.Exts.Parser"--- never look at LANGUAGE pragmas, regardless of--- what the @ignoreLanguagePragmas@ flag is set to.--- Only the various @parseFile@ functions in "Language.Haskell.Exts" will--- act on it, when set to 'False'.--data ParseMode = ParseMode {- -- | original name of the file being parsed- parseFilename :: String,- -- | list of extensions enabled for parsing- extensions :: [Extension],- -- | if 'True', the parser won't care about further extensions- -- in LANGUAGE pragmas in source files- ignoreLanguagePragmas :: Bool,- -- | list of fixities to be aware of- fixities :: [Fixity]- }---- | Default parameters for a parse.--- The default is an unknown filename,--- no extensions (i.e. Haskell 98),--- don't ignore LANGUAGE pragmas,--- and be aware of fixities from the 'Prelude'.-defaultParseMode :: ParseMode-defaultParseMode = ParseMode {- parseFilename = "<unknown>.hs",- extensions = [],- ignoreLanguagePragmas = False,- fixities = preludeFixities- }---- | Monad for parsing--newtype P a = P { runP ::- String -- input string- -> Int -- current column- -> Int -- current line- -> SrcLoc -- location of last token read- -> ParseState -- layout info.- -> ParseMode -- parse parameters- -> ParseStatus a- }--runParserWithMode :: ParseMode -> P a -> String -> ParseResult a-runParserWithMode mode (P m) s = case m s 0 1 start ([],[],(False,False),[]) mode of- Ok _ a -> ParseOk a- Failed loc msg -> ParseFailed loc msg- where start = SrcLoc {- srcFilename = parseFilename mode,- srcLine = 1,- srcColumn = 1- }--runParser :: P a -> String -> ParseResult a-runParser = runParserWithMode defaultParseMode--runParserWithModeComments :: ParseMode -> P a -> String -> ParseResult (a, [Comment])-runParserWithModeComments mode (P m) s = case m s 0 1 start ([],[],(False,False),[]) mode of- Ok (_,_,_,cs) a -> ParseOk (a, reverse cs)- Failed loc msg -> ParseFailed loc msg- where start = SrcLoc {- srcFilename = parseFilename mode,- srcLine = 1,- srcColumn = 1- }--instance Monad P where- return a = P $ \_i _x _y _l s _m -> Ok s a- P m >>= k = P $ \i x y l s mode ->- case m i x y l s mode of- Failed loc msg -> Failed loc msg- Ok s' a -> runP (k a) i x y l s' mode- fail s = P $ \_r _col _line loc _stk _m -> Failed loc s--atSrcLoc :: P a -> SrcLoc -> P a-P m `atSrcLoc` loc = P $ \i x y _l -> m i x y loc--getSrcLoc :: P SrcLoc-getSrcLoc = P $ \_i _x _y l s _m -> Ok s l--getModuleName :: P String-getModuleName = P $ \_i _x _y _l s m ->- let fn = parseFilename m- mn = concat $ intersperse "." $ splitPath fn-- splitPath :: String -> [String]- splitPath "" = []- splitPath str = let (l,str') = break ('\\'==) str- in case str' of- [] -> [removeSuffix l]- (_:str'') -> l : splitPath str''-- removeSuffix l = reverse $ tail $ dropWhile ('.'/=) $ reverse l-- in Ok s mn---- Enter a new layout context. If we are already in a layout context,--- ensure that the new indent is greater than the indent of that context.--- (So if the source loc is not to the right of the current indent, an--- empty list {} will be inserted.)--pushCurrentContext :: P ()-pushCurrentContext = do- lc <- getSrcLoc- indent <- currentIndent- dob <- pullDoStatus- let loc = srcColumn lc- when (dob && loc < indent- || not dob && loc <= indent) $ pushCtxtFlag- pushContext (Layout loc)--currentIndent :: P Int-currentIndent = P $ \_r _x _y loc stk _mode -> Ok stk (indentOfParseState stk)--pushContext :: LexContext -> P ()-pushContext ctxt =---trace ("pushing lexical scope: " ++ show ctxt ++"\n") $- P $ \_i _x _y _l (s, e, p, c) _m -> Ok (ctxt:s, e, p, c) ()--popContext :: P ()-popContext = P $ \_i _x _y _l stk _m ->- case stk of- (_:s, e, p, c) -> --trace ("popping lexical scope, context now "++show s ++ "\n") $- Ok (s, e, p, c) ()- ([],_,_,_) -> error "Internal error: empty context in popContext"----- HaRP/Hsx-pushExtContext :: ExtContext -> P ()-pushExtContext ctxt = P $ \_i _x _y _l (s, e, p, c) _m -> Ok (s, ctxt:e, p, c) ()--popExtContext :: P ()-popExtContext = P $ \_i _x _y _l (s, e, p, c) _m ->- case e of- (_:e') ->- Ok (s, e', p, c) ()- [] -> error "Internal error: empty context in popExtContext"----- Extension-aware lexing/parsing-getExtensions :: P [Extension]-getExtensions = P $ \_i _x _y _l s m ->- Ok s $ extensions m--pushCtxtFlag :: P ()-pushCtxtFlag =- P $ \_i _x _y _l (s, e, (d,c), cs) _m -> case c of- False -> Ok (s, e, (d,True), cs) ()- _ -> error "Internal error: context flag already pushed"--pullDoStatus :: P Bool-pullDoStatus = P $ \_i _x _y _l (s, e, (d,c), cs) _m -> Ok (s,e,(False,c),cs) d---------------------------------------------------------------------------------- Monad for lexical analysis:--- a continuation-passing version of the parsing monad--newtype Lex r a = Lex { runL :: (a -> P r) -> P r }--instance Monad (Lex r) where- return a = Lex $ \k -> k a- Lex v >>= f = Lex $ \k -> v (\a -> runL (f a) k)- Lex v >> Lex w = Lex $ \k -> v (\_ -> w k)- fail s = Lex $ \_ -> fail s---- Operations on this monad--getInput :: Lex r String-getInput = Lex $ \cont -> P $ \r -> runP (cont r) r---- | Discard some input characters (these must not include tabs or newlines).--discard :: Int -> Lex r ()-discard n = Lex $ \cont -> P $ \r x -> runP (cont ()) (drop n r) (x+n)---- | Discard the next character, which must be a newline.--lexNewline :: Lex a ()-lexNewline = Lex $ \cont -> P $ \(_:r) _x y -> runP (cont ()) r 1 (y+1)---- | Discard the next character, which must be a tab.--lexTab :: Lex a ()-lexTab = Lex $ \cont -> P $ \(_:r) x -> runP (cont ()) r (nextTab x)--nextTab :: Int -> Int-nextTab x = x + (tAB_LENGTH - (x-1) `mod` tAB_LENGTH)--tAB_LENGTH :: Int-tAB_LENGTH = 8 :: Int---- Consume and return the largest string of characters satisfying p--lexWhile :: (Char -> Bool) -> Lex a String-lexWhile p = Lex $ \cont -> P $ \r x ->- let (cs,rest) = span p r in- runP (cont cs) rest (x + length cs)---- An alternative scan, to which we can return if subsequent scanning--- is unsuccessful.--alternative :: Lex a v -> Lex a (Lex a v)-alternative (Lex v) = Lex $ \cont -> P $ \r x y ->- runP (cont (Lex $ \cont' -> P $ \_r _x _y ->- runP (v cont') r x y)) r x y---- The source location is the coordinates of the previous token,--- or, while scanning a token, the start of the current token.---- col is the current column in the source file.--- We also need to remember between scanning tokens whether we are--- somewhere at the beginning of the line before the first token.--- This could be done with an extra Bool argument to the P monad,--- but as a hack we use a col value of 0 to indicate this situation.---- Setting col to 0 is used in two places: just after emitting a virtual--- close brace due to layout, so that next time through we check whether--- we also need to emit a semi-colon, and at the beginning of the file,--- by runParser, to kick off the lexer.--- Thus when col is zero, the true column can be taken from the loc.--checkBOL :: Lex a Bool-checkBOL = Lex $ \cont -> P $ \r x y loc ->- if x == 0 then runP (cont True) r (srcColumn loc) y loc- else runP (cont False) r x y loc--setBOL :: Lex a ()-setBOL = Lex $ \cont -> P $ \r _ -> runP (cont ()) r 0---- Set the loc to the current position--startToken :: Lex a ()-startToken = Lex $ \cont -> P $ \s x y _ stk mode ->- let loc = SrcLoc {- srcFilename = parseFilename mode,- srcLine = y,- srcColumn = x- } in- runP (cont ()) s x y loc stk mode---- Current status with respect to the offside (layout) rule:--- LT: we are to the left of the current indent (if any)--- EQ: we are at the current indent (if any)--- GT: we are to the right of the current indent, or not subject to layout--getOffside :: Lex a Ordering-getOffside = Lex $ \cont -> P $ \r x y loc stk ->- runP (cont (compare x (indentOfParseState stk))) r x y loc stk--getSrcLocL :: Lex a SrcLoc-getSrcLocL = Lex $ \cont -> P $ \i x y l ->- runP (cont (l { srcLine = y, srcColumn = x })) i x y l--pushContextL :: LexContext -> Lex a ()-pushContextL ctxt = Lex $ \cont -> P $ \r x y loc (stk, e, pst, cs) ->- runP (cont ()) r x y loc (ctxt:stk, e, pst, cs)--popContextL :: String -> Lex a ()-popContextL fn = Lex $ \cont -> P $ \r x y loc stk -> case stk of- (_:ctxt, e, pst, cs) -> runP (cont ()) r x y loc (ctxt, e, pst, cs)- ([], _, _, _) -> error ("Internal error: empty context in " ++ fn)--pullCtxtFlag :: Lex a Bool-pullCtxtFlag = Lex $ \cont -> P $ \r x y loc (ct, e, (d,c), cs) ->- runP (cont c) r x y loc (ct, e, (d,False), cs)---flagDo :: Lex a ()-flagDo = Lex $ \cont -> P $ \r x y loc (ct, e, (d,c), cs) ->- runP (cont ()) r x y loc (ct, e, (True,c), cs)----- Harp/Hsx--getExtContext :: Lex a (Maybe ExtContext)-getExtContext = Lex $ \cont -> P $ \r x y loc stk@(_, e, _, _) ->- let me = case e of- [] -> Nothing- (c:_) -> Just c- in runP (cont me) r x y loc stk--pushExtContextL :: ExtContext -> Lex a ()-pushExtContextL ec = Lex $ \cont -> P $ \r x y loc (s, e, p, c) ->- runP (cont ()) r x y loc (s, ec:e, p, c)--popExtContextL :: String -> Lex a ()-popExtContextL fn = Lex $ \cont -> P $ \r x y loc stk@(s,e,p,c) -> case e of- (_:ec) -> runP (cont ()) r x y loc (s,ec,p,c)- [] -> error ("Internal error: empty tag context in " ++ fn)----- Extension-aware lexing--getExtensionsL :: Lex a [Extension]-getExtensionsL = Lex $ \cont -> P $ \r x y loc s m ->- runP (cont $ extensions m) r x y loc s m---- Comments--pushComment :: Comment -> Lex a ()-pushComment c = Lex $ \cont -> P $ \r x y loc (s, e, p, cs) ->- runP (cont ()) r x y loc (s, e, p, c:cs)
− src/Language/Haskell/Exts/Annotated/ParseUtils.hs
@@ -1,1301 +0,0 @@-{-# OPTIONS_HADDOCK hide #-}--------------------------------------------------------------------------------- |--- Module : Language.Haskell.Exts.ParseUtils--- Copyright : (c) Niklas Broberg 2004,--- (c) The GHC Team, 1997-2000--- License : BSD-style (see the file LICENSE.txt)------ Maintainer : Niklas Broberg, d00nibro@chalmers.se--- Stability : stable--- Portability : portable------ Utilities for the Haskell-exts parser.-----------------------------------------------------------------------------------module Language.Haskell.Exts.Annotated.ParseUtils (- splitTyConApp -- PType -> P (Name,[Type])- , checkEnabled -- (Show e, Enabled e) => e -> P ()- , checkPatternGuards -- [Stmt] -> P ()- , mkRecConstrOrUpdate -- PExp -> [PFieldUpdate] -> P Exp- , checkPrec -- Integer -> P Int- , checkPContext -- PType -> P PContext- , checkContext -- PContext -> P Context- , checkAssertion -- PType -> P PAsst- , checkDataHeader -- PType -> P (Context,Name,[TyVarBind])- , checkClassHeader -- PType -> P (Context,Name,[TyVarBind])- , checkInstHeader -- PType -> P (Context,QName,[Type])- , checkDeriving -- [PType] -> P [Deriving]- , checkPattern -- PExp -> P Pat- , checkExpr -- PExp -> P Exp- , checkType -- PType -> P Type- , checkValDef -- SrcLoc -> PExp -> Maybe Type -> Rhs -> Binds -> P Decl- , checkClassBody -- [ClassDecl] -> P [ClassDecl]- , checkInstBody -- [InstDecl] -> P [InstDecl]- , checkUnQual -- QName -> P Name- , checkRevDecls -- [Decl] -> P [Decl]- , checkRevClsDecls -- [ClassDecl] -> P [ClassDecl]- , checkRevInstDecls -- [InstDecl] -> P [InstDecl]- , checkDataOrNew -- DataOrNew -> [a] -> P ()- , checkSimpleType -- PType -> P (Name, [TyVarBind])- , checkSigVar -- PExp -> P Name- , getGConName -- S.Exp -> P QName- , mkTyForall -- Maybe [TyVarBind] -> PContext -> PType -> PType- -- HaRP- , checkRPattern -- PExp -> P RPat- -- Hsx- , checkEqNames -- XName -> XName -> P XName- , checkPageModule- , checkHybridModule--- , mkPageModule -- [OptionPragma] -> Exp -> P Module--- , mkPage -- Module -> SrcLoc -> Exp -> P Module- , mkDVar -- [String] -> String--- , mkDVarExpr -- [String] -> PExp- -- Pragmas- , checkRuleExpr -- PExp -> P Exp- , readTool -- Maybe String -> Maybe Tool-- -- Parsed expressions and types- , PExp(..), PFieldUpdate(..), ParseXAttr(..), PType(..), PContext, PAsst(..)- , p_unit_con -- PExp- , p_tuple_con -- Boxed -> Int -> PExp- , p_unboxed_singleton_con -- PExp- ) where--import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) )-import qualified Language.Haskell.Exts.Annotated.Syntax as S ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) )-import Language.Haskell.Exts.Annotated.SrcLoc-import Language.Haskell.Exts.Annotated.ParseMonad-import Language.Haskell.Exts.Annotated.Pretty-import Language.Haskell.Exts.Annotated.Build-import Language.Haskell.Exts.Extension-import Language.Haskell.Exts.ExtScheme--import Data.List (intersperse)-import Data.Maybe (fromJust)-import Control.Monad (when,liftM)----- import Debug.Trace (trace)--type L = SrcSpanInfo-type S = SrcSpan--splitTyConApp :: PType L -> P (Name L, [S.Type L])-splitTyConApp t0 = do- (n, pts) <- split t0 []- ts <- mapM checkType pts- return (n,ts)- where- split :: PType L -> [PType L] -> P (Name L, [PType L])- split (TyApp _ t u) ts = split t (u:ts)- split (TyCon _ (UnQual _ t)) ts = return (t,ts)- split (TyInfix l a op b) ts = split (TyCon l op) (a:b:ts)- split _ _ = fail "Illegal data/newtype declaration"---------------------------------------------------------------------------------- Checking for extensions--checkEnabled :: (Show e, Enabled e) => e -> P ()-checkEnabled e = do- exts <- getExtensions- if isEnabled e exts- then return ()- else fail $ show e ++ " is not enabled"--checkPatternGuards :: [Stmt L] -> P ()-checkPatternGuards [Qualifier _ _] = return ()-checkPatternGuards _ = checkEnabled PatternGuards---------------------------------------------------------------------------------- Checking contexts---- Check that a context is syntactically correct. Takes care of--- checking for MPTCs, TypeOperators, TypeFamilies (for eq constraints)--- and ImplicitParameters, but leaves checking of the class assertion--- parameters for later.-checkPContext :: PType L -> P (PContext L)-checkPContext (TyTuple l Boxed ts) =- mapM checkAssertion ts >>= return . CxTuple l-checkPContext (TyCon l (Special _ (UnitCon _))) =- return $ CxEmpty l-checkPContext (TyParen l t) = do- c <- checkPContext t- return $ CxParen l c-checkPContext t = do- c <- checkAssertion t- return $ CxSingle (ann c) c--------------------------------------------------------------------------------------------------------------------- WORKING HERE---- Check a single assertion according to the above, still leaving--- the class assertion parameters for later.-checkAssertion :: PType L -> P (PAsst L)--- We cannot even get here unless ImplicitParameters is enabled.-checkAssertion (TyPred _ p@(IParam _ _ _)) = return p--- We cannot even get here unless TypeFamilies is enabled.-checkAssertion (TyPred _ p@(EqualP _ _ _)) = return p-checkAssertion t = checkAssertion' id [] t- where -- class assertions must have at least one argument- checkAssertion' fl ts@(_:xs) (TyCon l c) = do- when (not $ null xs) $ checkEnabled MultiParamTypeClasses- when (isSymbol c) $ checkEnabled TypeOperators- return $ ClassA (fl l) c ts- checkAssertion' fl ts (TyApp l a t) = do- -- no check on t at this stage- checkAssertion' (const (fl l)) (t:ts) a- checkAssertion' fl ts (TyInfix l a op b) = do- -- infix operators require TypeOperators- checkEnabled TypeOperators- return $ InfixA (fl l) a op b- checkAssertion' fl ts (TyParen l t) =- checkAssertion' (const (fl l)) ts t- checkAssertion' _ _ _ = fail "Illegal class assertion"--isSymbol :: QName L -> Bool-isSymbol (UnQual _ (Symbol _ _)) = True-isSymbol (Qual _ _ (Symbol _ _)) = True-isSymbol _ = False----- Checks simple contexts for class and instance--- headers. If FlexibleContexts is enabled then--- anything goes, otherwise only tyvars are allowed.-checkSContext :: Maybe (PContext L) -> P (Maybe (S.Context L))-checkSContext (Just ctxt) = case ctxt of- CxEmpty l -> return $ Just $ S.CxEmpty l- CxSingle l a -> checkAsst True a >>= return . Just . S.CxSingle l- CxTuple l as -> mapM (checkAsst True) as >>= return . Just . S.CxTuple l- CxParen l cx -> checkSContext (Just cx) >>= return . fmap (S.CxParen l)-checkSContext _ = return Nothing---- Checks ordinary contexts for sigtypes and data type--- declarations. If FlexibleContexts is enabled then--- anything goes, otherwise only tyvars OR tyvars--- applied to types are allowed.-checkContext :: Maybe (PContext L) -> P (Maybe (S.Context L))-checkContext (Just ctxt) = case ctxt of- CxEmpty l -> return $ Just $ S.CxEmpty l- CxSingle l a -> checkAsst False a >>= return . Just . S.CxSingle l- CxTuple l as -> mapM (checkAsst False) as >>= return . Just . S.CxTuple l- CxParen l cx -> checkSContext (Just cx) >>= return . fmap (S.CxParen l)-checkContext _ = return Nothing--checkAsst :: Bool -> PAsst L -> P (S.Asst L)-checkAsst isSimple asst =- case asst of- ClassA l qn pts -> do- ts <- mapM (checkAsstParam isSimple) pts- return $ S.ClassA l qn ts- InfixA l a op b -> do- [a,b] <- mapM (checkAsstParam isSimple) [a,b]- return $ S.InfixA l a op b- IParam l ipn pt -> do- t <- checkType pt- return $ S.IParam l ipn t- EqualP l pa pb -> do- a <- checkType pa- b <- checkType pb- return $ S.EqualP l a b--checkAsstParam :: Bool -> PType L -> P (S.Type L)-checkAsstParam isSimple t = do- exts <- getExtensions- if FlexibleContexts `elem` exts- then checkType t- else case t of- TyVar l n -> return $ S.TyVar l n- TyApp l pf pt | not isSimple -> do- f <- checkAsstParam isSimple pf- t <- checkType pt- return $ S.TyApp l f t- _ -> fail "Malformed context: FlexibleContexts not enabled"---------------------------------------------------------------------------------- Checking Headers---checkDataHeader :: PType L -> P (Maybe (S.Context L), DeclHead L)-checkDataHeader (TyForall _ Nothing cs t) = do- dh <- checkSimple "data/newtype" t []- cs <- checkContext cs- return (cs,dh)-checkDataHeader t = do- dh <- checkSimple "data/newtype" t []- return (Nothing,dh)--checkClassHeader :: PType L -> P (Maybe (S.Context L), DeclHead L)-checkClassHeader (TyForall _ Nothing cs t) = do- dh <- checkSimple "class" t []- cs <- checkSContext cs- return (cs,dh)-checkClassHeader t = do- dh <- checkSimple "class" t []- return (Nothing,dh)--checkSimple :: String -> PType L -> [TyVarBind L] -> P (DeclHead L)-checkSimple kw (TyApp _ l t) xs | isTyVarBind t = checkSimple kw l (toTyVarBind t : xs)-checkSimple _ (TyInfix l t1 (UnQual _ t) t2) []- | isTyVarBind t1 && isTyVarBind t2 =- checkEnabled TypeOperators >> return (DHInfix l (toTyVarBind t1) t (toTyVarBind t2))-checkSimple _kw (TyCon l (UnQual _ t)) xs = do- case t of- Symbol _ _ -> checkEnabled TypeOperators- _ -> return ()- return (DHead l t xs)-checkSimple kw (TyParen l t) xs = do- dh <- checkSimple kw t xs- return (DHParen l dh)-checkSimple kw _ _ = fail ("Illegal " ++ kw ++ " declaration")--isTyVarBind :: PType L -> Bool-isTyVarBind (TyVar _ _) = True-isTyVarBind (TyKind _ (TyVar _ _) _) = True-isTyVarBind _ = False--toTyVarBind :: PType L -> TyVarBind L-toTyVarBind (TyVar l n) = UnkindedVar l n-toTyVarBind (TyKind l (TyVar _ n) k) = KindedVar l n k--checkInstHeader :: PType L -> P (Maybe (S.Context L), InstHead L)-checkInstHeader (TyForall _ Nothing cs t) = do- ih <- checkInsts t []- cs <- checkSContext cs- return (cs, ih)-checkInstHeader t = do- ih <- checkInsts t []- return (Nothing, ih)---checkInsts :: PType L -> [PType L] -> P (InstHead L)-checkInsts (TyApp _ l t) ts = checkInsts l (t:ts)-checkInsts (TyCon l c) ts = do- when (isSymbol c) $ checkEnabled TypeOperators- ts <- checkTypes ts- return $ IHead l c ts-checkInsts (TyInfix l a op b) [] = do- checkEnabled TypeOperators- [ta,tb] <- checkTypes [a,b]- return $ IHInfix l ta op tb-checkInsts (TyParen l t) [] = checkInsts t [] >>= return . IHParen l-checkInsts _ _ = fail "Illegal instance declaration"--checkDeriving :: [PType L] -> P [InstHead L]-checkDeriving = mapM (flip checkInsts [])---------------------------------------------------------------------------------- Checking Patterns.---- We parse patterns as expressions and check for valid patterns below,--- converting the expression into a pattern at the same time.--checkPattern :: PExp L -> P (Pat L)-checkPattern e = checkPat e []--checkPat :: PExp L -> [Pat L] -> P (Pat L)-checkPat (Con l c) args = return (PApp l c args)-checkPat (App l f x) args = do- x <- checkPat x []- checkPat f (x:args)-checkPat (InfixApp _ l op r) args- | op =~= (QVarOp () (UnQual () (Symbol () "!"))) = do- -- We must have BangPatterns on- checkEnabled BangPatterns- let (e,es) = splitBang r []- ps <- mapM checkPattern (BangPat (ann op) e:es)- checkPat l (ps++args)-checkPat e [] = case e of- Var l (UnQual _ x) -> return (PVar l x)- Lit l lit -> return (PLit l lit)- InfixApp loc l op r ->- case op of- QConOp _ c -> do- l <- checkPat l []- r <- checkPat r []- return (PInfixApp loc l c r)- QVarOp ppos (UnQual _ (Symbol _ "+")) -> do- case (l,r) of- (Var _ (UnQual _ n@(Ident _ _)), Lit _ (Int kpos k _)) -> do- let pp = srcInfoSpan ppos- kp = srcInfoSpan kpos- return (PNPlusK (loc <** [pp,kp]) n k)- _ -> patFail ""- _ -> patFail ""- TupleSection l mes ->- if not (any ((=~=) Nothing) mes)- then do ps <- mapM (\e -> checkPat e []) (map fromJust mes)- return (PTuple l ps)- else fail "Illegal tuple section in pattern"-- List l es -> do- ps <- mapM checkRPattern es- if all isStdPat ps- then return . PList l $ map stripRP ps- -- we don't allow truly regular patterns unless the extension is enabled- else checkEnabled RegularPatterns >> return (PRPat l $ map fixRPOpPrec ps)- where isStdPat :: RPat L -> Bool- isStdPat (RPPat _ _) = True- isStdPat (RPAs _ _ p) = isStdPat p- isStdPat (RPParen _ p) = isStdPat p- isStdPat _ = False- stripRP :: RPat L -> Pat L- stripRP (RPPat _ p) = p- stripRP (RPAs l n p) = PAsPat l n (stripRP p)- stripRP (RPParen l p) = PParen l (stripRP p)- stripRP _ = error "cannot strip RP wrapper if not all patterns are base"-- Paren l e -> do- p <- checkPat e []- return (PParen l p)- AsPat l n e -> do- p <- checkPat e []- return (PAsPat l n p)- WildCard l -> return (PWildCard l)- IrrPat l e -> do- p <- checkPat e []- return (PIrrPat l p)- ViewPat l e p -> do- e <- checkExpr e- p <- checkPat p []- return (PViewPat l e p)- RecConstr l c fs -> do- fs <- mapM checkPatField fs- return (PRec l c fs)- NegApp l1 (Lit l2 lit) -> return (PNeg l1 (PLit l2 lit))- ExpTypeSig l e t -> do- -- patterns cannot have signatures unless ScopedTypeVariables is enabled.- checkEnabled ScopedTypeVariables- p <- checkPat e []- return (PatTypeSig l p t)-- -- Hsx- XTag l n attrs mattr cs -> do- pattrs <- mapM checkPAttr attrs- pcs <- mapM (\c -> checkPat c []) cs- mpattr <- maybe (return Nothing)- (\e -> do p <- checkPat e []- return $ Just p)- mattr- let cps = mkChildrenPat pcs- return $ PXTag l n pattrs mpattr cps- XETag l n attrs mattr -> do- pattrs <- mapM checkPAttr attrs- mpattr <- maybe (return Nothing)- (\e -> do p <- checkPat e []- return $ Just p)- mattr- return $ PXETag l n pattrs mpattr- XPcdata l pcdata -> return $ PXPcdata l pcdata- XExpTag l e -> do- p <- checkPat e []- return $ PXPatTag l p- XRPats l es -> do- rps <- mapM checkRPattern es- return (PXRPats l $ map fixRPOpPrec rps)-- -- Generics- ExplTypeArg l qn t -> return $ PExplTypeArg l qn t-- -- QuasiQuotation- QuasiQuote l n q -> return $ PQuasiQuote l n q-- -- BangPatterns- BangPat l e -> do- p <- checkPat e []- return $ PBangPat l p-- PreOp l (QVarOp _ (UnQual _ (Symbol _ "!"))) e -> do- checkEnabled BangPatterns- p <- checkPat e []- return $ PBangPat l p-- e -> patFail $ show e--checkPat e _ = patFail $ show e--splitBang :: PExp L -> [PExp L] -> (PExp L, [PExp L])-splitBang (App _ f x) es = splitBang f (x:es)-splitBang e es = (e, es)--checkPatField :: PFieldUpdate L -> P (PatField L)-checkPatField (FieldUpdate l n e) = do- p <- checkPat e []- return (PFieldPat l n p)-checkPatField (FieldPun l n) = return (PFieldPun l n)-checkPatField (FieldWildcard l) = return (PFieldWildcard l)--checkPAttr :: ParseXAttr L -> P (PXAttr L)-checkPAttr (XAttr l n v) = do p <- checkPat v []- return $ PXAttr l n p--patFail :: String -> P a-patFail s = fail $ "Parse error in pattern: " ++ s--checkRPattern :: PExp L -> P (RPat L)-checkRPattern e = case e of- SeqRP l es -> do- rps <- mapM checkRPattern es- return $ RPSeq l rps- PostOp l e op -> do- rpop <- checkRPatOp op- rp <- checkRPattern e- return $ RPOp l rp rpop- GuardRP l e gs -> do- rp <- checkPattern e- return $ RPGuard l rp gs- EitherRP l e1 e2 -> do- rp1 <- checkRPattern e1- rp2 <- checkRPattern e2- return $ RPEither l rp1 rp2- CAsRP l n e -> do- rp <- checkRPattern e- return $ RPCAs l n rp- AsPat l n e -> do- rp <- checkRPattern e- return $ RPAs l n rp- Paren l e -> do- rp <- checkRPattern e- return $ RPParen l rp- _ -> do- p <- checkPattern e- return $ RPPat (ann p) p--checkRPatOp :: QOp L -> P (RPatOp L)-checkRPatOp o@(QVarOp l (UnQual _ (Symbol _ sym))) =- case sym of- "*" -> return $ RPStar l- "*!" -> return $ RPStarG l- "+" -> return $ RPPlus l- "+!" -> return $ RPPlusG l- "?" -> return $ RPOpt l- "?!" -> return $ RPOptG l- _ -> rpOpFail o-checkRPatOp o = rpOpFail o--rpOpFail sym = fail $ "Unrecognized regular pattern operator: " ++ show sym--fixRPOpPrec :: RPat L -> RPat L-fixRPOpPrec rp = case rp of- RPOp l rp rpop -> fPrecOp rp (flip (RPOp l) rpop)- RPEither l rp1 rp2 -> RPEither l (fixRPOpPrec rp1) (fixRPOpPrec rp2)- RPSeq l rps -> RPSeq l $ map fixRPOpPrec rps- RPCAs l n rp -> RPCAs l n $ fixRPOpPrec rp- RPAs l n rp -> RPAs l n $ fixRPOpPrec rp- RPParen l rp -> RPParen l $ fixRPOpPrec rp- _ -> rp-- where fPrecOp :: RPat L -> (RPat L -> RPat L) -> RPat L- fPrecOp (RPOp l rp rpop) f = fPrecOp rp (f . flip (RPOp l) rpop)- fPrecOp (RPCAs l n rp) f = fPrecAs rp f (RPCAs l n)- fPrecOp (RPAs l n rp) f = fPrecAs rp f (RPAs l n)- fPrecOp rp f = f $ fixRPOpPrec rp- fPrecAs :: RPat L -> (RPat L -> RPat L) -> (RPat L -> RPat L) -> RPat L- fPrecAs (RPCAs l n rp) f g = fPrecAs rp f (g . RPCAs l n)- fPrecAs (RPAs l n rp) f g = fPrecAs rp f (g . RPAs l n)- fPrecAs rp f g = g . f $ fixRPOpPrec rp---mkChildrenPat :: [Pat L] -> [Pat L]-mkChildrenPat ps = mkCPAux ps []- where mkCPAux :: [Pat L] -> [Pat L] -> [Pat L]- mkCPAux [] qs = reverse qs- mkCPAux (p:ps) qs = case p of- (PRPat l rps) -> [mkCRP l ps (reverse rps ++ map (\q -> RPPat (ann q) q) qs)]- _ -> mkCPAux ps (p:qs)-- mkCRP :: L -> [Pat L] -> [RPat L] -> Pat L- mkCRP l [] rps = PXRPats l $ reverse rps- mkCRP _ (p:ps) rps = case p of- (PXRPats l rqs) -> mkCRP l ps (reverse rqs ++ rps)- _ -> mkCRP (ann p) ps (RPPat (ann p) p : rps)---------------------------------------------------------------------------------- Check Expression Syntax--checkExpr :: PExp L -> P (S.Exp L)-checkExpr e = case e of- Var l v -> return $ S.Var l v- IPVar l v -> return $ S.IPVar l v- Con l c -> return $ S.Con l c- Lit l lit -> return $ S.Lit l lit- InfixApp l e1 op e2 -> check2Exprs e1 e2 (flip (S.InfixApp l) op)- App l e1 e2 -> check2Exprs e1 e2 (S.App l)- NegApp l e -> check1Expr e (S.NegApp l)- Lambda loc ps e -> check1Expr e (S.Lambda loc ps)- Let l bs e -> check1Expr e (S.Let l bs)- If l e1 e2 e3 -> check3Exprs e1 e2 e3 (S.If l)- Case l e alts -> do- e <- checkExpr e- return (S.Case l e alts)- Do l stmts -> checkDo stmts >> return (S.Do l stmts)- MDo l stmts -> checkDo stmts >> return (S.MDo l stmts)- TupleSection l mes -> if not (any ((=~=) Nothing) mes)- then checkManyExprs (map fromJust mes) (S.Tuple l)- else do checkEnabled TupleSections- mes' <- mapM mCheckExpr mes- return $ S.TupleSection l mes'--- List l es -> checkManyExprs es (S.List l)- -- Since we don't parse things as left or right sections, we need to mangle them into that.- Paren l e -> case e of- PostOp _ e1 op -> check1Expr e1 (flip (S.LeftSection l) op)- PreOp _ op e2 -> check1Expr e2 (S.RightSection l op)- _ -> check1Expr e (S.Paren l)- RecConstr l c fields -> do- fields <- mapM checkField fields- return (S.RecConstr l c fields)- RecUpdate l e fields -> do- fields <- mapM checkField fields- e <- checkExpr e- return (S.RecUpdate l e fields)- EnumFrom l e -> check1Expr e (S.EnumFrom l)- EnumFromTo l e1 e2 -> check2Exprs e1 e2 (S.EnumFromTo l)- EnumFromThen l e1 e2 -> check2Exprs e1 e2 (S.EnumFromThen l)- EnumFromThenTo l e1 e2 e3 -> check3Exprs e1 e2 e3 (S.EnumFromThenTo l)- -- a parallel list comprehension, which could be just a simple one- ParComp l e qualss -> do- e <- checkExpr e- case qualss of- [quals] -> return (S.ListComp l e quals)- _ -> return (S.ParComp l e qualss)- ExpTypeSig loc e ty -> do- e <- checkExpr e- return (S.ExpTypeSig loc e ty)-- --Template Haskell- BracketExp l e -> return $ S.BracketExp l e- SpliceExp l e -> return $ S.SpliceExp l e- TypQuote l q -> return $ S.TypQuote l q- VarQuote l q -> return $ S.VarQuote l q- QuasiQuote l n q -> return $ S.QuasiQuote l n q-- -- Hsx- XTag l n attrs mattr cs -> do attrs <- mapM checkAttr attrs- cs <- mapM checkExpr cs- mattr <- maybe (return Nothing)- (\e -> checkExpr e >>= return . Just)- mattr- return $ S.XTag l n attrs mattr cs- XETag l n attrs mattr -> do attrs <- mapM checkAttr attrs- mattr <- maybe (return Nothing)- (\e -> checkExpr e >>= return . Just)- mattr- return $ S.XETag l n attrs mattr- XPcdata l p -> return $ S.XPcdata l p- XExpTag l e -> do e <- checkExpr e- return $ S.XExpTag l e- -- Pragmas- CorePragma l s e -> check1Expr e (S.CorePragma l s)- SCCPragma l s e -> check1Expr e (S.SCCPragma l s)- GenPragma l s xx yy e -> check1Expr e (S.GenPragma l s xx yy)--- UnknownExpPragma n s -> return $ S.UnknownExpPragma n s-- -- Arrows- Proc l p e -> do e <- checkExpr e- return $ S.Proc l p e- LeftArrApp l e1 e2 -> check2Exprs e1 e2 (S.LeftArrApp l)- RightArrApp l e1 e2 -> check2Exprs e1 e2 (S.RightArrApp l)- LeftArrHighApp l e1 e2 -> check2Exprs e1 e2 (S.LeftArrHighApp l)- RightArrHighApp l e1 e2 -> check2Exprs e1 e2 (S.RightArrHighApp l)-- _ -> fail $ "Parse error in expression: " ++ show e--checkAttr :: ParseXAttr L -> P (S.XAttr L)-checkAttr (XAttr l n v) = do v <- checkExpr v- return $ S.XAttr l n v--checkDo [] = error "Parse error: Last statement in a do-block must be an expression"-checkDo [Qualifier _ _] = return ()-checkDo (_:xs) = checkDo xs---- type signature for polymorphic recursion!!-check1Expr :: PExp L -> (S.Exp L -> a) -> P a-check1Expr e1 f = do- e1 <- checkExpr e1- return (f e1)--check2Exprs :: PExp L -> PExp L -> (S.Exp L -> S.Exp L -> a) -> P a-check2Exprs e1 e2 f = do- e1 <- checkExpr e1- e2 <- checkExpr e2- return (f e1 e2)--check3Exprs :: PExp L -> PExp L -> PExp L -> (S.Exp L -> S.Exp L -> S.Exp L -> a) -> P a-check3Exprs e1 e2 e3 f = do- e1 <- checkExpr e1- e2 <- checkExpr e2- e3 <- checkExpr e3- return (f e1 e2 e3)--checkManyExprs :: [PExp L] -> ([S.Exp L] -> a) -> P a-checkManyExprs es f = do- es <- mapM checkExpr es- return (f es)--mCheckExpr :: Maybe (PExp L) -> P (Maybe (S.Exp L))-mCheckExpr Nothing = return Nothing-mCheckExpr (Just e) = checkExpr e >>= return . Just--checkRuleExpr :: PExp L -> P (S.Exp L)-checkRuleExpr = checkExpr--readTool :: Maybe String -> Maybe Tool-readTool = fmap readC- where readC str = case str of- "GHC" -> GHC- "HUGS" -> HUGS- "NHC98" -> NHC98- "YHC" -> YHC- "HADDOCK" -> HADDOCK- _ -> UnknownTool str--checkField :: PFieldUpdate L -> P (S.FieldUpdate L)-checkField (FieldUpdate l n e) = check1Expr e (S.FieldUpdate l n)-checkField (FieldPun l n) = return $ S.FieldPun l n-checkField (FieldWildcard l) = return $ S.FieldWildcard l--getGConName :: S.Exp L -> P (QName L)-getGConName (S.Con _ n) = return n-getGConName (S.List l []) = return (list_cons_name l)-getGConName _ = fail "Expression in reification is not a name"---------------------------------------------------------------------------------- Check Equation Syntax--checkValDef :: L -> PExp L -> Maybe (S.Type L) -> Rhs L -> Maybe (Binds L) -> P (Decl L)-checkValDef l lhs optsig rhs whereBinds = do- mlhs <- isFunLhs lhs []- case mlhs of- Just (f,es,b) -> do- ps <- mapM checkPattern es- case optsig of -- only pattern bindings can have signatures- Nothing -> return (FunBind l $- if b then [Match l f ps rhs whereBinds]- else let [a,b] = ps in [InfixMatch l a f b rhs whereBinds])- Just _ -> fail "Cannot give an explicit type signature to a function binding"- Nothing -> do- lhs <- checkPattern lhs- return (PatBind l lhs optsig rhs whereBinds)---- A variable binding is parsed as a PatBind.--isFunLhs :: PExp L -> [PExp L] -> P (Maybe (Name L, [PExp L], Bool))-isFunLhs (InfixApp _ l (QVarOp loc (UnQual _ op)) r) es- | op =~= (Symbol () "!") = do- exts <- getExtensions- if BangPatterns `elem` exts- then let (b,bs) = splitBang r []- in isFunLhs l (BangPat loc b : bs ++ es)- else return $ Just (op, l:r:es, False) -- It's actually a definition of the operator !- | otherwise = return $ Just (op, l:r:es, False)-isFunLhs (App _ (Var _ (UnQual _ f)) e) es = return $ Just (f, e:es, True)-isFunLhs (App _ f e) es = isFunLhs f (e:es)-isFunLhs (Var _ (UnQual _ f)) es@(_:_) = return $ Just (f, es, True)-isFunLhs (Paren _ f) es@(_:_) = isFunLhs f es-isFunLhs _ _ = return Nothing---- Separating between signature declarations and value definitions in--- a post-processing step--checkSigVar :: PExp L -> P (Name L)-checkSigVar (Var _ (UnQual _ n)) = return n-checkSigVar e = fail $ "Left-hand side of type signature is not a variable: " ++ show e---------------------------------------------------------------------------------- In a class or instance body, a pattern binding must be of a variable.--checkClassBody :: [ClassDecl L] -> P [ClassDecl L]-checkClassBody decls = do- mapM_ checkClassMethodDef decls- return decls- where checkClassMethodDef (ClsDecl _ decl) = checkMethodDef decl- checkClassMethodDef _ = return ()--checkInstBody :: [InstDecl L] -> P [InstDecl L]-checkInstBody decls = do- mapM_ checkInstMethodDef decls- return decls- where checkInstMethodDef (InsDecl _ decl) = checkMethodDef decl- checkInstMethodDef _ = return ()--checkMethodDef :: Decl L -> P ()-checkMethodDef (PatBind _ (PVar _ _) _ _ _) = return ()-checkMethodDef (PatBind loc _ _ _ _) =- fail "illegal method definition" -- `atSrcLoc` loc-checkMethodDef _ = return ()---------------------------------------------------------------------------------- Check that an identifier or symbol is unqualified.--- For occasions when doing this in the grammar would cause conflicts.--checkUnQual :: QName L -> P (Name L)-checkUnQual (Qual _ _ _) = fail "Illegal qualified name"-checkUnQual (UnQual _ n) = return n-checkUnQual (Special _ _) = fail "Illegal special name"---------------------------------------------------------------------------------- Check that two xml tag names are equal--- Could use Eq directly, but I am not sure whether <dom:name>...</name>--- would be valid, in that case Eq won't work. TODO--checkEqNames :: XName L -> XName L -> P (XName L)-checkEqNames n@(XName _ n1) (XName _ n2)- | n1 == n2 = return n- | otherwise = fail "names in matching xml tags are not equal"-checkEqNames n@(XDomName _ d1 n1) (XDomName _ d2 n2)- | n1 == n2 && d1 == d2 = return n- | otherwise = fail "names in matching xml tags are not equal"-checkEqNames _ _ = fail "names in matching xml tags are not equal"----------------------------------------------------------------------------------- Miscellaneous utilities--checkPrec :: Integer -> P Int-checkPrec i | 0 <= i && i <= 9 = return (fromInteger i)-checkPrec i | otherwise = fail ("Illegal precedence " ++ show i)--mkRecConstrOrUpdate :: PExp L -> [PFieldUpdate L] -> P (PExp L)-mkRecConstrOrUpdate (Con l c) fs = return (RecConstr l c fs)-mkRecConstrOrUpdate e fs@(_:_) = return (RecUpdate (ann e) e fs)-mkRecConstrOrUpdate _ _ = fail "Empty record update"---------------------------------------------------------------------------------- Reverse a list of declarations, merging adjacent FunBinds of the--- same name and checking that their arities match.--checkRevDecls :: [Decl L] -> P [Decl L]-checkRevDecls = mergeFunBinds []- where- mergeFunBinds revDs [] = return revDs- mergeFunBinds revDs (FunBind l ms1@(Match _ name ps _ _:_):ds1) =- mergeMatches ms1 ds1 l- where- arity = length ps- mergeMatches ms' (FunBind _ ms@(Match loc name' ps' _ _:_):ds) l- | name' =~= name =- if length ps' /= arity- then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")- -- `atSrcLoc` loc- else mergeMatches (ms++ms') ds (loc <++> l)- mergeMatches ms' ds l = mergeFunBinds (FunBind l ms':revDs) ds- mergeFunBinds revDs (d:ds) = mergeFunBinds (d:revDs) ds--checkRevClsDecls :: [ClassDecl L] -> P [ClassDecl L]-checkRevClsDecls = mergeClsFunBinds []- where- mergeClsFunBinds revDs [] = return revDs- mergeClsFunBinds revDs (ClsDecl l (FunBind _ ms1@(Match _ name ps _ _:_)):ds1) =- mergeMatches ms1 ds1 l- where- arity = length ps- mergeMatches ms' (ClsDecl _ (FunBind _ ms@(Match loc name' ps' _ _:_)):ds) l- | name' =~= name =- if length ps' /= arity- then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")- -- `atSrcLoc` loc- else mergeMatches (ms++ms') ds (loc <++> l)- mergeMatches ms' ds l = mergeClsFunBinds (ClsDecl l (FunBind l ms'):revDs) ds- mergeClsFunBinds revDs (d:ds) = mergeClsFunBinds (d:revDs) ds--checkRevInstDecls :: [InstDecl L] -> P [InstDecl L]-checkRevInstDecls = mergeInstFunBinds []- where- mergeInstFunBinds :: [InstDecl L] -> [InstDecl L] -> P [InstDecl L]- mergeInstFunBinds revDs [] = return revDs- mergeInstFunBinds revDs (InsDecl l (FunBind _ ms1@(Match _ name ps _ _:_)):ds1) =- mergeMatches ms1 ds1 l- where- arity = length ps- mergeMatches ms' (InsDecl _ (FunBind _ ms@(Match loc name' ps' _ _:_)):ds) l- | name' =~= name =- if length ps' /= arity- then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")- -- `atSrcLoc` loc- else mergeMatches (ms++ms') ds (loc <++> l)- mergeMatches ms' ds l = mergeInstFunBinds (InsDecl l (FunBind l ms'):revDs) ds- mergeInstFunBinds revDs (d:ds) = mergeInstFunBinds (d:revDs) ds--------------------------------------------------------------------- Check that newtype declarations have--- the right number (1) of constructors--checkDataOrNew :: DataOrNew L -> [a] -> P ()-checkDataOrNew (NewType _) [x] = return ()-checkDataOrNew (DataType _) _ = return ()-checkDataOrNew _ _ = fail "newtype declaration must have exactly one constructor."--checkSimpleType :: PType L -> P (DeclHead L)-checkSimpleType t = checkSimple "test" t []-------------------------------------------- Check actual types--checkType :: PType L -> P (S.Type L)-checkType t = checkT t False--checkT :: PType L -> Bool -> P (S.Type L)-checkT t simple = case t of- TyForall l tvs@Nothing cs pt -> do- when (simple) $ checkEnabled ExplicitForall- ctxt <- checkContext cs- check1Type pt (S.TyForall l Nothing ctxt)- TyForall l tvs cs pt -> do- checkEnabled ExplicitForall- ctxt <- checkContext cs- check1Type pt (S.TyForall l tvs ctxt)- TyFun l at rt -> check2Types at rt (S.TyFun l)- TyTuple l b pts -> checkTypes pts >>= return . S.TyTuple l b- TyList l pt -> check1Type pt (S.TyList l)- TyApp l ft at -> check2Types ft at (S.TyApp l)- TyVar l n -> return $ S.TyVar l n- TyCon l n -> do- when (isSymbol n) $ checkEnabled TypeOperators- return $ S.TyCon l n- TyParen l pt -> check1Type pt (S.TyParen l)- -- TyPred cannot be a valid type- -- Here we know that t will be used as an actual type (and not a data constructor)- -- so we can check that TypeOperators are enabled.- TyInfix l at op bt -> checkEnabled TypeOperators >> check2Types at bt (flip (S.TyInfix l) op)- TyKind l pt k -> check1Type pt (flip (S.TyKind l) k)--check1Type :: PType L -> (S.Type L -> S.Type L) -> P (S.Type L)-check1Type pt f = checkT pt True >>= return . f--check2Types :: PType L -> PType L -> (S.Type L -> S.Type L -> S.Type L) -> P (S.Type L)-check2Types at bt f = checkT at True >>= \a -> checkT bt True >>= \b -> return (f a b)--checkTypes :: [PType L] -> P [S.Type L]-checkTypes = mapM (flip checkT True)-------------------------------------------- Converting a complete page--checkPageModule :: PExp L -> ([OptionPragma L],[S],L) -> P (Module L)-checkPageModule xml (os,ss,inf) = do- xml <- checkExpr xml- case xml of- S.XTag l xn ats mattr cs -> return $ XmlPage (inf<++>l<**(srcInfoPoints l ++ ss)) os xn ats mattr cs- S.XETag l xn ats mattr -> return $ XmlPage (inf<++>l<**(srcInfoPoints l ++ ss)) os xn ats mattr []--checkHybridModule :: PExp L -> Module L -> S -> S -> P (Module L)-checkHybridModule xml (Module inf mh os is ds) s1 s2 = do- xml <- checkExpr xml- case xml of- S.XTag l xn ats mattr cs -> return $ XmlHybrid (inf<++>l<**(s1 : srcInfoPoints inf ++ s2 : srcInfoPoints l))- mh os is ds xn ats mattr cs- S.XETag l xn ats mattr -> return $ XmlHybrid (inf<++>l<**(s1 : srcInfoPoints inf ++ s2 : srcInfoPoints l))- mh os is ds xn ats mattr []--{--pageFun :: L -> S.Exp L -> Decl L-pageFun loc e = PatBind loc namePat Nothing rhs Nothing- where namePat = PVar loc $ Ident loc "page"- rhs = UnGuardedRhs (ann e) e--mkPage :: Module L -> L -> S.Exp L -> P (Module L)-mkPage (Module src mmh os imps decls) loc xml = do- let page = pageFun loc xml- return $ Module src mmh os imps (decls ++ [page])--mkPageModule :: [OptionPragma L] -> S.Exp L -> P (Module L)-mkPageModule os xml = do- do loc <- case xml of- S.XTag l _ _ _ _ -> return l- S.XETag l _ _ _ -> return l- _ -> fail "Will not happen since mkPageModule is only called on XML expressions"- mod <- getModuleName- return $ (Module- loc- (ModuleName loc mod)- os- Nothing- (Just (ExportSpecList loc [EVar loc $ UnQual loc $ Ident loc "page"]))- []- [pageFun loc xml])--}------------------------------------------- Handle dash-identifiers--mkDVar :: [String] -> String-mkDVar = concat . intersperse "-"----mkDVarExpr :: L -> [String] -> PExp L---mkDVarExpr l = foldl1 (\x y -> InfixApp l x (op $ sym "-") y) . map (Var l . UnQual l . name)-------------------------------------------- Combine adjacent for-alls. NO!------ A valid type must have one for-all at the top of the type, or of the fn arg types--mkTyForall :: L -> Maybe [TyVarBind L] -> Maybe (PContext L) -> PType L -> PType L---mkTyForall l mtvs (PContext _ []) ty = mk_forall_ty l mtvs ty-mkTyForall l mtvs ctxt ty = TyForall l mtvs ctxt ty--{-- mk_forall_ty makes a pure for-all type (no context)-mk_forall_ty l (Just []) ty = ty -- Explicit for-all with no tyvars-mk_forall_ty l mtvs1 (TyForall _ mtvs2 ctxt ty) = mkTyForall l (mtvs1 `plus` mtvs2) ctxt ty-mk_forall_ty l mtvs1 ty = TyForall l mtvs1 (PContext l []) ty--mtvs1 `plus` Nothing = mtvs1-Nothing `plus` mtvs2 = mtvs2-(Just tvs1) `plus` (Just tvs2) = Just (tvs1 ++ tvs2)--}------------------------------------------- Expressions as we parse them (and patters, and regular patterns)--data PExp l- = Var l (QName l) -- ^ variable- | IPVar l (IPName l) -- ^ implicit parameter variable- | Con l (QName l) -- ^ data constructor- | Lit l (Literal l) -- ^ literal constant- | InfixApp l (PExp l) (QOp l) (PExp l) -- ^ infix application- | App l (PExp l) (PExp l) -- ^ ordinary application- | NegApp l (PExp l) -- ^ negation expression @-@ /exp/- | Lambda l [Pat l] (PExp l) -- ^ lambda expression- | Let l (Binds l) (PExp l) -- ^ local declarations with @let@- | If l (PExp l) (PExp l) (PExp l) -- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/- | Case l (PExp l) [Alt l] -- ^ @case@ /exp/ @of@ /alts/- | Do l [Stmt l] -- ^ @do@-expression:- -- the last statement in the list- -- should be an expression.- | MDo l [Stmt l] -- ^ @mdo@-expression--- | Tuple [PExp] -- ^ tuple expression- | TupleSection l [Maybe (PExp l)] -- ^ tuple section expression, e.g. @(,,3)@- | List l [PExp l] -- ^ list expression- | Paren l (PExp l) -- ^ parenthesized expression--- RightSection QOp PExp -- ^ right section @(@/qop/ /exp/@)@- | RecConstr l (QName l) [PFieldUpdate l]- -- ^ record construction expression- | RecUpdate l (PExp l) [PFieldUpdate l]- -- ^ record update expression- | EnumFrom l (PExp l) -- ^ unbounded arithmetic sequence,- -- incrementing by 1- | EnumFromTo l (PExp l) (PExp l) -- ^ bounded arithmetic sequence,- -- incrementing by 1- | EnumFromThen l (PExp l) (PExp l) -- ^ unbounded arithmetic sequence,- -- with first two elements given- | EnumFromThenTo l (PExp l) (PExp l) (PExp l)- -- ^ bounded arithmetic sequence,- -- with first two elements given- | ParComp l (PExp l) [[QualStmt l]] -- ^ parallel list comprehension- | ExpTypeSig l (PExp l) (S.Type l)- -- ^ expression type signature- | AsPat l (Name l) (PExp l) -- ^ patterns only- | WildCard l -- ^ patterns only- | IrrPat l (PExp l) -- ^ patterns only---- Post-ops for parsing left sections and regular patterns. Not to be left in the final tree.- | PostOp l (PExp l) (QOp l) -- ^ post-ops- | PreOp l (QOp l) (PExp l) -- ^ pre-ops---- View patterns- | ViewPat l (PExp l) (PExp l) -- ^ patterns only---- HaRP- | SeqRP l [PExp l] -- ^ regular patterns only- | GuardRP l (PExp l) [Stmt l] -- ^ regular patterns only- | EitherRP l (PExp l) (PExp l) -- ^ regular patterns only- | CAsRP l (Name l) (PExp l) -- ^ regular patterns only---- Template Haskell- | VarQuote l (QName l) -- ^ 'x- | TypQuote l (QName l) -- ^ ''T- | BracketExp l (Bracket l)- | SpliceExp l (Splice l)- | QuasiQuote l String String -- ^ [$...|...]---- Hsx- | XTag l (XName l) [ParseXAttr l] (Maybe (PExp l)) [PExp l]- | XETag l (XName l) [ParseXAttr l] (Maybe (PExp l))- | XPcdata l String- | XExpTag l (PExp l)- | XRPats l [PExp l]---- Pragmas- | CorePragma l String (PExp l)- | SCCPragma l String (PExp l)- | GenPragma l String (Int, Int) (Int, Int) (PExp l)--- | UnknownExpPragma String String---- Generics- | ExplTypeArg l (QName l) (S.Type l) -- ^ f {| Int |} x = ...---- Bang Patterns- | BangPat l (PExp l) -- ^ f !a = ...---- Arrows- | Proc l (Pat l) (PExp l)- | LeftArrApp l (PExp l) (PExp l)- | RightArrApp l (PExp l) (PExp l)- | LeftArrHighApp l (PExp l) (PExp l)- | RightArrHighApp l (PExp l) (PExp l)- deriving (Eq,Show)--data PFieldUpdate l- = FieldUpdate l (QName l) (PExp l)- | FieldPun l (Name l)- | FieldWildcard l- deriving (Eq,Show)--data ParseXAttr l = XAttr l (XName l) (PExp l)- deriving (Eq,Show)--instance Annotated PExp where- ann e = case e of- Var l qn -> l- IPVar l ipn -> l- Con l qn -> l- Lit l lit -> l- InfixApp l e1 qop e2 -> l- App l e1 e2 -> l- NegApp l e -> l- Lambda l ps e -> l- Let l bs e -> l- If l ec et ee -> l- Case l e alts -> l- Do l ss -> l- MDo l ss -> l- TupleSection l mes -> l- List l es -> l- Paren l e -> l- RecConstr l qn fups -> l- RecUpdate l e fups -> l- EnumFrom l e -> l- EnumFromTo l ef et -> l- EnumFromThen l ef et -> l- EnumFromThenTo l ef eth eto -> l- ParComp l e qsss -> l- ExpTypeSig l e t -> l- AsPat l n e -> l- WildCard l -> l- IrrPat l e -> l- PostOp l e op -> l- PreOp l op e -> l- ViewPat l e1 e2 -> l- SeqRP l es -> l- GuardRP l e ss -> l- EitherRP l e1 e2 -> l- CAsRP l n e -> l-- VarQuote l qn -> l- TypQuote l qn -> l- BracketExp l br -> l- SpliceExp l sp -> l- QuasiQuote l sn se -> l-- XTag l xn xas me es -> l- XETag l xn xas me -> l- XPcdata l s -> l- XExpTag l e -> l- XRPats l es -> l-- CorePragma l s e -> l- SCCPragma l s e -> l- GenPragma l s n12 n34 e -> l-- ExplTypeArg l qn t -> l- BangPat l e -> l-- Proc l p e -> l- LeftArrApp l e1 e2 -> l- RightArrApp l e1 e2 -> l- LeftArrHighApp l e1 e2 -> l- RightArrHighApp l e1 e2 -> l-- amap f e = case e of- Var l qn -> Var (f l) qn- IPVar l ipn -> IPVar (f l) ipn- Con l qn -> Con (f l) qn- Lit l lit -> Lit (f l) lit- InfixApp l e1 qop e2 -> InfixApp (f l) e1 qop e2- App l e1 e2 -> App (f l) e1 e2- NegApp l e -> NegApp (f l) e- Lambda l ps e -> Lambda (f l) ps e- Let l bs e -> Let (f l) bs e- If l ec et ee -> If (f l) ec et ee- Case l e alts -> Case (f l) e alts- Do l ss -> Do (f l) ss- MDo l ss -> MDo (f l) ss- TupleSection l mes -> TupleSection (f l) mes- List l es -> List (f l) es- Paren l e -> Paren (f l) e- RecConstr l qn fups -> RecConstr (f l) qn fups- RecUpdate l e fups -> RecUpdate (f l) e fups- EnumFrom l e -> EnumFrom (f l) e- EnumFromTo l ef et -> EnumFromTo (f l) ef et- EnumFromThen l ef et -> EnumFromThen (f l) ef et- EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) ef eth eto- ParComp l e qsss -> ParComp (f l) e qsss- ExpTypeSig l e t -> ExpTypeSig (f l) e t-- AsPat l n e -> AsPat (f l) n e- WildCard l -> WildCard (f l)- IrrPat l e -> IrrPat (f l) e- PostOp l e op -> PostOp (f l) e op- PreOp l op e -> PreOp (f l) op e- ViewPat l e1 e2 -> ViewPat (f l) e1 e2- SeqRP l es -> SeqRP (f l) es- GuardRP l e ss -> GuardRP (f l) e ss- EitherRP l e1 e2 -> EitherRP (f l) e1 e2- CAsRP l n e -> CAsRP (f l) n e- ExplTypeArg l n t -> ExplTypeArg (f l) n t- BangPat l e -> BangPat (f l) e-- VarQuote l qn -> VarQuote (f l) qn- TypQuote l qn -> TypQuote (f l) qn- BracketExp l br -> BracketExp (f l) br- SpliceExp l sp -> SpliceExp (f l) sp- QuasiQuote l sn se -> QuasiQuote (f l) sn se-- XTag l xn xas me es -> XTag (f l) xn xas me es- XETag l xn xas me -> XETag (f l) xn xas me- XPcdata l s -> XPcdata (f l) s- XExpTag l e -> XExpTag (f l) e-- CorePragma l s e -> CorePragma (f l) s e- SCCPragma l s e -> SCCPragma (f l) s e- GenPragma l s n12 n34 e -> GenPragma (f l) s n12 n34 e-- Proc l p e -> Proc (f l) p e- LeftArrApp l e1 e2 -> LeftArrApp (f l) e1 e2- RightArrApp l e1 e2 -> RightArrApp (f l) e1 e2- LeftArrHighApp l e1 e2 -> LeftArrHighApp (f l) e1 e2- RightArrHighApp l e1 e2 -> RightArrHighApp (f l) e1 e2---instance Annotated PFieldUpdate where- ann (FieldUpdate l qn e) = l- ann (FieldPun l n) = l- ann (FieldWildcard l) = l- amap f (FieldUpdate l qn e) = FieldUpdate (f l) qn e- amap f (FieldPun l n) = FieldPun (f l) n- amap f (FieldWildcard l) = FieldWildcard (f l)--instance Annotated ParseXAttr where- ann (XAttr l _ _) = l- amap f (XAttr l xn e) = XAttr (f l) xn e--p_unit_con :: l -> PExp l-p_unit_con l = Con l (unit_con_name l)--p_tuple_con :: l -> Boxed -> Int -> PExp l-p_tuple_con l b i = Con l (tuple_con_name l b i)--p_unboxed_singleton_con :: l -> PExp l-p_unboxed_singleton_con l = Con l (unboxed_singleton_con_name l)--data PContext l- = CxSingle l (PAsst l)- | CxTuple l [PAsst l]- | CxParen l (PContext l)- | CxEmpty l- deriving (Eq, Show)--instance Functor PContext where- fmap f (CxSingle l asst) = CxSingle (f l) (fmap f asst)- fmap f (CxTuple l assts) = CxTuple (f l) (map (fmap f) assts)- fmap f (CxParen l ctxt) = CxParen (f l) (fmap f ctxt)- fmap f (CxEmpty l) = CxEmpty (f l)--instance Annotated PContext where- ann (CxSingle l asst ) = l- ann (CxTuple l assts) = l- ann (CxParen l ctxt ) = l- ann (CxEmpty l) = l- amap f (CxSingle l asst ) = CxSingle (f l) asst- amap f (CxTuple l assts) = CxTuple (f l) assts- amap f (CxParen l ctxt ) = CxParen (f l) ctxt- amap f (CxEmpty l) = CxEmpty (f l)--data PType l- = TyForall l- (Maybe [TyVarBind l])- (Maybe (PContext l))- (PType l)- | TyFun l (PType l) (PType l) -- ^ function type- | TyTuple l Boxed [PType l] -- ^ tuple type, possibly boxed- | TyList l (PType l) -- ^ list syntax, e.g. [a], as opposed to [] a- | TyApp l (PType l) (PType l) -- ^ application of a type constructor- | TyVar l (Name l) -- ^ type variable- | TyCon l (QName l) -- ^ named type or type constructor- | TyParen l (PType l) -- ^ type surrounded by parentheses- | TyPred l (PAsst l) -- ^ assertion of an implicit parameter- | TyInfix l (PType l) (QName l) (PType l) -- ^ infix type constructor- | TyKind l (PType l) (Kind l) -- ^ type with explicit kind signature- deriving (Eq, Show)--instance Functor PType where- fmap f t = case t of- TyForall l mtvs mcx t -> TyForall (f l) (fmap (map (fmap f)) mtvs) (fmap (fmap f) mcx) (fmap f t)- TyFun l t1 t2 -> TyFun (f l) (fmap f t1) (fmap f t2)- TyTuple l b ts -> TyTuple (f l) b (map (fmap f) ts)- TyList l t -> TyList (f l) (fmap f t)- TyApp l t1 t2 -> TyApp (f l) (fmap f t1) (fmap f t2)- TyVar l n -> TyVar (f l) (fmap f n)- TyCon l qn -> TyCon (f l) (fmap f qn)- TyParen l t -> TyParen (f l) (fmap f t)- TyPred l asst -> TyPred (f l) (fmap f asst)- TyInfix l ta qn tb -> TyInfix (f l) (fmap f ta) (fmap f qn) (fmap f tb)- TyKind l t k -> TyKind (f l) (fmap f t) (fmap f k)--instance Annotated PType where- ann t = case t of- TyForall l mtvs cx t -> l- TyFun l t1 t2 -> l- TyTuple l b ts -> l- TyList l t -> l- TyApp l t1 t2 -> l- TyVar l n -> l- TyCon l qn -> l- TyParen l t -> l- TyInfix l ta qn tb -> l- TyKind l t k -> l- amap f t = case t of- TyForall l mtvs mcx t -> TyForall (f l) mtvs mcx t- TyFun l t1 t2 -> TyFun (f l) t1 t2- TyTuple l b ts -> TyTuple (f l) b ts- TyList l t -> TyList (f l) t- TyApp l t1 t2 -> TyApp (f l) t1 t2- TyVar l n -> TyVar (f l) n- TyCon l qn -> TyCon (f l) qn- TyParen l t -> TyParen (f l) t- TyInfix l ta qn tb -> TyInfix (f l) ta qn tb- TyKind l t k -> TyKind (f l) t k--data PAsst l- = ClassA l (QName l) [PType l]- | InfixA l (PType l) (QName l) (PType l)- | IParam l (IPName l) (PType l)- | EqualP l (PType l) (PType l)- deriving (Eq, Show)--instance Functor PAsst where- fmap f asst = case asst of- ClassA l qn ts -> ClassA (f l) (fmap f qn) (map (fmap f) ts)- InfixA l ta qn tb -> InfixA (f l) (fmap f ta) (fmap f qn) (fmap f tb)- IParam l ipn t -> IParam (f l) (fmap f ipn) (fmap f t)- EqualP l t1 t2 -> EqualP (f l) (fmap f t1) (fmap f t2)--instance Annotated PAsst where- ann asst = case asst of- ClassA l qn ts -> l- InfixA l ta qn tb -> l- IParam l ipn t -> l- EqualP l t1 t2 -> l- amap f asst = case asst of- ClassA l qn ts -> ClassA (f l) qn ts- InfixA l ta qn tb -> InfixA (f l) ta qn tb- IParam l ipn t -> IParam (f l) ipn t- EqualP l t1 t2 -> EqualP (f l) t1 t2---unit_tycon, fun_tycon, list_tycon, unboxed_singleton_tycon :: l -> PType l-unit_tycon l = TyCon l (unit_tycon_name l)-fun_tycon l = TyCon l (fun_tycon_name l)-list_tycon l = TyCon l (list_tycon_name l)-unboxed_singleton_tycon l = TyCon l (unboxed_singleton_tycon_name l)--tuple_tycon :: l -> Boxed -> Int -> PType l-tuple_tycon l b i = TyCon l (tuple_tycon_name l b i)
− src/Language/Haskell/Exts/Annotated/Parser.ly
@@ -1,1797 +0,0 @@-> {-> ------------------------------------------------------------------------------> -- |-> -- Module : Language.Haskell.Exts.Parser-> -- Copyright : (c) Niklas Broberg 2004-2009,-> -- Original (c) Simon Marlow, Sven Panne 1997-2000-> -- License : BSD-style (see the file LICENSE.txt)-> ---> -- Maintainer : Niklas Broberg, d00nibro@chalmers.se-> -- Stability : stable-> -- Portability : portable-> ---> ---> ------------------------------------------------------------------------------>-> module Language.Haskell.Exts.Annotated.Parser (-> -- * General parsing-> Parseable(..),-> ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult,-> -- * Parsing of specific AST elements-> -- ** Modules-> parseModule, parseModuleWithMode, parseModuleWithComments,-> -- ** Expressions-> parseExp, parseExpWithMode, parseExpWithComments,-> -- ** Patterns-> parsePat, parsePatWithMode, parsePatWithComments,-> -- ** Declarations-> parseDecl, parseDeclWithMode, parseDeclWithComments,-> -- ** Types-> parseType, parseTypeWithMode, parseTypeWithComments,-> -- ** Option pragmas-> getTopPragmas-> ) where->-> import Language.Haskell.Exts.Annotated.SrcLoc-> import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Exp(..), Asst(..), XAttr(..), FieldUpdate(..) )-> import Language.Haskell.Exts.Annotated.Syntax ( Type, Exp, Asst )-> import Language.Haskell.Exts.Annotated.ParseMonad-> import Language.Haskell.Exts.Annotated.Lexer-> import Language.Haskell.Exts.Annotated.ParseUtils-> import Language.Haskell.Exts.Annotated.Comments ( Comment )-> import Language.Haskell.Exts.Annotated.Fixity-> import Language.Haskell.Exts.Extension--> import Control.Monad ( liftM )-import Debug.Trace (trace)--> }--------------------------------------------------------------------------------This module comprises a parser for Haskell 98 with the following extensions--* Multi-parameter type classes with functional dependencies-* Implicit parameters-* Pattern guards-* Mdo notation-* FFI-* HaRP-* HSP--Most of the code is blatantly stolen from the GHC module Language.Haskell.Parser.-Some of the code for extensions is greatly influenced by GHC's internal parser-library, ghc/compiler/parser/Parser.y.-------------------------------------------------------------------------------Conflicts: 6 shift/reduce--2 for ambiguity in 'case x of y | let z = y in z :: Bool -> b' [State 12, 244]- (don't know whether to reduce 'Bool' as a btype or shift the '->'.- Similarly lambda and if. The default resolution in favour of the- shift means that a guard can never end with a type signature.- In mitigation: it's a rare case and no Haskell implementation- allows these, because it would require unbounded lookahead.)- There are 2 conflicts rather than one because contexts are parsed- as btypes (cf ctype).--1 for ambiguity in 'let ?x ...' [State 712]- the parser can't tell whether the ?x is the lhs of a normal binding or- an implicit binding. Fortunately resolving as shift gives it the only- sensible meaning, namely the lhs of an implicit binding.--1 for ambiguity using hybrid modules [State 116]- For HSP pages that start with a <% %> block, the parser cannot tell whether- to reduce a srcloc or shift the starting <%. Since any other body could not- start with <%, shifting is the only sensible thing to do.--1 for ambiguity using toplevel xml modules [State 119]- For HSP xml pages starting with a <, the parser cannot tell whether to shift- that < or reduce an implicit 'open'. Since no other body could possibly start- with <, shifting is the only sensible thing to do.--1 for ambiguity in '{-# RULES "name" [ ... #-}' [State 318]- we don't know whether the '[' starts the activation or not: it- might be the start of the declaration with the activation being- empty. Resolving with shift means the declaration cannot start with '['.---------------------------------------------------------------------------------> %token-> VARID { Loc _ (VarId _) }-> QVARID { Loc _ (QVarId _) }-> IDUPID { Loc _ (IDupVarId _) } -- duplicable implicit parameter ?x-> ILINID { Loc _ (ILinVarId _) } -- linear implicit parameter %x-> CONID { Loc _ (ConId _) }-> QCONID { Loc _ (QConId _) }-> DVARID { Loc _ (DVarId _) } -- VARID containing dashes-> VARSYM { Loc _ (VarSym _) }-> CONSYM { Loc _ (ConSym _) }-> QVARSYM { Loc _ (QVarSym _) }-> QCONSYM { Loc _ (QConSym _) }-> INT { Loc _ (IntTok _) }-> RATIONAL { Loc _ (FloatTok _) }-> CHAR { Loc _ (Character _) }-> STRING { Loc _ (StringTok _) }--> PRIMINT { Loc _ (IntTokHash _) }-> PRIMWORD { Loc _ (WordTokHash _) }-> PRIMFLOAT { Loc _ (FloatTokHash _) }-> PRIMDOUBLE { Loc _ (DoubleTokHash _) }-> PRIMCHAR { Loc _ (CharacterHash _) }-> PRIMSTRING { Loc _ (StringHash _) }--Symbols--> '(' { Loc $$ LeftParen }-> ')' { Loc $$ RightParen }-> '(#' { Loc $$ LeftHashParen }-> '#)' { Loc $$ RightHashParen }-> '{|' { Loc $$ LeftCurlyBar }-> '|}' { Loc $$ RightCurlyBar }-> ';' { Loc $$ SemiColon }-> '{' { Loc $$ LeftCurly }-> '}' { Loc $$ RightCurly }-> vccurly { Loc $$ VRightCurly } -- a virtual close brace-> '[' { Loc $$ LeftSquare }-> ']' { Loc $$ RightSquare }-> ',' { Loc $$ Comma }-> '_' { Loc $$ Underscore }-> '`' { Loc $$ BackQuote }--Reserved operators--> '.' { Loc $$ Dot }-> '..' { Loc $$ DotDot }-> ':' { Loc $$ Colon }-> '::' { Loc $$ DoubleColon }-> '=' { Loc $$ Equals }-> '\\' { Loc $$ Backslash }-> '|' { Loc $$ Bar }-> '<-' { Loc $$ LeftArrow }-> '->' { Loc $$ RightArrow }-> '@' { Loc $$ At }-> '~' { Loc $$ Tilde }-> '=>' { Loc $$ DoubleArrow }-> '-' { Loc $$ Minus }-> '!' { Loc $$ Exclamation }-> '*' { Loc $$ Star }--Arrows--> '-<' { Loc $$ LeftArrowTail }-> '>-' { Loc $$ RightArrowTail }-> '-<<' { Loc $$ LeftDblArrowTail }-> '>>-' { Loc $$ RightDblArrowTail }--Harp--> '(|' { Loc $$ RPGuardOpen }-> '|)' { Loc $$ RPGuardClose }-> '@:' { Loc $$ RPCAt }--Template Haskell--> IDSPLICE { Loc _ (THIdEscape _) } -- $x-> '$(' { Loc $$ THParenEscape }-> '[|' { Loc $$ THExpQuote }-> '[p|' { Loc $$ THPatQuote }-> '[t|' { Loc $$ THTypQuote }-> '[d|' { Loc $$ THDecQuote }-> '|]' { Loc $$ THCloseQuote }-> VARQUOTE { Loc $$ THVarQuote } -- 'x-> TYPQUOTE { Loc $$ THTyQuote } -- ''T-> QUASIQUOTE { Loc _ (THQuasiQuote _) }--Hsx--> PCDATA { Loc _ (XPCDATA _) }-> '<' { Loc $$ XStdTagOpen }-> '</' { Loc $$ XCloseTagOpen }-> '<%' { Loc $$ XCodeTagOpen }-> '>' { Loc $$ XStdTagClose }-> '/>' { Loc $$ XEmptyTagClose }-> '%>' { Loc $$ XCodeTagClose }-> '<[' { Loc $$ XRPatOpen }-> ']>' { Loc $$ XRPatClose }--FFI--> 'foreign' { Loc $$ KW_Foreign }-> 'export' { Loc $$ KW_Export }-> 'safe' { Loc $$ KW_Safe }-> 'unsafe' { Loc $$ KW_Unsafe }-> 'threadsafe' { Loc $$ KW_Threadsafe }-> 'stdcall' { Loc $$ KW_StdCall }-> 'ccall' { Loc $$ KW_CCall }--Reserved Ids--> 'as' { Loc $$ KW_As }-> 'by' { Loc $$ KW_By } -- transform list comprehensions-> 'case' { Loc $$ KW_Case }-> 'class' { Loc $$ KW_Class }-> 'data' { Loc $$ KW_Data }-> 'default' { Loc $$ KW_Default }-> 'deriving' { Loc $$ KW_Deriving }-> 'do' { Loc $$ KW_Do }-> 'else' { Loc $$ KW_Else }-> 'family' { Loc $$ KW_Family } -- indexed type families-> 'forall' { Loc $$ KW_Forall } -- universal/existential qualification-> 'group' { Loc $$ KW_Group } -- transform list comprehensions-> 'hiding' { Loc $$ KW_Hiding }-> 'if' { Loc $$ KW_If }-> 'import' { Loc $$ KW_Import }-> 'in' { Loc $$ KW_In }-> 'infix' { Loc $$ KW_Infix }-> 'infixl' { Loc $$ KW_InfixL }-> 'infixr' { Loc $$ KW_InfixR }-> 'instance' { Loc $$ KW_Instance }-> 'let' { Loc $$ KW_Let }-> 'mdo' { Loc $$ KW_MDo }-> 'module' { Loc $$ KW_Module }-> 'newtype' { Loc $$ KW_NewType }-> 'of' { Loc $$ KW_Of }-> 'proc' { Loc $$ KW_Proc } -- arrows-> 'rec' { Loc $$ KW_Rec } -- arrows-> 'then' { Loc $$ KW_Then }-> 'type' { Loc $$ KW_Type }-> 'using' { Loc $$ KW_Using } -- transform list comprehensions-> 'where' { Loc $$ KW_Where }-> 'qualified' { Loc $$ KW_Qualified }--Pragmas--> '{-# INLINE' { Loc _ (INLINE _) }-> '{-# SPECIALISE' { Loc $$ SPECIALISE }-> '{-# SPECIALISE_INLINE' { Loc _ (SPECIALISE_INLINE _) }-> '{-# SOURCE' { Loc $$ SOURCE }-> '{-# RULES' { Loc $$ RULES }-> '{-# CORE' { Loc $$ CORE }-> '{-# SCC' { Loc $$ SCC }-> '{-# GENERATED' { Loc $$ GENERATED }-> '{-# DEPRECATED' { Loc $$ DEPRECATED }-> '{-# WARNING' { Loc $$ WARNING }-> '{-# UNPACK' { Loc $$ UNPACK }-> '{-# OPTIONS' { Loc _ (OPTIONS _) }-> '{-# CFILES' { Loc _ (CFILES _) }-> '{-# INCLUDE' { Loc _ (INCLUDE _) }-> '{-# LANGUAGE' { Loc $$ LANGUAGE }-> '#-}' { Loc $$ PragmaEnd }---> %monad { P }-> %lexer { lexer } { Loc _ EOF }-> %error { parseError }-> %name mparseModule page-> %name mparseExp trueexp-> %name mparsePat pat-> %name mparseDecl topdecl-> %name mparseType truectype-> %partial mfindOptPragmas toppragmas-> %tokentype { Loc Token }-> %expect 6-> %%--------------------------------------------------------------------------------HSP Pages--Any HSP-specific parts requiring the XmlSyntax extension enabled will-be governed by the lexing, since all productions require at least one-special lexeme.--TODO: Yuck, this is messy, needs fixing in the AST!--> page :: { Module L }-> : toppragmas topxml {% checkPageModule $2 $1 }-> | toppragmas '<%' module '%>' topxml {% let (os,ss,l) = $1 in checkHybridModule $5 ($3 os ss l) $2 $4 }-> | toppragmas module { let (os,ss,l) = $1 in $2 os ss l }--> topxml :: { PExp L }-> : '<' name attrs mattr '>' children '</' name '>' {% do { n <- checkEqNames $2 $8;-> let { cn = reverse $6;-> as = reverse $3; };-> return $ XTag ($1 <^^> $9 <** [$1,$5,$7,$9]) n as $4 cn } }-> | '<' name attrs mattr '/>' { XETag ($1 <^^> $5 <** [$1,$5]) $2 (reverse $3) $4 }---> toppragmas :: { ([OptionPragma L],[S],L) }-> : open toppragmasaux close { let (os,ss,ml) = $2 in (os,$1:ss++[$3],$1 <^^> $3) }--> toppragmasaux :: { ([OptionPragma L],[S],Maybe L) }-> : toppragma ';' toppragmasaux { let (os,ss,ml) = $3 in ($1 : os, $2 : ss, Just $ ann $1 <++> nIS $2 <+?> ml) }-> | {- nothing -} { ([],[],Nothing) }--TODO: the various pragma starts with content don't record where that content is located.--> toppragma :: { OptionPragma L }-> : '{-# LANGUAGE' conids optsemis '#-}' { LanguagePragma ($1 <^^> $4 <** ($1:snd $2 ++ reverse $3 ++ [$4])) (fst $2) }-> | '{-# INCLUDE' optsemis '#-}' { let Loc l (INCLUDE s) = $1 in IncludePragma (l <^^> $3 <** (l:reverse $2 ++ [$3])) s }-> | '{-# OPTIONS' optsemis '#-}' { let Loc l (OPTIONS (mc, s)) = $1-> in OptionsPragma (l <^^> $3 <** (l:reverse $2 ++ [$3])) (readTool mc) s }-> | '{-# CFILES' optsemis '#-}' { let Loc l (CFILES s) = $1-> in CFilesPragma (l <^^> $3 <** (l:reverse $2 ++ [$3])) s }--> conids :: { ([Name L],[S]) }-> : conid ',' conids { ($1 : fst $3, $2 : snd $3) }-> | conid { ([$1],[]) }--------------------------------------------------------------------------------Module Header--> module :: { [OptionPragma L] -> [S] -> L -> Module L }-> : optmodulehead body-> { let (is,ds,ss1,inf) = $2-> in \os ss l -> Module (l <++> inf <** (ss ++ ss1)) $1 os is ds }--> optmodulehead :: { Maybe (ModuleHead L) }-> : 'module' modid maybemodwarning maybeexports 'where' { Just $ ModuleHead ($1 <^^> $5 <** [$1,$5]) $2 $3 $4 }-> | {- empty -} { Nothing }--> maybemodwarning :: { Maybe (WarningText L) }-> : '{-# DEPRECATED' STRING '#-}' { let Loc l (StringTok (s,_)) = $2 in Just $ DeprText ($1 <^^> $3 <** [$1,l,$3]) s }-> | '{-# WARNING' STRING '#-}' { let Loc l (StringTok (s,_)) = $2 in Just $ WarnText ($1 <^^> $3 <** [$1,l,$3]) s }-> | {- empty -} { Nothing }--> body :: { ([ImportDecl L],[Decl L],[S],L) }-> : '{' bodyaux '}' { let (is,ds,ss) = $2 in (is,ds,$1:ss ++ [$3], $1 <^^> $3) }-> | open bodyaux close { let (is,ds,ss) = $2 in (is,ds,$1:ss ++ [$3], $1 <^^> $3) }--> bodyaux :: { ([ImportDecl L],[Decl L],[S]) }-> : optsemis impdecls semis topdecls { (reverse (fst $2), fst $4, reverse $1 ++ snd $2 ++ reverse $3 ++ snd $4) }-> | optsemis topdecls { ([], fst $2, reverse $1 ++ snd $2) }-> | optsemis impdecls optsemis { (reverse (fst $2), [], reverse $1 ++ snd $2 ++ reverse $3) }-> | optsemis { ([], [], reverse $1) }--> semis :: { [S] }-> : optsemis ';' { $2 : $1 }--> optsemis :: { [S] }-> : semis { $1 }-> | {- empty -} { [] }--------------------------------------------------------------------------------The Export List--> maybeexports :: { Maybe (ExportSpecList L) }-> : exports { Just $1 }-> | {- empty -} { Nothing }--> exports :: { ExportSpecList L }-> : '(' exportlist optcomma ')' { ExportSpecList ($1 <^^> $4 <** ($1:reverse (snd $2) ++ $3 ++ [$4])) (reverse (fst $2)) }-> | '(' optcomma ')' { ExportSpecList ($1 <^^> $3 <** ($1:$2++[$3])) [] }--> optcomma :: { [S] }-> : ',' { [$1] }-> | {- empty -} { [ ] }--> exportlist :: { ([ExportSpec L],[S]) }-> : exportlist ',' export { ($3 : fst $1, $2 : snd $1) }-> | export { ([$1],[]) }--> export :: { ExportSpec L }-> : qvar { EVar (ann $1) $1 }-> | qtyconorcls { EAbs (ann $1) $1 }-> | qtyconorcls '(' '..' ')' { EThingAll (ann $1 <++> nIS $4 <** [$2,$3,$4]) $1 }-> | qtyconorcls '(' ')' { EThingWith (ann $1 <++> nIS $3 <** [$2,$3]) $1 [] }-> | qtyconorcls '(' cnames ')' { EThingWith (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) $1 (reverse (fst $3)) }-> | 'module' modid { EModuleContents (nIS $1 <++> ann $2 <** [$1]) $2 }--------------------------------------------------------------------------------Import Declarations--> impdecls :: { ([ImportDecl L],[S]) }-> : impdecls semis impdecl { ($3 : fst $1, snd $1 ++ reverse $2) }-> | impdecl { ([$1],[]) }--> impdecl :: { ImportDecl L }-> : 'import' optsrc optqualified maybepkg modid maybeas maybeimpspec-> { let { (mmn,ss,ml) = $6 ;-> l = nIS $1 <++> ann $5 <+?> ml <+?> (fmap ann) $7 <** ($1:snd $2 ++ snd $3 ++ snd $4 ++ ss)}-> in ImportDecl l $5 (fst $3) (fst $2) (fst $4) mmn $7 }--> optsrc :: { (Bool,[S]) }-> : '{-# SOURCE' '#-}' { (True,[$1,$2]) }-> | {- empty -} { (False,[]) }--> optqualified :: { (Bool,[S]) }-> : 'qualified' { (True,[$1]) }-> | {- empty -} { (False, []) }--Requires the PackageImports extension enabled.-> maybepkg :: { (Maybe String,[S]) }-> : STRING {% do { checkEnabled PackageImports ;-> let { Loc l (StringTok (s,_)) = $1 } ;-> return $ (Just s,[l]) } }-> | {- empty -} { (Nothing,[]) }--> maybeas :: { (Maybe (ModuleName L),[S],Maybe L) }-> : 'as' modid { (Just $2,[$1],Just (nIS $1 <++> ann $2)) }-> | {- empty -} { (Nothing,[],Nothing) }---> maybeimpspec :: { Maybe (ImportSpecList L) }-> : impspec { Just $1 }-> | {- empty -} { Nothing }--> impspec :: { ImportSpecList L }-> : opthiding '(' importlist optcomma ')' { let {(b,ml,s) = $1 ;-> l = (ml <?+> ($2 <^^> $5)) <** (s ++ $2:reverse (snd $3) ++ $4 ++ [$5])}-> in ImportSpecList l b (reverse (fst $3)) }-> | opthiding '(' optcomma ')' { let {(b,ml,s) = $1 ; l = (ml <?+> ($2 <^^> $4)) <** (s ++ $2:$3 ++ [$4])}-> in ImportSpecList l b [] }--> opthiding :: { (Bool, Maybe L,[S]) }-> : 'hiding' { (True,Just (nIS $1),[$1]) }-> | {- empty -} { (False,Nothing,[]) }--> importlist :: { ([ImportSpec L],[S]) }-> : importlist ',' importspec { ($3 : fst $1, $2 : snd $1) }-> | importspec { ([$1],[]) }--> importspec :: { ImportSpec L }-> : var { IVar (ann $1) $1 }-> | tyconorcls { IAbs (ann $1) $1 }-> | tyconorcls '(' '..' ')' { IThingAll (ann $1 <++> nIS $4 <** [$2,$3,$4]) $1 }-> | tyconorcls '(' ')' { IThingWith (ann $1 <++> nIS $3 <** [$2,$3]) $1 [] }-> | tyconorcls '(' cnames ')' { IThingWith (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) $1 (reverse (fst $3)) }--> cnames :: { ([CName L],[S]) }-> : cnames ',' cname { ($3 : fst $1, $2 : snd $1) }-> | cname { ([$1],[]) }--> cname :: { CName L }-> : var { VarName (ann $1) $1 }-> | con { ConName (ann $1) $1 }--------------------------------------------------------------------------------Fixity Declarations--> fixdecl :: { Decl L }-> : infix prec ops { let (ops,ss,l) = $3-> in InfixDecl (ann $1 <++> l <** (snd $2 ++ reverse ss)) $1 (fst $2) (reverse ops) }--> prec :: { (Maybe Int, [S]) }-> : {- empty -} { (Nothing, []) }-> | INT {% let Loc l (IntTok (i,_)) = $1 in checkPrec i >>= \i -> return (Just i, [l]) }--> infix :: { Assoc L }-> : 'infix' { AssocNone $ nIS $1 }-> | 'infixl' { AssocLeft $ nIS $1 }-> | 'infixr' { AssocRight $ nIS $1 }--> ops :: { ([Op L],[S],L) }-> : ops ',' op { let (ops,ss,l) = $1 in ($3 : ops, $2 : ss, l <++> ann $3) }-> | op { ([$1],[],ann $1) }--------------------------------------------------------------------------------Top-Level Declarations--Note: The report allows topdecls to be empty. This would result in another-shift/reduce-conflict, so we don't handle this case here, but in bodyaux.--> topdecls :: { ([Decl L],[S]) }-> : topdecls1 optsemis {% checkRevDecls (fst $1) >>= \ds -> return (ds, snd $1 ++ reverse $2) }--> topdecls1 :: { ([Decl L],[S]) }-> : topdecls1 semis topdecl { ($3 : fst $1, snd $1 ++ reverse $2) }-> | topdecl { ([$1],[]) }--> topdecl :: { Decl L }-> : 'type' dtype '=' truectype-> {% do { dh <- checkSimpleType $2;-> let {l = nIS $1 <++> ann $4 <** [$1,$3]};-> return (TypeDecl l dh $4) } }--Requires the TypeFamilies extension enabled, but the lexer will handle-that through the 'family' keyword.-> | 'type' 'family' type optkind-> {% do { dh <- checkSimpleType $3;-> let {l = nIS $1 <++> ann $3 <+?> (fmap ann) (fst $4) <** ($1:$2:snd $4)};-> return (TypeFamDecl l dh (fst $4)) } }--Here there is no special keyword so we must do the check.-> | 'type' 'instance' truedtype '=' truectype-> {% do { -- no checkSimpleType $4 since dtype may contain type patterns-> checkEnabled TypeFamilies ;-> let {l = nIS $1 <++> ann $5 <** [$1,$2,$4]};-> return (TypeInsDecl l $3 $5) } }-> | data_or_newtype ctype constrs0 deriving-> {% do { (cs,dh) <- checkDataHeader $2;-> let { (qds,ss,minf) = $3;-> l = $1 <> $2 <+?> minf <+?> fmap ann $4 <** ss};-> checkDataOrNew $1 qds;-> return (DataDecl l $1 cs dh (reverse qds) $4) } }--Requires the GADTs extension enabled, handled in gadtlist.-> | data_or_newtype ctype optkind 'where' gadtlist deriving-> {% do { (cs,dh) <- checkDataHeader $2;-> let { (gs,ss,inf) = $5;-> l = ann $1 <++> inf <+?> fmap ann $6 <** (snd $3 ++ $4:ss)};-> checkDataOrNew $1 gs;-> return (GDataDecl l $1 cs dh (fst $3) (reverse gs) $6) } }--Same as above, lexer will handle it through the 'family' keyword.-> | 'data' 'family' ctype optkind-> {% do { (cs,dh) <- checkDataHeader $3;-> let {l = nIS $1 <++> ann $3 <+?> (fmap ann) (fst $4) <** ($1:$2:snd $4)};-> return (DataFamDecl l cs dh (fst $4)) } }--Here we must check for TypeFamilies.-> | data_or_newtype 'instance' truectype constrs0 deriving-> {% do { -- (cs,c,t) <- checkDataHeader $4;-> checkEnabled TypeFamilies ;-> let { (qds,ss,minf) = $4 ;-> l = $1 <> $3 <+?> minf <+?> fmap ann $5 <** $2:ss };-> checkDataOrNew $1 qds;-> return (DataInsDecl l $1 $3 (reverse qds) $5) } }--This style requires both TypeFamilies and GADTs, the latter is handled in gadtlist.-> | data_or_newtype 'instance' truectype optkind 'where' gadtlist deriving-> {% do { -- (cs,c,t) <- checkDataHeader $4;-> checkEnabled TypeFamilies ;-> let {(gs,ss,inf) = $6;-> l = ann $1 <++> inf <+?> fmap ann $7 <** ($2:snd $4 ++ $5:ss)};-> checkDataOrNew $1 gs;-> return (GDataInsDecl l $1 $3 (fst $4) (reverse gs) $7) } }-> | 'class' ctype fds optcbody-> {% do { (cs,dh) <- checkClassHeader $2;-> let {(fds,ss1,minf1) = $3;(mcs,ss2,minf2) = $4} ;-> let { l = nIS $1 <++> ann $2 <+?> minf1 <+?> minf2 <** ($1:ss1 ++ ss2)} ;-> return (ClassDecl l cs dh fds mcs) } }-> | 'instance' ctype optvaldefs-> {% do { (cs,ih) <- checkInstHeader $2;-> let {(mis,ss,minf) = $3};-> return (InstDecl (nIS $1 <++> ann $2 <+?> minf <** ($1:ss)) cs ih mis) } }--Requires the StandaloneDeriving extension enabled.-> | 'deriving' 'instance' ctype-> {% do { checkEnabled StandaloneDeriving ;-> (cs, ih) <- checkInstHeader $3;-> let {l = nIS $1 <++> ann $3 <** [$1,$2]};-> return (DerivDecl l cs ih) } }-> | 'default' '(' typelist ')'-> { DefaultDecl ($1 <^^> $4 <** ($1:$2 : snd $3 ++ [$4])) (fst $3) }--Requires the TemplateHaskell extension, but the lexer will handle that-through the '$(' lexeme.-> | '$(' trueexp ')' { let l = $1 <^^> $3 <** [$1,$3] in SpliceDecl l $ ParenSplice l $2 }--These require the ForeignFunctionInterface extension, handled by the-lexer through the 'foreign' (and 'export') keyword.-> | 'foreign' 'import' callconv safety fspec-> { let (s,n,t,ss) = $5 in ForImp (nIS $1 <++> ann t <** ($1:$2:ss)) $3 $4 s n t }-> | 'foreign' 'export' callconv fspec-> { let (s,n,t,ss) = $4 in ForExp (nIS $1 <++> ann t <** ($1:$2:ss)) $3 s n t }--> | '{-# RULES' rules '#-}' { RulePragmaDecl ($1 <^^> $3 <** [$1,$3]) $ reverse $2 }-> | '{-# DEPRECATED' warndeprs '#-}' { DeprPragmaDecl ($1 <^^> $3 <** ($1:snd $2++[$3])) $ reverse (fst $2) }-> | '{-# WARNING' warndeprs '#-}' { WarnPragmaDecl ($1 <^^> $3 <** ($1:snd $2++[$3])) $ reverse (fst $2) }-> | decl { $1 }--> data_or_newtype :: { DataOrNew L }-> : 'data' { DataType $ nIS $1 }-> | 'newtype' { NewType $ nIS $1 }--> typelist :: { ([Type L],[S]) }-> : types {% do { ts <- mapM checkType (fst $1);-> return $ (reverse ts, reverse (snd $1)) } }-> | truetype { ([$1],[]) }-> | {- empty -} { ([],[]) }--> decls :: { ([Decl L],[S]) }-> : optsemis decls1 optsemis {% checkRevDecls (fst $2) >>= \ds -> return (ds, reverse $1 ++ snd $2 ++ reverse $3) }-> | optsemis { ([],reverse $1) }--> decls1 :: { ([Decl L],[S]) }-> : decls1 semis decl { ($3 : fst $1, snd $1 ++ reverse $2) }-> | decl { ([$1],[]) }--> decl :: { Decl L }-> : signdecl { $1 }-> | fixdecl { $1 }-> | valdef { $1 }--> decllist :: { Binds L }-> : '{' decls '}' { BDecls ($1 <^^> $3 <** ($1:snd $2++[$3])) (fst $2) }-> | open decls close { BDecls ($1 <^^> $3 <** ($1:snd $2++[$3])) (fst $2) }--> signdecl :: { Decl L }-> : exp0b '::' truectype {% do { v <- checkSigVar $1;-> return $ TypeSig ($1 <> $3 <** [$2]) [v] $3 } }-> | exp0b ',' vars '::' truectype {% do { v <- checkSigVar $1;-> let {(vs,ss,_) = $3 ; l = $1 <> $5 <** ($2 : reverse ss ++ [$4]) } ;-> return $ TypeSig l (v : reverse vs) $5 } }-> | '{-# INLINE' activation qvar '#-}' { let Loc l (INLINE s) = $1 in InlineSig (l <^^> $4 <** [l,$4]) s $2 $3 }-> | '{-# SPECIALISE' qvar '::' sigtypes '#-}' { SpecSig ($1 <^^> $5 <** ($1:$3 : snd $4 ++ [$5])) $2 (fst $4) }-> | '{-# SPECIALISE_INLINE' activation qvar '::' sigtypes '#-}'-> { let Loc l (SPECIALISE_INLINE s) = $1-> in SpecInlineSig (l <^^> $6 <** (l:$4:snd $5++[$6])) s $2 $3 (fst $5) }-> | '{-# SPECIALISE' 'instance' ctype '#-}' {% do { (cs,ih) <- checkInstHeader $3;-> let {l = $1 <^^> $4 <** [$1,$2,$4]};-> return $ InstSig l cs ih } }--> sigtypes :: { ([Type L],[S]) }-> : sigtype { ([$1],[]) }-> | sigtype ',' sigtypes { ($1 : fst $3, $2 : snd $3) }--> sigtype :: { Type L }-> : ctype {% checkType $ mkTyForall (ann $1) Nothing Nothing $1 }--Binding can be either of implicit parameters, or it can be a normal sequence-of declarations. The two kinds cannot be mixed within the same block of-binding.--> binds :: { Binds L }-> : decllist { $1 }-> | '{' ipbinds '}' { IPBinds ($1 <^^> $3 <** snd $2) (fst $2) }-> | open ipbinds close { IPBinds ($1 <^^> $3 <** snd $2) (fst $2) }--ATTENTION: Dirty Hackery Ahead! If the second alternative of vars is var-instead of qvar, we get another shift/reduce-conflict. Consider the-following programs:-- { (+) :: ... } only var- { (+) x y = ... } could (incorrectly) be qvar--We re-use expressions for patterns, so a qvar would be allowed in patterns-instead of a var only (which would be correct). But deciding what the + is,-would require more lookahead. So let's check for ourselves...--> vars :: { ([Name L],[S],L) }-> : vars ',' var { let (ns,ss,l) = $1 in ($3 : ns, $2 : ss, l <++> ann $3) }-> | qvar {% do { n <- checkUnQual $1;-> return ([n],[],ann n) } }--------------------------------------------------------------------------------FFI--These will only be called on in the presence of a 'foreign' keyword,-so no need to check for extensions.--> callconv :: { CallConv L }-> : 'stdcall' { StdCall (nIS $1) }-> | 'ccall' { CCall (nIS $1) }--> safety :: { Maybe (Safety L) }-> : 'safe' { Just $ PlaySafe (nIS $1) False }-> | 'unsafe' { Just $ PlayRisky (nIS $1) }-> | 'threadsafe' { Just $ PlaySafe (nIS $1) True }-> | {- empty -} { Nothing }--> fspec :: { (Maybe String, Name L, Type L, [S]) }-> : STRING var_no_safety '::' truedtype { let Loc l (StringTok (s,_)) = $1 in (Just s, $2, $4, [l,$3]) }-> | var_no_safety '::' truedtype { (Nothing, $1, $3, [$2]) }--------------------------------------------------------------------------------Pragmas--> rules :: { [Rule L] }-> : rules ';'rule { $3 : $1 }-> | rules ';' { $1 }-> | rule { [$1] }-> | {- empty -} { [] }--> rule :: { Rule L }-> : STRING activation ruleforall exp0 '=' trueexp {% do { let {Loc l (StringTok (s,_)) = $1};-> e <- checkRuleExpr $4;-> return $ Rule (nIS l <++> ann $6 <** l:snd $3 ++ [$5]) s $2 (fst $3) e $6 } }--> activation :: { Maybe (Activation L) }-> : {- empty -} { Nothing }-> | '[' INT ']' { let Loc l (IntTok (i,_)) = $2 in Just $ ActiveFrom ($1 <^^> $3 <** [$1,l,$3]) (fromInteger i) }-> | '[' '~' INT ']' { let Loc l (IntTok (i,_)) = $3 in Just $ ActiveUntil ($1 <^^> $4 <** [$1,$2,l,$4]) (fromInteger i) }--> ruleforall :: { (Maybe [RuleVar L],[S]) }-> : {- empty -} { (Nothing,[]) }-> | 'forall' rulevars '.' { (Just $2,[$1,$3]) }--> rulevars :: { [RuleVar L] }-> : rulevar { [$1] }-> | rulevar rulevars { $1 : $2 }--> rulevar :: { RuleVar L }-> : varid { RuleVar (ann $1) $1 }-> | '(' varid '::' truectype ')' { TypedRuleVar ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }--> warndeprs :: { ([([Name L],String)],[S]) }-> : warndeprs ';' warndepr { (fst $3 : fst $1, snd $1 ++ ($2:snd $3)) }-> | warndeprs ';' { (fst $1, snd $1 ++ [$2]) }-> | warndepr { ([fst $1],snd $1) }-> | {- empty -} { ([],[]) }--> warndepr :: { (([Name L], String),[S]) }-> : namevars STRING { let Loc l (StringTok (s,_)) = $2 in ((fst $1,s),snd $1 ++ [l]) }--> namevars :: { ([Name L],[S]) }-> : namevar { ([$1],[]) }-> | namevar ',' namevars { ($1 : fst $3, $2 : snd $3) }--> namevar :: { Name L }-> : con { $1 }-> | var { $1 }--------------------------------------------------------------------------------Types--Type equality contraints need the TypeFamilies extension.--> truedtype :: { Type L }-> : dtype {% checkType $1 }--> dtype :: { PType L }-> : btype { $1 }-> | btype qtyconop dtype { TyInfix ($1 <> $3) $1 $2 $3 }-> | btype qtyvarop dtype { TyInfix ($1 <> $3) $1 $2 $3 } -- FIXME-> | btype '->' ctype { TyFun ($1 <> $3 <** [$2]) $1 $3 }-> | btype '~' btype {% do { checkEnabled TypeFamilies ;-> let {l = $1 <> $3 <** [$2]};-> return $ TyPred l $ EqualP l $1 $3 } }--Implicit parameters can occur in normal types, as well as in contexts.--> truetype :: { Type L }-> : type {% checkType $1 }--> type :: { PType L }-> : ivar '::' dtype { let l = ($1 <> $3 <** [$2]) in TyPred l $ IParam l $1 $3 }-> | dtype { $1 }--> truebtype :: { Type L }-> : btype {% checkType $1 }--> btype :: { PType L }-> : btype atype { TyApp ($1 <> $2) $1 $2 }-> | atype { $1 }--UnboxedTuples requires the extension, but that will be handled through-the (# and #) lexemes. Kinds will be handled at the kind rule.--> trueatype :: { Type L }-> : atype {% checkType $1 }--> atype :: { PType L }-> : gtycon { TyCon (ann $1) $1 }-> | tyvar { TyVar (ann $1) $1 }-> | '(' types ')' { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Boxed (reverse (fst $2)) }-> | '(#' types1 '#)' { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Unboxed (reverse (fst $2)) }-> | '[' type ']' { TyList ($1 <^^> $3 <** [$1,$3]) $2 }-> | '(' ctype ')' { TyParen ($1 <^^> $3 <** [$1,$3]) $2 }-> | '(' ctype '::' kind ')' { TyKind ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }--> gtycon :: { QName L }-> : otycon { $1 }-> | '(' ')' { unit_tycon_name ($1 <^^> $2 <** [$1,$2]) }-> | '(' '->' ')' { fun_tycon_name ($1 <^^> $3 <** [$1,$2,$3]) }-> | '[' ']' { list_tycon_name ($1 <^^> $2 <** [$1,$2]) }-> | '(' commas ')' { tuple_tycon_name ($1 <^^> $3 <** ($1:reverse $2 ++ [$3])) Boxed (length $2) }-> | '(#' '#)' { unboxed_singleton_tycon_name ($1 <^^> $2 <** [$1,$2]) }-> | '(#' commas '#)' { tuple_tycon_name ($1 <^^> $3 <** ($1:reverse $2 ++ [$3])) Unboxed (length $2) }--> otycon :: { QName L }-> : qconid { $1 }-> | '(' gconsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--These are for infix types--> qtyconop :: { QName L }-> : qconop { $1 }---(Slightly edited) Comment from GHC's hsparser.y:-"context => type" vs "type" is a problem, because you can't distinguish between-- foo :: (Baz a, Baz a)- bar :: (Baz a, Baz a) => [a] -> [a] -> [a]--with one token of lookahead. The HACK is to parse the context as a btype-(more specifically as a tuple type), then check that it has the right form-C a, or (C1 a, C2 b, ... Cn z) and convert it into a context. Blaach!--Forall-quantified types require some extension to enable them, which-is any of the keyword-enabling ones, except ExistentialQuantification.--> truectype :: { Type L }-> : ctype {% checkType $1 }--> ctype :: { PType L }-> : 'forall' ktyvars '.' ctype { TyForall (nIS $1 <++> ann $4 <** [$1,$3]) (Just (reverse (fst $2))) Nothing $4 }-> | context ctype { TyForall ($1 <> $2) Nothing (Just $1) $2 }-> | type { $1 }--Equality constraints require the TypeFamilies extension.--> context :: { PContext L }-> : btype '=>' {% checkPContext $ (amap (\l -> l <++> nIS $2 <** (srcInfoPoints l ++ [$2]))) $1 }-> | btype '~' btype '=>' {% do { checkEnabled TypeFamilies;-> let {l = $1 <> $3 <** [$2,$4]};-> checkPContext (TyPred l $ EqualP l $1 $3) } }--> types :: { ([PType L],[S]) }-> : types1 ',' ctype { ($3 : fst $1, $2 : snd $1) }--> types1 :: { ([PType L],[S]) }-> : ctype { ([$1],[]) }-> | types1 ',' ctype { ($3 : fst $1, $2 : snd $1) }--> ktyvars :: { ([TyVarBind L],Maybe L) }-> : ktyvars ktyvar { ($2 : fst $1, Just (snd $1 <?+> ann $2)) }-> | {- empty -} { ([],Nothing) }--> ktyvar :: { TyVarBind L }-> : tyvar { UnkindedVar (ann $1) $1 }-> | '(' tyvar '::' kind ')' { KindedVar ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }--> tyvars :: { ([Name L],Maybe L) }-> : tyvars tyvar { ($2 : fst $1, Just (snd $1 <?+> ann $2)) }-> | {- empty -} { ([], Nothing) }--> tyvars1 :: { ([Name L],L) }-> : tyvars tyvar { ($2 : fst $1, snd $1 <?+> ann $2) }---------------------------------------------------------------------------------Functional Dependencies--These require the FunctionalDependencies extension to be enabled.--> fds :: { ([FunDep L],[S],Maybe L) }-> : {- empty -} { ([],[], Nothing) }-> | '|' fds1 {% do { checkEnabled FunctionalDependencies ;-> let {(fds,ss,l) = $2} ;-> return (reverse fds, $1 : reverse ss, Just (nIS $1 <++> l)) } }--> fds1 :: { ([FunDep L],[S],L) }-> : fds1 ',' fd { let (fds,ss,l) = $1 in ($3 : fds, $2 : ss, l <++> ann $3) }-> | fd { ([$1],[],ann $1) }--> fd :: { FunDep L }-> : tyvars1 '->' tyvars1 { FunDep (snd $1 <++> snd $3 <** [$2]) (reverse (fst $1)) (reverse (fst $3)) }--------------------------------------------------------------------------------Datatype declarations--GADTs - require the GADTs extension enabled, but we handle that at the calling site.--> gadtlist :: { ([GadtDecl L],[S],L) }-> : gadtlist1 {% checkEnabled GADTs >> return $1 }--> gadtlist1 :: { ([GadtDecl L],[S],L) }-> : '{' gadtconstrs1 '}' { (fst $2, $1 : snd $2 ++ [$3], $1 <^^> $3) }-> | open gadtconstrs1 close { (fst $2, $1 : snd $2 ++ [$3], $1 <^^> $3) }--> gadtconstrs1 :: { ([GadtDecl L],[S]) }-> : optsemis gadtconstrs optsemis { (fst $2, reverse $1 ++ snd $2 ++ reverse $3) }--> gadtconstrs :: { ([GadtDecl L],[S]) }-> : gadtconstrs semis gadtconstr { ($3 : fst $1, snd $1 ++ reverse $2) }-> | gadtconstr { ([$1],[]) }--> gadtconstr :: { GadtDecl L }-> : qcon '::' truectype {% do { c <- checkUnQual $1;-> return $ GadtDecl ($1 <> $3 <** [$2]) c $3 } }--To allow the empty case we need the EmptyDataDecls extension.-> constrs0 :: { ([QualConDecl L],[S],Maybe L) }-> : {- empty -} {% checkEnabled EmptyDataDecls >> return ([],[],Nothing) }-> | '=' constrs { let (ds,ss,l) = $2 in (ds, $1 : reverse ss, Just $ nIS $1 <++> l) }--> constrs :: { ([QualConDecl L],[S],L) }-> : constrs '|' constr { let (ds,ss,l) = $1 in ($3 : ds, $2 : ss, l <++> ann $3) }-> | constr { ([$1],[],ann $1) }--> constr :: { QualConDecl L }-> : forall context constr1 {% do { checkEnabled ExistentialQuantification ;-> ctxt <- checkContext (Just $2) ;-> let {(mtvs,ss,ml) = $1} ;-> return $ QualConDecl (ml <?+> ann $3 <** ss) mtvs ctxt $3 } }-> | forall constr1 { let (mtvs, ss, ml) = $1 in QualConDecl (ml <?+> ann $2 <** ss) mtvs Nothing $2 }--> forall :: { (Maybe [TyVarBind L], [S], Maybe L) }-> : 'forall' ktyvars '.' {% checkEnabled ExistentialQuantification >> return (Just (fst $2), [$1,$3], Just $ $1 <^^> $3) }-> | {- empty -} { (Nothing, [], Nothing) }--To avoid conflicts when introducing type operators, we need to parse record constructors-as qcon and then check separately that they are truly unqualified.--> constr1 :: { ConDecl L }-> : scontype { let (n,ts,l) = $1 in ConDecl l n ts }-> | sbtype conop sbtype { InfixConDecl ($1 <> $3) $1 $2 $3 }-> | qcon '{' '}' {% do { c <- checkUnQual $1; return $ RecDecl (ann $1 <++> nIS $3 <** [$2,$3]) c [] } }-> | qcon '{' fielddecls '}' {% do { c <- checkUnQual $1;-> return $ RecDecl (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) c (reverse (fst $3)) } }--> scontype :: { (Name L, [BangType L], L) }-> : btype {% do { (c,ts) <- splitTyConApp $1;-> return (c,map (\t -> UnBangedTy (ann t) t) ts,ann $1) } }-> | scontype1 { $1 }--> scontype1 :: { (Name L, [BangType L],L) }-> : btype '!' trueatype {% do { (c,ts) <- splitTyConApp $1;-> return (c,map (\t -> UnBangedTy (ann t) t) ts++-> [BangedTy (nIS $2 <++> ann $3 <** [$2]) $3], $1 <> $3) } }-> | btype '{-# UNPACK' '#-}' '!' trueatype {% do { (c,ts) <- splitTyConApp $1;-> return (c,map (\t -> UnBangedTy (ann t) t) ts++-> [UnpackedTy (nIS $2 <++> ann $5 <** [$2,$3,$4]) $5], $1 <> $5) } }-> | scontype1 satype { let (n,ts,l) = $1 in (n, ts ++ [$2],l <++> ann $2) }--> satype :: { BangType L }-> : trueatype { UnBangedTy (ann $1) $1 }-> | '!' trueatype { BangedTy (nIS $1 <++> ann $2 <** [$1]) $2 }-> | '{-# UNPACK' '#-}' '!' trueatype { UnpackedTy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }--> sbtype :: { BangType L }-> : truebtype { UnBangedTy (ann $1) $1 }-> | '!' trueatype { BangedTy (nIS $1 <++> ann $2 <** [$1]) $2 }-> | '{-# UNPACK' '#-}' '!' trueatype { UnpackedTy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }--> fielddecls :: { ([FieldDecl L],[S]) }-> : fielddecls ',' fielddecl { ($3 : fst $1, $2 : snd $1) }-> | fielddecl { ([$1],[]) }--> fielddecl :: { FieldDecl L }-> : vars '::' stype { let (ns,ss,l) = $1 in FieldDecl (l <++> ann $3 <** (reverse ss ++ [$2])) (reverse ns) $3 }--> stype :: { BangType L }-> : truectype { UnBangedTy (ann $1) $1 }-> | '!' trueatype { BangedTy (nIS $1 <++> ann $2 <** [$1]) $2 }-> | '{-# UNPACK' '#-}' '!' trueatype { UnpackedTy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }--> deriving :: { Maybe (Deriving L) }-> : {- empty -} { Nothing }-> | 'deriving' qtycls1 { let l = nIS $1 <++> ann $2 <** [$1] in Just $ Deriving l [IHead (ann $2) $2 []] }-> | 'deriving' '(' ')' { Just $ Deriving ($1 <^^> $3 <** [$1,$2,$3]) [] }-> | 'deriving' '(' dclasses ')' { Just $ Deriving ($1 <^^> $4 <** $1:$2: reverse (snd $3) ++ [$4]) (reverse (fst $3)) }--> dclasses :: { ([InstHead L],[S]) }-> : types1 {% checkDeriving (fst $1) >>= \ds -> return (ds, snd $1) }--> qtycls1 :: { QName L }-> : qconid { $1 }---------------------------------------------------------------------------------Kinds--> kind :: { Kind L }-> : kind1 {% checkEnabled KindSignatures >> return $1 }--> kind1 :: { Kind L }-> : akind { $1 }-> | akind '->' kind1 { KindFn ($1 <> $3 <** [$2]) $1 $3 }--> akind :: { Kind L }-> : '*' { KindStar (nIS $1) }-> | '!' { KindBang (nIS $1) }-> | '(' kind1 ')' { KindParen ($1 <^^> $3 <** [$1,$3]) $2 }--> optkind :: { (Maybe (Kind L), [S]) }-> : {-empty-} { (Nothing,[]) }-> | '::' kind { (Just $2,[$1]) }-------------------------------------------------------------------------------Class declarations--TODO: Lots of stuff to pass around here.--No implicit parameters in the where clause of a class declaration.-> optcbody :: { (Maybe [ClassDecl L],[S],Maybe L) }-> : 'where' '{' cldecls '}' {% checkClassBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }-> | 'where' open cldecls close {% checkClassBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }-> | {- empty -} { (Nothing,[],Nothing) }--> cldecls :: { ([ClassDecl L],[S]) }-> : optsemis cldecls1 optsemis {% checkRevClsDecls (fst $2) >>= \cs -> return (cs, reverse $1 ++ snd $2 ++ reverse $3) }-> | optsemis { ([],reverse $1) }--> cldecls1 :: { ([ClassDecl L],[S]) }-> : cldecls1 semis cldecl { ($3 : fst $1, snd $1 ++ reverse $2) }-> | cldecl { ([$1],[]) }--Associated types require the TypeFamilies extension.--> cldecl :: { ClassDecl L }-> : decl { ClsDecl (ann $1) $1 }-> | atdecl {% checkEnabled TypeFamilies >> return $1 }--> atdecl :: { ClassDecl L }-> : 'type' type optkind-> {% do { dh <- checkSimpleType $2;-> return (ClsTyFam (nIS $1 <++> ann $2 <+?> (fmap ann) (fst $3) <** $1:snd $3) dh (fst $3)) } }-> | 'type' truedtype '=' truectype-> { ClsTyDef (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }-> | 'data' ctype optkind-> {% do { (cs,dh) <- checkDataHeader $2;-> return (ClsDataFam (nIS $1 <++> ann $2 <+?> (fmap ann) (fst $3) <** $1:snd $3) cs dh (fst $3)) } }--------------------------------------------------------------------------------Instance declarations--> optvaldefs :: { (Maybe [InstDecl L],[S],Maybe L) }-> : 'where' '{' valdefs '}' {% checkInstBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }-> | 'where' open valdefs close {% checkInstBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }-> | {- empty -} { (Nothing, [], Nothing) }--> valdefs :: { ([InstDecl L],[S]) }-> : optsemis valdefs1 optsemis {% checkRevInstDecls (fst $2) >>= \is -> return (is, reverse $1 ++ snd $2 ++ reverse $3) }-> | optsemis { ([],reverse $1) }--> valdefs1 :: { ([InstDecl L],[S]) }-> : valdefs1 semis insvaldef { ($3 : fst $1, snd $1 ++ reverse $2) }-> | insvaldef { ([$1],[]) }--Associated types require the TypeFamilies extension enabled.--> insvaldef :: { InstDecl L }-> : valdef { InsDecl (ann $1) $1 }-> | atinst {% checkEnabled TypeFamilies >> return $1 }-> | inlinst { $1 }--> inlinst :: { InstDecl L }-> : '{-# INLINE' activation qvar '#-}' { let Loc l (INLINE s) = $1 in InsInline (l <^^> $4 <** [l,$4]) s $2 $3 }--> atinst :: { InstDecl L }-> : 'type' truedtype '=' truectype-> {% do { -- no checkSimpleType $4 since dtype may contain type patterns-> return (InsType (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4) } }-> | data_or_newtype truectype constrs0 deriving-> {% do { -- (cs,c,t) <- checkDataHeader $4;-> let {(ds,ss,minf) = $3};-> checkDataOrNew $1 ds;-> return (InsData ($1 <> $2 <+?> minf <+?> fmap ann $4 <** ss ) $1 $2 (reverse ds) $4) } }-> | data_or_newtype truectype optkind 'where' gadtlist deriving-> {% do { -- (cs,c,t) <- checkDataHeader $4;-> let { (gs,ss,inf) = $5 } ;-> checkDataOrNew $1 gs;-> return $ InsGData (ann $1 <++> inf <+?> fmap ann $6 <** (snd $3 ++ $4:ss)) $1 $2 (fst $3) (reverse gs) $6 } }--------------------------------------------------------------------------------Value definitions--> valdef :: { Decl L }-> : exp0b optsig rhs optwhere {% checkValDef (($1 <> $3 <+?> (fmap ann) (fst $4)) <** (snd $2 ++ snd $4)) $1 (fst $2) $3 (fst $4) }-> | '!' aexp rhs optwhere {% do { checkEnabled BangPatterns ;-> let { l = nIS $1 <++> ann $2 <** [$1] };-> p <- checkPattern (BangPat l $2);-> return $ PatBind (p <> $3 <+?> (fmap ann) (fst $4) <** snd $4)-> p Nothing $3 (fst $4) } }--May bind implicit parameters-> optwhere :: { (Maybe (Binds L),[S]) }-> : 'where' binds { (Just $2, [$1]) }-> | {- empty -} { (Nothing, []) }--Type signatures on value definitions require ScopedTypeVariables (or PatternSignatures, which is deprecated).--> optsig :: { (Maybe (Type L),[S]) }-> : '::' truectype {% checkEnabled ScopedTypeVariables >> return (Just $2, [$1]) }-> | {- empty -} { (Nothing,[]) }--> rhs :: { Rhs L }-> : '=' trueexp { UnGuardedRhs (nIS $1 <++> ann $2 <** [$1]) $2 }-> | gdrhs { GuardedRhss (snd $1) (reverse $ fst $1) }--> gdrhs :: { ([GuardedRhs L],L) }-> : gdrhs gdrh { ($2 : fst $1, snd $1 <++> ann $2) }-> | gdrh { ([$1],ann $1) }--Guards may contain patterns if PatternGuards is enabled, hence quals instead of exp.-> gdrh :: { GuardedRhs L }-> : '|' quals '=' trueexp {% do { checkPatternGuards (fst $2);-> return $ GuardedRhs (nIS $1 <++> ann $4 <** ($1:snd $2 ++ [$3])) (reverse (fst $2)) $4 } }--------------------------------------------------------------------------------Expressions--Note: The Report specifies a meta-rule for lambda, let and if expressions-(the exp's that end with a subordinate exp): they extend as far to-the right as possible. That means they cannot be followed by a type-signature or infix application. To implement this without shift/reduce-conflicts, we split exp10 into these expressions (exp10a) and the others-(exp10b). That also means that only an exp0 ending in an exp10b (an exp0b)-can followed by a type signature or infix application. So we duplicate-the exp0 productions to distinguish these from the others (exp0a).--Ugly: We need non-parenthesized post-operators for HaRP, and to parse both-these and normal left sections, we parse both as PostOp and let the post pass-mangle them into the correct form depending on context.--> trueexp :: { Exp L }-> : exp {% checkExpr $1 }--> exp :: { PExp L }-> : exp0b '::' truectype { ExpTypeSig ($1 <> $3 <** [$2]) $1 $3 }-> | exp0 { $1 }-> | exp0b qop { PostOp ($1 <> $2) $1 $2 }-> | exp0b '-<' exp { LeftArrApp ($1 <> $3 <** [$2]) $1 $3 }-> | exp0b '>-' exp { RightArrApp ($1 <> $3 <** [$2]) $1 $3 }-> | exp0b '-<<' exp { LeftArrHighApp ($1 <> $3 <** [$2]) $1 $3 }-> | exp0b '>>-' exp { RightArrHighApp ($1 <> $3 <** [$2]) $1 $3 }--> exp0 :: { PExp L }-> : exp0a { $1 }-> | exp0b { $1 }--> exp0a :: { PExp L }-> : exp0b qop exp10a { InfixApp ($1 <> $3) $1 $2 $3 }-> | exp10a { $1 }--> exp0b :: { PExp L }-> : exp0b qop exp10b { InfixApp ($1 <> $3) $1 $2 $3 }-> | exp10b { $1 }--> exp10a :: { PExp L }-> : '\\' apats '->' exp { Lambda (nIS $1 <++> ann $4 <** [$1,$3]) (reverse $2) $4 }-A let may bind implicit parameters-> | 'let' binds 'in' exp { Let (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }-> | 'if' exp 'then' exp 'else' exp { If (nIS $1 <++> ann $6 <** [$1,$3,$5]) $2 $4 $6 }-> | 'proc' apat '->' exp { Proc (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }-> | exppragma { $1 }--mdo blocks require the RecursiveDo extension enabled, but the lexer handles that.--> exp10b :: { PExp L }-> : 'case' exp 'of' altslist { let (als, inf, ss) = $4 in Case (nIS $1 <++> inf <** ($1:$3:ss)) $2 als }-> | '-' fexp { NegApp (nIS $1 <++> ann $2 <** [$1]) $2 }-> | 'do' stmtlist { let (sts, inf, ss) = $2 in Do (nIS $1 <++> inf <** $1:ss) sts }-> | 'mdo' stmtlist { let (sts, inf, ss) = $2 in MDo (nIS $1 <++> inf <** $1:ss) sts }-> | fexp { $1 }--> exppragma :: { PExp L }-> : '{-# CORE' STRING '#-}' exp { let Loc l (StringTok (s,_)) = $2 in CorePragma (nIS $1 <++> ann $4 <** [l,$3]) s $4 }-> | '{-# SCC' STRING '#-}' exp { let Loc l (StringTok (s,_)) = $2 in SCCPragma (nIS $1 <++> ann $4 <** [l,$3]) s $4 }-> | '{-# GENERATED' STRING INT ':' INT '-' INT ':' INT '#-}' exp-> { let { Loc l0 (StringTok (s,_)) = $2;-> Loc l1 (IntTok (i1,_)) = $3;-> Loc l2 (IntTok (i2,_)) = $5;-> Loc l3 (IntTok (i3,_)) = $7;-> Loc l4 (IntTok (i4,_)) = $9}-> in GenPragma (nIS $1 <++> ann $11 <** [$1,l0,l1,$4,l2,$6,l3,$8,l4,$10])-> s (fromInteger i1, fromInteger i2)-> (fromInteger i3, fromInteger i4) $11 }--> fexp :: { PExp L }-> : fexp aexp { App ($1 <> $2) $1 $2 }-> | aexp { $1 }--> apats :: { [Pat L] }-> : apats apat { $2 : $1 }-> | apat { [$1] }--> apat :: { Pat L }-> : aexp {% checkPattern $1 }-> | '!' aexp {% checkPattern (BangPat (nIS $1 <++> ann $2 <** [$1]) $2) }--UGLY: Because patterns and expressions are mixed, aexp has to be split into-two rules: One right-recursive and one left-recursive. Otherwise we get two-reduce/reduce-errors (for as-patterns and irrefutable patters).--Even though the variable in an as-pattern cannot be qualified, we use-qvar here to avoid a shift/reduce conflict, and then check it ourselves-(as for vars above).--Non-linear name binding, @:, requires RegularPatterns, but the lexer handles that.--> aexp :: { PExp L }-> : qvar '@' aexp {% do { n <- checkUnQual $1;-> return (AsPat ($1 <> $3 <** [$2]) n $3) } }-> | qvar '@:' aexp {% do { n <- checkUnQual $1;-> return (CAsRP ($1 <> $3 <** [$2]) n $3) } }-> | '~' aexp { IrrPat (nIS $1 <++> ann $2 <** [$1]) $2 }-> | aexp1 { $1 }--Note: The first two alternatives of aexp1 are not necessarily record-updates: they could be labeled constructions.-Generics-style explicit type arguments need the Generics extension, but-we check that in the lexer.--> aexp1 :: { PExp L }-> : aexp1 '{' '}' {% liftM (amap (const (ann $1 <++> nIS $3 <** [$2,$3]))) $ mkRecConstrOrUpdate $1 [] }-> | aexp1 '{' fbinds '}' {% liftM (amap (const (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4]))))-> $ mkRecConstrOrUpdate $1 (reverse (fst $3)) }-> | qvar '{|' truetype '|}' { ExplTypeArg (ann $1 <++> nIS $4 <** [$2,$4]) $1 $3 }-> | aexp2 { $1 }--According to the Report, the left section (e op) is legal iff (e op x)-parses equivalently to ((e) op x). Thus e must be an exp0b.-An implicit parameter can be used as an expression, enabled by the lexer.-Extensions using banana brackets are also enabled by the lexer. The only-thing we need to look at here is the erpats that use no non-standard lexemes.--> aexp2 :: { PExp L }-> : ivar { IPVar (ann $1) $1 }-> | qvar { Var (ann $1) $1 }-> | gcon { $1 }-> | literal { Lit (ann $1) $1 }-> | '(' texp ')' { Paren ($1 <^^> $3 <** [$1,$3]) $2 }-> | '(' texp tsectend { TupleSection ($1 <^^> head (snd $3) <** $1:reverse (snd $3)) (Just $2 : fst $3) }-> | '(' commas texp ')' { TupleSection ($1 <^^> $4 <** $1:reverse ($4:$2))-> (replicate (length $2 - 1) Nothing ++ [Just $3]) }-> | '(' commas texp tsectend { TupleSection ($1 <^^> head (snd $4) <** $1:reverse (snd $4 ++ $2))-> (replicate (length $2 - 1) Nothing ++ Just $3 : fst $4) }-> | '[' list ']' { amap (\l -> l <** [$3]) $ $2 ($1 <^^> $3 <** [$1]) }-> | '_' { WildCard (nIS $1) }-> | '(' erpats ')' {% checkEnabled RegularPatterns >> return (Paren ($1 <^^> $3 <** [$1,$3]) $2) }-> | '(|' sexps '|)' { SeqRP ($1 <^^> $3 <** ($1:reverse (snd $2) ++ [$3])) $ reverse (fst $2) }-> | '(|' exp '|' quals '|)' { GuardRP ($1 <^^> $5 <** ($1:$3 : snd $4 ++ [$5])) $2 $ (reverse $ fst $4) }-> | xml { $1 }--Template Haskell - all this is enabled in the lexer.-> | IDSPLICE { let Loc l (THIdEscape s) = $1 in SpliceExp (nIS l) $ IdSplice (nIS l) s }-> | '$(' trueexp ')' { SpliceExp ($1 <^^> $3 <** [$1,$3]) $ ParenSplice (ann $2) $2 }-> | '[|' trueexp '|]' { BracketExp ($1 <^^> $3 <** [$1,$3]) $ ExpBracket (ann $2) $2 }-> | '[p|' exp0 '|]' {% do { p <- checkPattern $2;-> return $ BracketExp ($1 <^^> $3 <** [$1,$3]) $ PatBracket (ann p) p } }-> | '[t|' truectype '|]' { let l = $1 <^^> $3 <** [$1,$3] in BracketExp l $ TypeBracket l $2 }-> | '[d|' open topdecls close '|]' { let l = $1 <^^> $5 <** ($1:snd $3 ++ [$5]) in BracketExp l $ DeclBracket l (fst $3) }-> | VARQUOTE qvar { VarQuote (nIS $1 <++> ann $2 <** [$1]) $2 }-> | VARQUOTE qcon { VarQuote (nIS $1 <++> ann $2 <** [$1]) $2 }-> | TYPQUOTE tyvar { TypQuote (nIS $1 <++> ann $2 <** [$1]) (UnQual (ann $2) $2) }-> | TYPQUOTE gtycon { TypQuote (nIS $1 <++> ann $2 <** [$1]) $2 }-> | QUASIQUOTE { let Loc l (THQuasiQuote (n,q)) = $1 in QuasiQuote (nIS l) n q }-End Template Haskell--> commas :: { [S] }-> : commas ',' { $2 : $1 }-> | ',' { [$1] }--> texp :: { PExp L }-> : exp { $1 }-> | qopm exp0 { PreOp ($1 <> $2) $1 $2 }-> | exp '->' exp {% do {checkEnabled ViewPatterns;-> return $ ViewPat ($1 <> $3 <** [$2]) $1 $3} }--> tsectend :: { ([Maybe (PExp L)],[S]) }-> : commas texp tsectend { let (mes, ss) = $3 in (replicate (length $1 - 1) Nothing ++ Just $2 : mes, ss ++ $1) }-> | commas texp ')' { (replicate (length $1 - 1) Nothing ++ [Just $2], $3 : $1) }-> | commas ')' { (replicate (length $1) Nothing, $2 : $1) }--------------------------------------------------------------------------------Harp Extensions--> sexps :: { ([PExp L],[S]) }-> : sexps ',' exp { ($3 : fst $1, $2 : snd $1) }-> | exp { ([$1],[]) }--Either patterns are left associative-> erpats :: { PExp L }-> : exp '|' erpats { EitherRP ($1 <> $3 <** [$2]) $1 $3 }-> | exp '|' exp { EitherRP ($1 <> $3 <** [$2]) $1 $3 }--------------------------------------------------------------------------------Hsx Extensions - requires XmlSyntax, but the lexer handles all that.--> xml :: { PExp L }-> : '<' name attrs mattr '>' children '</' name '>' {% do { n <- checkEqNames $2 $8;-> let { cn = reverse $6;-> as = reverse $3;-> l = $1 <^^> $9 <** [$1,$5,$7,srcInfoSpan (ann $8),$9] };-> return $ XTag l n as $4 cn } }-> | '<' name attrs mattr '/>' { XETag ($1 <^^> $5 <** [$1,$5]) $2 (reverse $3) $4 }-> | '<%' exp '%>' { XExpTag ($1 <^^> $3 <** [$1,$3]) $2 }--> children :: { [PExp L] }-> : children child { $2 : $1 }-> | {- empty -} { [] }--> child :: { PExp L }-> : PCDATA { let Loc l (XPCDATA pcd) = $1 in XPcdata (nIS l) pcd }-> | '<[' sexps ']>' { XRPats ($1 <^^> $3 <** (snd $2 ++ [$1,$3])) $ reverse (fst $2) }-> | xml { $1 }--> name :: { XName L }-> : xmlname ':' xmlname { let {Loc l1 s1 = $1; Loc l2 s2 = $3}-> in XDomName (nIS l1 <++> nIS l2 <** [l1,$2,l2]) s1 s2 }-> | xmlname { let Loc l str = $1 in XName (nIS l) str }--> xmlname :: { Loc String }-> : VARID { let Loc l (VarId s) = $1 in Loc l s }-> | CONID { let Loc l (ConId s) = $1 in Loc l s }-> | DVARID { let Loc l (DVarId s) = $1 in Loc l $ mkDVar s }-> | xmlkeyword { $1 }--> xmlkeyword :: { Loc String }-> : 'type' { Loc $1 "type" }-> | 'class' { Loc $1 "class" }-> | 'data' { Loc $1 "data" }-> | 'foreign' { Loc $1 "foreign" }-> | 'export' { Loc $1 "export" }-> | 'safe' { Loc $1 "safe" }-> | 'unsafe' { Loc $1 "unsafe" }-> | 'threadsafe' { Loc $1 "threadsafe" }-> | 'stdcall' { Loc $1 "stdcall" }-> | 'ccall' { Loc $1 "ccall" }-> | 'as' { Loc $1 "as" }-> | 'by' { Loc $1 "by" }-> | 'case' { Loc $1 "case" }-> | 'default' { Loc $1 "default" }-> | 'deriving' { Loc $1 "deriving" }-> | 'do' { Loc $1 "do" }-> | 'else' { Loc $1 "else" }-> | 'family' { Loc $1 "family" }-> | 'forall' { Loc $1 "forall" }-> | 'group' { Loc $1 "group" }-> | 'hiding' { Loc $1 "hiding" }-> | 'if' { Loc $1 "if" }-> | 'import' { Loc $1 "import" }-> | 'in' { Loc $1 "in" }-> | 'infix' { Loc $1 "infix" }-> | 'infixl' { Loc $1 "infixl" }-> | 'infixr' { Loc $1 "infixr" }-> | 'instance' { Loc $1 "instance" }-> | 'let' { Loc $1 "let" }-> | 'mdo' { Loc $1 "mdo" }-> | 'module' { Loc $1 "module" }-> | 'newtype' { Loc $1 "newtype" }-> | 'of' { Loc $1 "of" }-> | 'proc' { Loc $1 "proc" }-> | 'rec' { Loc $1 "rec" }-> | 'then' { Loc $1 "then" }-> | 'using' { Loc $1 "using" }-> | 'where' { Loc $1 "where" }-> | 'qualified' { Loc $1 "qualified" }---> attrs :: { [ParseXAttr L] }-> : attrs attr { $2 : $1 }-> | {- empty -} { [] }--> attr :: { ParseXAttr L }-> : name '=' aexp { XAttr ($1 <> $3 <** [$2]) $1 $3 }--> mattr :: { Maybe (PExp L) }--> : aexp { Just $1 }-> | {-empty-} { Nothing }--------------------------------------------------------------------------------List expressions--The rules below are little bit contorted to keep lexps left-recursive while-avoiding another shift/reduce-conflict.--> list :: { L -> PExp L }-> : texp { \l -> List l [$1] }-> | lexps { \l -> let (ps,ss) = $1 in List (l <** reverse ss) (reverse ps) }-> | texp '..' { \l -> EnumFrom (l <** [$2]) $1 }-> | texp ',' exp '..' { \l -> EnumFromThen (l <** [$2,$4]) $1 $3 }-> | texp '..' exp { \l -> EnumFromTo (l <** [$2]) $1 $3 }-> | texp ',' exp '..' exp { \l -> EnumFromThenTo (l <** [$2,$4]) $1 $3 $5 }-> | texp '|' pqualstmts { \l -> let (stss, ss) = $3 in ParComp (l <** ($2:ss)) $1 (reverse stss) }--> lexps :: { ([PExp L],[S]) }-> : lexps ',' texp { let (es, ss) = $1 in ($3 : es, $2 : ss) }-> | texp ',' texp { ([$3,$1], [$2]) }--------------------------------------------------------------------------------List comprehensions--> pqualstmts :: { ([[QualStmt L]],[S]) }-> : pqualstmts '|' qualstmts { let { (stss, ss1) = $1;-> (sts, ss2) = $3 }-> in (reverse sts : stss, ss1 ++ [$2] ++ reverse ss2) }-> | qualstmts { let (sts, ss) = $1 in ([reverse sts], reverse ss) }--> qualstmts :: { ([QualStmt L],[S]) }-> : qualstmts ',' qualstmt { let (sts, ss) = $1 in ($3 : sts, $2 : ss) }-> | qualstmt { ([$1],[]) }--> qualstmt :: { QualStmt L }-> : transformqual { $1 }-> | qual { QualStmt (ann $1) $1 }--> transformqual :: { QualStmt L }-> : 'then' trueexp { ThenTrans (nIS $1 <++> ann $2 <** [$1]) $2 }-> | 'then' trueexp 'by' trueexp { ThenBy (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }-> | 'then' 'group' 'by' trueexp { GroupBy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }-> | 'then' 'group' 'using' trueexp { GroupUsing (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }-> | 'then' 'group' 'by' trueexp 'using' trueexp { GroupByUsing (nIS $1 <++> ann $6 <** [$1,$2,$3,$5]) $4 $6 }--> quals :: { ([Stmt L],[S]) }-> : quals ',' qual { let (sts, ss) = $1 in ($3 : sts, $2 : ss) }-> | qual { ([$1],[]) }--> qual :: { Stmt L }-> : pat '<-' trueexp { Generator ($1 <> $3 <** [$2]) $1 $3 }-> | trueexp { Qualifier (ann $1) $1 }-> | 'let' binds { LetStmt (nIS $1 <++> ann $2 <** [$1]) $2 }---------------------------------------------------------------------------------Case alternatives--> altslist :: { ([Alt L],L,[S]) }-> : '{' alts '}' { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }-> | open alts close { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }--> alts :: { ([Alt L],[S]) }-> : optsemis alts1 optsemis { (reverse $ fst $2, $1 ++ snd $2 ++ $3) }--> alts1 :: { ([Alt L],[S]) }-> : alts1 semis alt { ($3 : fst $1, snd $1 ++ $2) }-> | alt { ([$1],[]) }--> alt :: { Alt L }-> : pat ralt optwhere { Alt ($1 <> $2 <+?> (fmap ann) (fst $3) <** snd $3) $1 $2 (fst $3) }--> ralt :: { GuardedAlts L }-> : '->' trueexp { UnGuardedAlt (nIS $1 <++> ann $2 <** [$1]) $2 }-> | gdpats { GuardedAlts (snd $1) (reverse $ fst $1) }--> gdpats :: { ([GuardedAlt L],L) }-> : gdpats gdpat { ($2 : fst $1, snd $1 <++> ann $2) }-> | gdpat { ([$1], ann $1) }--A guard can be a pattern guard if PatternGuards is enabled, hence quals instead of exp0.-> gdpat :: { GuardedAlt L }-> : '|' quals '->' trueexp {% do { checkPatternGuards (fst $2);-> let {l = nIS $1 <++> ann $4 <** ($1:snd $2 ++ [$3])};-> return (GuardedAlt l (reverse (fst $2)) $4) } }--> pat :: { Pat L }-> : exp {% checkPattern $1 }-> | '!' aexp {% checkPattern (BangPat (nIS $1 <++> ann $2 <** [$1]) $2) }-------------------------------------------------------------------------------Statement sequences--As per the Report, but with stmt expanded to simplify building the list-without introducing conflicts. This also ensures that the last stmt is-an expression.--TODO: The points can't be added here, must be propagated!--> stmtlist :: { ([Stmt L],L,[S]) }-> : '{' stmts '}' { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }-> | open stmts close { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }--> stmts :: { ([Stmt L],[S]) }-> : stmt stmts1 { ($1 : fst $2, snd $2) }-> | ';' stmts { (fst $2, $1 : snd $2) }-> | {- empty -} { ([],[]) }--> stmts1 :: { ([Stmt L],[S]) }-> : ';' stmts { (fst $2, $1 : snd $2) }-> | {- empty -} { ([],[]) }--A let statement may bind implicit parameters.-> stmt :: { Stmt L }-> : 'let' binds { LetStmt (nIS $1 <++> ann $2 <** [$1]) $2 }-> | pat '<-' trueexp { Generator ($1 <> $3 <** [$2]) $1 $3 }-> | trueexp { Qualifier (ann $1) $1 }-> | 'rec' stmtlist { let (stms,inf,ss) = $2 in RecStmt (nIS $1 <++> inf <** $1:ss) stms }--------------------------------------------------------------------------------Record Field Update/Construction--> fbinds :: { ([PFieldUpdate L],[S]) }-> : fbinds ',' fbind { let (fbs, ss) = $1 in ($3 : fbs, $2 : ss) }-> | fbind { ([$1],[]) }--Puns and wild cards need the respective extensions enabled.--> fbind :: { PFieldUpdate L }-> : qvar '=' exp { FieldUpdate ($1 <>$3 <** [$2]) $1 $3 }-> | qvar {% checkEnabled NamedFieldPuns >> checkUnQual $1 >>= return . FieldPun (ann $1) }-> | '..' {% checkEnabled RecordWildCards >> return (FieldWildcard (nIS $1)) }--------------------------------------------------------------------------------Implicit parameter bindings - need the ImplicitParameter extension enabled, but the lexer handles that.--> ipbinds :: { ([IPBind L],[S]) }-> : optsemis ipbinds1 optsemis { (reverse (fst $2), reverse $1 ++ snd $2 ++ reverse $3) }--> ipbinds1 :: { ([IPBind L],[S]) }-> : ipbinds1 semis ipbind { ($3 : fst $1, snd $1 ++ reverse $2) }-> | ipbind { ([$1],[]) }--> ipbind :: { IPBind L }-> : ivar '=' trueexp { IPBind ($1 <> $3 <** [$2]) $1 $3 }--------------------------------------------------------------------------------Variables, Constructors and Operators.--> gcon :: { PExp L }-> : '(' ')' { p_unit_con ($1 <^^> $2 <** [$1,$2]) }-> | '[' ']' { List ($1 <^^> $2 <** [$1,$2]) [] }-> | '(' commas ')' { p_tuple_con ($1 <^^> $3 <** $1:reverse ($3:$2)) Boxed (length $2) }-> | '(#' '#)' { p_unboxed_singleton_con ($1 <^^> $2 <** [$1,$2]) }-> | '(#' commas '#)' { p_tuple_con ($1 <^^> $3 <** $1:reverse ($3:$2)) Unboxed (length $2) }-> | qcon { Con (ann $1) $1 }--> var :: { Name L }-> : varid { $1 }-> | '(' varsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> var_no_safety :: { Name L }-> : varid_no_safety { $1 }-> | '(' varsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qvar :: { QName L }-> : qvarid { $1 }-> | '(' qvarsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--Implicit parameter-> ivar :: { IPName L }-> : ivarid { $1 }--> con :: { Name L }-> : conid { $1 }-> | '(' consym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qcon :: { QName L }-> : qconid { $1 }-> | '(' gconsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> varop :: { Name L }-> : varsym { $1 }-> | '`' varid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qvarop :: { QName L }-> : qvarsym { $1 }-> | '`' qvarid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qvaropm :: { QName L }-> : qvarsymm { $1 }-> | '`' qvarid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> conop :: { Name L }-> : consym { $1 }-> | '`' conid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> qconop :: { QName L }-> : gconsym { $1 }-> | '`' qconid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }--> op :: { Op L }-> : varop { VarOp (ann $1) $1 }-> | conop { ConOp (ann $1) $1 }--> qop :: { QOp L }-> : qvarop { QVarOp (ann $1) $1 }-> | qconop { QConOp (ann $1) $1 }--> qopm :: { QOp L }-> : qvaropm { QVarOp (ann $1) $1 }-> | qconop { QConOp (ann $1) $1 }--> gconsym :: { QName L }-> : ':' { list_cons_name (nIS $1) }-> | qconsym { $1 }--------------------------------------------------------------------------------Identifiers and Symbols--> qvarid :: { QName L }-> : varid { UnQual (ann $1) $1 }-> | QVARID { let {Loc l (QVarId q) = $1; nis = nIS l}-> in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) }--> varid_no_safety :: { Name L }-> : VARID { let Loc l (VarId v) = $1 in Ident (nIS l) v }-> | 'as' { as_name (nIS $1) }-> | 'qualified' { qualified_name (nIS $1) }-> | 'hiding' { hiding_name (nIS $1) }-> | 'export' { export_name (nIS $1) }-> | 'stdcall' { stdcall_name (nIS $1) }-> | 'ccall' { ccall_name (nIS $1) }--> varid :: { Name L }-> : varid_no_safety { $1 }-> | 'safe' { safe_name (nIS $1) }-> | 'unsafe' { unsafe_name (nIS $1) }-> | 'threadsafe' { threadsafe_name (nIS $1) }---Implicit parameter-> ivarid :: { IPName L }-> : IDUPID { let Loc l (IDupVarId i) = $1 in IPDup (nIS l) i }-> | ILINID { let Loc l (ILinVarId i) = $1 in IPLin (nIS l) i }--> qconid :: { QName L }-> : conid { UnQual (ann $1) $1 }-> | QCONID { let {Loc l (QConId q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) }--> conid :: { Name L }-> : CONID { let Loc l (ConId c) = $1 in Ident (nIS l) c }--> qconsym :: { QName L }-> : consym { UnQual (ann $1) $1 }-> | QCONSYM { let {Loc l (QConSym q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) }--> consym :: { Name L }-> : CONSYM { let Loc l (ConSym c) = $1 in Symbol (nIS l) c }--> qvarsym :: { QName L }-> : varsym { UnQual (ann $1) $1 }-> | qvarsym1 { $1 }--> qvarsymm :: { QName L }-> : varsymm { UnQual (ann $1) $1 }-> | qvarsym1 { $1 }--> varsym :: { Name L }-> : VARSYM { let Loc l (VarSym v) = $1 in Symbol (nIS l) v }-> | '-' { minus_name (nIS $1) }-> | '!' { bang_name (nIS $1) }-> | '.' { dot_name (nIS $1) }-> | '*' { star_name (nIS $1) }--> varsymm :: { Name L } -- varsym not including '-'-> : VARSYM { let Loc l (VarSym v) = $1 in Symbol (nIS l) v }-> | '!' { bang_name (nIS $1) }-> | '.' { dot_name (nIS $1) }-> | '*' { star_name (nIS $1) }--> qvarsym1 :: { QName L }-> : QVARSYM { let {Loc l (QVarSym q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) }--> literal :: { Literal L }-> : INT { let Loc l (IntTok (i,raw)) = $1 in Int (nIS l) i raw }-> | CHAR { let Loc l (Character (c,raw)) = $1 in Char (nIS l) c raw }-> | RATIONAL { let Loc l (FloatTok (r,raw)) = $1 in Frac (nIS l) r raw }-> | STRING { let Loc l (StringTok (s,raw)) = $1 in String (nIS l) s raw }-> | PRIMINT { let Loc l (IntTokHash (i,raw)) = $1 in PrimInt (nIS l) i raw }-> | PRIMWORD { let Loc l (WordTokHash (w,raw)) = $1 in PrimWord (nIS l) w raw }-> | PRIMFLOAT { let Loc l (FloatTokHash (f,raw)) = $1 in PrimFloat (nIS l) f raw }-> | PRIMDOUBLE { let Loc l (DoubleTokHash (d,raw)) = $1 in PrimDouble (nIS l) d raw }-> | PRIMCHAR { let Loc l (CharacterHash (c,raw)) = $1 in PrimChar (nIS l) c raw }-> | PRIMSTRING { let Loc l (StringHash (s,raw)) = $1 in PrimString (nIS l) s raw }--------------------------------------------------------------------------------Layout--> open :: { S } : {% pushCurrentContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x) (return x) -} }--> close :: { S }-> : vccurly { $1 {- >>= \x -> trace (show x ++ show x ++ show x) (return x) -} } -- context popped in lexer.-> | error {% popContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x ++ show x) (return x) -} }--------------------------------------------------------------------------------Miscellaneous (mostly renamings)--> modid :: { ModuleName L }-> : CONID { let Loc l (ConId n) = $1 in ModuleName (nIS l) n }-> | QCONID { let Loc l (QConId n) = $1 in ModuleName (nIS l) (fst n ++ '.':snd n) }--> tyconorcls :: { Name L }-> : con { $1 }--> qtyconorcls :: { QName L }-> : qcon { $1 }--> tyvar :: { Name L }-> : varid { $1 }--> qtyvarop :: { QName L }-> qtyvarop : '`' tyvar '`' { UnQual ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }-> | tyvarsym { UnQual (ann $1) $1 }--> tyvarsym :: { Name L }-> tyvarsym : VARSYM { let Loc l (VarSym x) = $1 in Symbol (nIS l) x }---------------------------------------------------------------------------------> {--> type L = SrcSpanInfo -- just for convenience-> type S = SrcSpan--> parseError :: Loc Token -> P a-> parseError t = fail $ "Parse error: " ++ show t--> (<>) :: (Annotated a, Annotated b) => a SrcSpanInfo -> b SrcSpanInfo -> SrcSpanInfo-> a <> b = ann a <++> ann b->-> infixl 6 <>--> -- | Class to reuse the parse function at many different types.-> class Parseable ast where-> -- | Parse a string with default mode.-> parse :: String -> ParseResult ast-> -- | Parse a string with an explicit mode.-> parseWithMode :: ParseMode -> String -> ParseResult ast-> -- | Parse a string with an explicit mode, returning all comments along the AST-> parseWithComments :: ParseMode -> String -> ParseResult (ast, [Comment])-->-> instance SrcInfo loc => Parseable (Module loc) where-> parse = fmap (fmap fromSrcInfo) . parseModule-> parseWithMode md = fmap (fmap fromSrcInfo) . parseModuleWithMode md-> parseWithComments md s = parseModuleWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs)->-> instance SrcInfo loc => Parseable (Exp loc) where-> parse = fmap (fmap fromSrcInfo) . parseExp-> parseWithMode md = fmap (fmap fromSrcInfo) . parseExpWithMode md-> parseWithComments md s = parseExpWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs)->-> instance SrcInfo loc => Parseable (Pat loc) where-> parse = fmap (fmap fromSrcInfo) . parsePat-> parseWithMode md = fmap (fmap fromSrcInfo) . parsePatWithMode md-> parseWithComments md s = parsePatWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs)->-> instance SrcInfo loc => Parseable (Decl loc) where-> parse = fmap (fmap fromSrcInfo) . parseDecl-> parseWithMode md = fmap (fmap fromSrcInfo) . parseDeclWithMode md-> parseWithComments md s = parseDeclWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs)->-> instance SrcInfo loc => Parseable (Type loc) where-> parse = fmap (fmap fromSrcInfo) . parseType-> parseWithMode md = fmap (fmap fromSrcInfo) . parseTypeWithMode md-> parseWithComments md s = parseTypeWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs)->--> -- | Parse of a string, which should contain a complete Haskell module.-> parseModule :: String -> ParseResult (Module L)-> parseModule = simpleParse mparseModule--> -- | Parse of a string containing a complete Haskell module, using an explicit mode.-> parseModuleWithMode :: ParseMode -> String -> ParseResult (Module L)-> parseModuleWithMode = modeParse mparseModule--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseModuleWithComments :: ParseMode -> String -> ParseResult (Module L, [Comment])-> parseModuleWithComments = commentParse mparseModule--> -- | Parse of a string containing a Haskell expression.-> parseExp :: String -> ParseResult (Exp L)-> parseExp = simpleParse mparseExp--> -- | Parse of a string containing a Haskell expression, using an explicit mode.-> parseExpWithMode :: ParseMode -> String -> ParseResult (Exp L)-> parseExpWithMode = modeParse mparseExp--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseExpWithComments :: ParseMode -> String -> ParseResult (Exp L, [Comment])-> parseExpWithComments = commentParse mparseExp--> -- | Parse of a string containing a Haskell pattern.-> parsePat :: String -> ParseResult (Pat L)-> parsePat = simpleParse mparsePat--> -- | Parse of a string containing a Haskell pattern, using an explicit mode.-> parsePatWithMode :: ParseMode -> String -> ParseResult (Pat L)-> parsePatWithMode = modeParse mparsePat--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parsePatWithComments :: ParseMode -> String -> ParseResult (Pat L, [Comment])-> parsePatWithComments = commentParse mparsePat--> -- | Parse of a string containing a Haskell top-level declaration.-> parseDecl :: String -> ParseResult (Decl L)-> parseDecl = simpleParse mparseDecl--> -- | Parse of a string containing a Haskell top-level declaration, using an explicit mode.-> parseDeclWithMode :: ParseMode -> String -> ParseResult (Decl L)-> parseDeclWithMode = modeParse mparseDecl--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl L, [Comment])-> parseDeclWithComments = commentParse mparseDecl--> -- | Parse of a string containing a Haskell type.-> parseType :: String -> ParseResult (Type L)-> parseType = runParser mparseType--> -- | Parse of a string containing a Haskell type, using an explicit mode.-> parseTypeWithMode :: ParseMode -> String -> ParseResult (Type L)-> parseTypeWithMode mode = runParserWithMode mode mparseType--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseTypeWithComments :: ParseMode -> String -> ParseResult (Type L, [Comment])-> parseTypeWithComments mode str = runParserWithModeComments mode mparseType str---> simpleParse :: AppFixity a => P (a L) -> String -> ParseResult (a L)-> simpleParse p = fmap (applyFixities preludeFixities) . runParser p--> modeParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L)-> modeParse p mode = fmap (applyFixities (fixities mode)) . runParserWithMode mode p--> commentParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L, [Comment])-> commentParse p mode str = runParserWithModeComments mode p str-> >>= \(ast, cs) -> return (applyFixities (fixities mode) ast, cs)--> -- | Partial parse of a string starting with a series of top-level option pragmas.-> getTopPragmas :: String -> ParseResult [OptionPragma L]-> getTopPragmas = runParser (mfindOptPragmas >>= \(ps,_,_) -> return ps)-->--> }
− src/Language/Haskell/Exts/Annotated/Pretty.hs
@@ -1,1239 +0,0 @@--------------------------------------------------------------------------------- |--- Module : Language.Haskell.Exts.Pretty--- Copyright : (c) Niklas Broberg 2004-2009,--- (c) The GHC Team, Noel Winstanley 1997-2000--- License : BSD-style (see the file LICENSE.txt)------ Maintainer : Niklas Broberg, d00nibro@chalmers.se--- Stability : stable--- Portability : portable------ Pretty printer for Haskell with extensions.-----------------------------------------------------------------------------------module Language.Haskell.Exts.Annotated.Pretty (- -- * Pretty printing- Pretty,- prettyPrintStyleMode, prettyPrintWithMode, prettyPrint,- -- * Pretty-printing styles (from "Text.PrettyPrint.HughesPJ")- P.Style(..), P.style, P.Mode(..),- -- * Haskell formatting modes- PPHsMode(..), Indent, PPLayout(..), defaultMode) where--import Language.Haskell.Exts.Annotated.Syntax-import Language.Haskell.Exts.Annotated.SrcLoc--import qualified Text.PrettyPrint as P-import Data.List (intersperse)--infixl 5 $$$----------------------------------------------------------------------------------- | Varieties of layout we can use.-data PPLayout = PPOffsideRule -- ^ classical layout- | PPSemiColon -- ^ classical layout made explicit- | PPInLine -- ^ inline decls, with newlines between them- | PPNoLayout -- ^ everything on a single line- deriving Eq--type Indent = Int---- | Pretty-printing parameters.------ /Note:/ the 'onsideIndent' must be positive and less than all other indents.-data PPHsMode = PPHsMode {- -- | indentation of a class or instance- classIndent :: Indent,- -- | indentation of a @do@-expression- doIndent :: Indent,- -- | indentation of the body of a- -- @case@ expression- caseIndent :: Indent,- -- | indentation of the declarations in a- -- @let@ expression- letIndent :: Indent,- -- | indentation of the declarations in a- -- @where@ clause- whereIndent :: Indent,- -- | indentation added for continuation- -- lines that would otherwise be offside- onsideIndent :: Indent,- -- | blank lines between statements?- spacing :: Bool,- -- | Pretty-printing style to use- layout :: PPLayout,- -- | add GHC-style @LINE@ pragmas to output?- linePragmas :: Bool- }---- | The default mode: pretty-print using the offside rule and sensible--- defaults.-defaultMode :: PPHsMode-defaultMode = PPHsMode{- classIndent = 8,- doIndent = 3,- caseIndent = 4,- letIndent = 4,- whereIndent = 6,- onsideIndent = 2,- spacing = True,- layout = PPOffsideRule,- linePragmas = False- }---- | Pretty printing monad-newtype DocM s a = DocM (s -> a)--instance Functor (DocM s) where- fmap f xs = do x <- xs; return (f x)--instance Monad (DocM s) where- (>>=) = thenDocM- (>>) = then_DocM- return = retDocM--{-# INLINE thenDocM #-}-{-# INLINE then_DocM #-}-{-# INLINE retDocM #-}-{-# INLINE unDocM #-}-{-# INLINE getPPEnv #-}--thenDocM :: DocM s a -> (a -> DocM s b) -> DocM s b-thenDocM m k = DocM $ (\s -> case unDocM m $ s of a -> unDocM (k a) $ s)--then_DocM :: DocM s a -> DocM s b -> DocM s b-then_DocM m k = DocM $ (\s -> case unDocM m $ s of _ -> unDocM k $ s)--retDocM :: a -> DocM s a-retDocM a = DocM (\_s -> a)--unDocM :: DocM s a -> (s -> a)-unDocM (DocM f) = f---- all this extra stuff, just for this one function.-getPPEnv :: DocM s s-getPPEnv = DocM id---- So that pp code still looks the same--- this means we lose some generality though---- | The document type produced by these pretty printers uses a 'PPHsMode'--- environment.-type Doc = DocM PPHsMode P.Doc---- | Things that can be pretty-printed, including all the syntactic objects--- in "Language.Haskell.Exts.Syntax".-class Pretty a where- -- | Pretty-print something in isolation.- pretty :: a -> Doc- -- | Pretty-print something in a precedence context.- prettyPrec :: Int -> a -> Doc- pretty = prettyPrec 0- prettyPrec _ = pretty---- The pretty printing combinators--empty :: Doc-empty = return P.empty--nest :: Int -> Doc -> Doc-nest i m = m >>= return . P.nest i----- Literals--text, ptext :: String -> Doc-text = return . P.text-ptext = return . P.text--char :: Char -> Doc-char = return . P.char--int :: Int -> Doc-int = return . P.int--integer :: Integer -> Doc-integer = return . P.integer--float :: Float -> Doc-float = return . P.float--double :: Double -> Doc-double = return . P.double--rational :: Rational -> Doc-rational = return . P.rational---- Simple Combining Forms--parens, brackets, braces,quotes,doubleQuotes :: Doc -> Doc-parens d = d >>= return . P.parens-brackets d = d >>= return . P.brackets-braces d = d >>= return . P.braces-quotes d = d >>= return . P.quotes-doubleQuotes d = d >>= return . P.doubleQuotes--parensIf :: Bool -> Doc -> Doc-parensIf True = parens-parensIf False = id---- Constants--semi,comma,colon,space,equals :: Doc-semi = return P.semi-comma = return P.comma-colon = return P.colon-space = return P.space-equals = return P.equals--lparen,rparen,lbrack,rbrack,lbrace,rbrace :: Doc-lparen = return P.lparen-rparen = return P.rparen-lbrack = return P.lbrack-rbrack = return P.rbrack-lbrace = return P.lbrace-rbrace = return P.rbrace---- Combinators--(<>),(<+>),($$),($+$) :: Doc -> Doc -> Doc-aM <> bM = do{a<-aM;b<-bM;return (a P.<> b)}-aM <+> bM = do{a<-aM;b<-bM;return (a P.<+> b)}-aM $$ bM = do{a<-aM;b<-bM;return (a P.$$ b)}-aM $+$ bM = do{a<-aM;b<-bM;return (a P.$+$ b)}--hcat,hsep,vcat,sep,cat,fsep,fcat :: [Doc] -> Doc-hcat dl = sequence dl >>= return . P.hcat-hsep dl = sequence dl >>= return . P.hsep-vcat dl = sequence dl >>= return . P.vcat-sep dl = sequence dl >>= return . P.sep-cat dl = sequence dl >>= return . P.cat-fsep dl = sequence dl >>= return . P.fsep-fcat dl = sequence dl >>= return . P.fcat---- Some More--hang :: Doc -> Int -> Doc -> Doc-hang dM i rM = do{d<-dM;r<-rM;return $ P.hang d i r}---- Yuk, had to cut-n-paste this one from Pretty.hs-punctuate :: Doc -> [Doc] -> [Doc]-punctuate _ [] = []-punctuate p (d1:ds) = go d1 ds- where- go d [] = [d]- go d (e:es) = (d <> p) : go e es---- | render the document with a given style and mode.-renderStyleMode :: P.Style -> PPHsMode -> Doc -> String-renderStyleMode ppStyle ppMode d = P.renderStyle ppStyle . unDocM d $ ppMode---- | render the document with a given mode.-renderWithMode :: PPHsMode -> Doc -> String-renderWithMode = renderStyleMode P.style---- | render the document with 'defaultMode'.-render :: Doc -> String-render = renderWithMode defaultMode---- | pretty-print with a given style and mode.-prettyPrintStyleMode :: Pretty a => P.Style -> PPHsMode -> a -> String-prettyPrintStyleMode ppStyle ppMode = renderStyleMode ppStyle ppMode . pretty---- | pretty-print with the default style and a given mode.-prettyPrintWithMode :: Pretty a => PPHsMode -> a -> String-prettyPrintWithMode = prettyPrintStyleMode P.style---- | pretty-print with the default style and 'defaultMode'.-prettyPrint :: Pretty a => a -> String-prettyPrint = prettyPrintWithMode defaultMode--fullRenderWithMode :: PPHsMode -> P.Mode -> Int -> Float ->- (P.TextDetails -> a -> a) -> a -> Doc -> a-fullRenderWithMode ppMode m i f fn e mD =- P.fullRender m i f fn e $ (unDocM mD) ppMode---fullRender :: P.Mode -> Int -> Float -> (P.TextDetails -> a -> a)- -> a -> Doc -> a-fullRender = fullRenderWithMode defaultMode--------------------------- Pretty-Print a Module ---------------------instance SrcInfo pos => Pretty (Module pos) where- pretty (Module pos mbHead os imp decls) =- markLine pos $- myVcat $ map pretty os ++- (case mbHead of- Nothing -> id- Just h -> \x -> [topLevel (pretty h) x])- (map pretty imp ++ map pretty decls)- pretty (XmlPage pos os n attrs mattr cs) =- markLine pos $- myVcat $ map pretty os ++- [let ax = maybe [] (return . pretty) mattr- in hcat $- (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):- map pretty cs ++ [myFsep $ [text "</" <> pretty n, char '>']]]- pretty (XmlHybrid pos mbHead os imp decls n attrs mattr cs) =- markLine pos $- myVcat $ map pretty os ++ [text "<%"] ++- (case mbHead of- Nothing -> id- Just h -> \x -> [topLevel (pretty h) x])- (map pretty imp ++ map pretty decls ++- [let ax = maybe [] (return . pretty) mattr- in hcat $- (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):- map pretty cs ++ [myFsep $ [text "</" <> pretty n, char '>']]])------------------------------ Module Header -------------------------------instance Pretty (ModuleHead l) where- pretty (ModuleHead _ m mbWarn mbExportList) = mySep [- text "module",- pretty m,- maybePP pretty mbWarn,- maybePP pretty mbExportList,- text "where"]--instance Pretty (WarningText l) where- pretty = ppWarnTxt--ppWarnTxt :: WarningText l -> Doc-ppWarnTxt (DeprText _ s) = mySep [text "{-# DEPRECATED", text s, text "#-}"]-ppWarnTxt (WarnText _ s) = mySep [text "{-# WARNING", text s, text "#-}"]--instance Pretty (ModuleName l) where- pretty (ModuleName _ modName) = text modName--instance Pretty (ExportSpecList l) where- pretty (ExportSpecList _ especs) = parenList $ map pretty especs--instance Pretty (ExportSpec l) where- pretty (EVar _ name) = pretty name- pretty (EAbs _ name) = pretty name- pretty (EThingAll _ name) = pretty name <> text "(..)"- pretty (EThingWith _ name nameList) =- pretty name <> (parenList . map pretty $ nameList)- pretty (EModuleContents _ m) = text "module" <+> pretty m--instance SrcInfo pos => Pretty (ImportDecl pos) where- pretty (ImportDecl pos m qual src mbPkg mbName mbSpecs) =- markLine pos $- mySep [text "import",- if src then text "{-# SOURCE #-}" else empty,- if qual then text "qualified" else empty,- maybePP (\s -> text (show s)) mbPkg,- pretty m,- maybePP (\m' -> text "as" <+> pretty m') mbName,- maybePP exports mbSpecs]- where- exports (ImportSpecList _ b specList) =- if b then text "hiding" <+> specs else specs- where specs = parenList . map pretty $ specList--instance Pretty (ImportSpec l) where- pretty (IVar _ name) = pretty name- pretty (IAbs _ name) = pretty name- pretty (IThingAll _ name) = pretty name <> text "(..)"- pretty (IThingWith _ name nameList) =- pretty name <> (parenList . map pretty $ nameList)--------------------------- Declarations -------------------------------instance SrcInfo pos => Pretty (Decl pos) where- pretty (TypeDecl loc dhead htype) =- blankline $- markLine loc $- mySep [text "type", pretty dhead, equals, pretty htype]-- pretty (DataDecl loc don context dhead constrList derives) =- blankline $- markLine loc $- mySep [pretty don, ppContext context, pretty dhead]- <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))- (map pretty constrList))- $$$ ppDeriving derives)-- pretty (GDataDecl loc don context dhead optkind gadtList derives) =- blankline $- markLine loc $- mySep ( [pretty don, ppContext context, pretty dhead]- ++ ppOptKind optkind ++ [text "where"])- $$$ ppBody classIndent (map pretty gadtList)- $$$ ppDeriving derives-- pretty (TypeFamDecl loc dhead optkind) =- blankline $- markLine loc $- mySep ([text "type", text "family", pretty dhead]- ++ ppOptKind optkind)-- pretty (DataFamDecl loc context dhead optkind) =- blankline $- markLine loc $- mySep ( [text "data", text "family", ppContext context, pretty dhead] ++ ppOptKind optkind)-- pretty (TypeInsDecl loc ntype htype) =- blankline $- markLine loc $- mySep [text "type", text "instance", pretty ntype, equals, pretty htype]-- pretty (DataInsDecl loc don ntype constrList derives) =- blankline $- markLine loc $- mySep [pretty don, text "instance", pretty ntype]- <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))- (map pretty constrList))- $$$ ppDeriving derives)-- pretty (GDataInsDecl loc don ntype optkind gadtList derives) =- blankline $- markLine loc $- mySep ( [pretty don, text "instance", pretty ntype]- ++ ppOptKind optkind ++ [text "where"])- $$$ ppBody classIndent (map pretty gadtList)- $$$ ppDeriving derives-- --m{spacing=False}- -- special case for empty class declaration- pretty (ClassDecl pos context dhead fundeps Nothing) =- blankline $- markLine pos $- mySep [text "class", ppContext context, pretty dhead, ppFunDeps fundeps]- pretty (ClassDecl pos context dhead fundeps (Just declList)) =- blankline $- markLine pos $- mySep [text "class", ppContext context, pretty dhead, ppFunDeps fundeps, text "where"]- $$$ ppBody classIndent (map pretty declList)-- -- m{spacing=False}- -- special case for empty instance declaration- pretty (InstDecl pos context ihead Nothing) =- blankline $- markLine pos $- mySep [text "instance", ppContext context, pretty ihead]- pretty (InstDecl pos context ihead (Just declList)) =- blankline $- markLine pos $- mySep ( [text "instance", ppContext context, pretty ihead, text "where"])- $$$ ppBody classIndent (map pretty declList)-- pretty (DerivDecl pos context ihead) =- blankline $- markLine pos $- mySep [text "deriving", text "instance", ppContext context, pretty ihead]- pretty (DefaultDecl pos htypes) =- blankline $- markLine pos $- text "default" <+> parenList (map pretty htypes)-- pretty (SpliceDecl pos splice) =- blankline $- markLine pos $- pretty splice-- pretty (TypeSig pos nameList qualType) =- blankline $- markLine pos $- mySep ((punctuate comma . map pretty $ nameList)- ++ [text "::", pretty qualType])-- pretty (FunBind _ matches) = do- e <- fmap layout getPPEnv- case e of PPOffsideRule -> foldr ($$$) empty (map pretty matches)- _ -> foldr (\x y -> x <> semi <> y) empty (map pretty matches)-- pretty (PatBind pos pat optsig rhs whereBinds) =- markLine pos $- myFsep [pretty pat, maybePP ppSig optsig, pretty rhs] $$$ ppWhere whereBinds-- pretty (InfixDecl pos assoc prec opList) =- blankline $- markLine pos $- mySep ([pretty assoc, maybePP int prec]- ++ (punctuate comma . map pretty $ opList))-- pretty (ForImp pos cconv msaf mstr name typ) =- blankline $- markLine pos $- mySep [text "foreign import", pretty cconv, maybePP pretty msaf,- maybePP (text . show) mstr, pretty name, text "::", pretty typ]-- pretty (ForExp pos cconv mstr name typ) =- blankline $- markLine pos $- mySep [text "foreign export", pretty cconv,- maybePP (text . show) mstr, pretty name, text "::", pretty typ]-- pretty (RulePragmaDecl pos rules) =- blankline $- markLine pos $- myVcat $ text "{-# RULES" : map pretty rules ++ [text " #-}"]-- pretty (DeprPragmaDecl pos deprs) =- blankline $- markLine pos $- myVcat $ text "{-# DEPRECATED" : map ppWarnDepr deprs ++ [text " #-}"]-- pretty (WarnPragmaDecl pos deprs) =- blankline $- markLine pos $- myVcat $ text "{-# WARNING" : map ppWarnDepr deprs ++ [text " #-}"]-- pretty (InlineSig pos inl mactiv name) =- blankline $- markLine pos $- mySep [text (if inl then "{-# INLINE" else "{-# NOINLINE"), maybePP pretty mactiv, pretty name, text "#-}"]-- pretty (SpecSig pos name types) =- blankline $- markLine pos $- mySep $ [text "{-# SPECIALISE", pretty name, text "::"]- ++ punctuate comma (map pretty types) ++ [text "#-}"]-- pretty (SpecInlineSig pos inl mactiv name types) =- blankline $- markLine pos $- mySep $ [text "{-# SPECIALISE", text (if inl then "INLINE" else "NOINLINE"),- maybePP pretty mactiv, pretty name, text "::"]- ++ (punctuate comma $ map pretty types) ++ [text "#-}"]-- pretty (InstSig pos context ihead) =- blankline $- markLine pos $- mySep $ [text "{-# SPECIALISE", text "instance", ppContext context, pretty ihead, text "#-}"]---instance Pretty (DeclHead l) where- pretty (DHead l n tvs) = mySep (pretty n : map pretty tvs)- pretty (DHInfix l tva n tvb) = mySep [pretty tva, pretty n, pretty tvb]- pretty (DHParen l dh) = parens (pretty dh)--instance Pretty (InstHead l) where- pretty (IHead l qn ts) = mySep (pretty qn : map pretty ts)- pretty (IHInfix l ta qn tb) = mySep [pretty ta, pretty qn, pretty tb]- pretty (IHParen l ih) = parens (pretty ih)--instance Pretty (DataOrNew l) where- pretty (DataType _) = text "data"- pretty (NewType _) = text "newtype"--instance Pretty (Assoc l) where- pretty (AssocNone _) = text "infix"- pretty (AssocLeft _) = text "infixl"- pretty (AssocRight _) = text "infixr"--instance SrcInfo pos => Pretty (Match pos) where- pretty (Match pos f ps rhs whereBinds) =- markLine pos $- myFsep (pretty f : map (prettyPrec 2) ps ++ [pretty rhs])- $$$ ppWhere whereBinds-{- where- lhs = case ps of- l:r:ps' | isSymbolName f ->- let hd = [pretty l, ppName f, pretty r] in- if null ps' then hd- else parens (myFsep hd) : map (prettyPrec 2) ps'- _ -> pretty f : map (prettyPrec 2) ps -}- pretty (InfixMatch pos a f b rhs whereBinds) =- markLine pos $- myFsep [pretty a, pretty f, pretty b, pretty rhs]- $$$ ppWhere whereBinds--ppWhere :: SrcInfo loc => Maybe (Binds loc) -> Doc-ppWhere Nothing = empty-ppWhere (Just (BDecls _ [])) = empty -- this case is really an anomaly-ppWhere (Just (BDecls _ l)) = nest 2 (text "where" $$$ ppBody whereIndent (map pretty l))-ppWhere (Just (IPBinds _ b)) = nest 2 (text "where" $$$ ppBody whereIndent (map pretty b))--ppSig :: (Type l) -> Doc-ppSig t = text "::" <+> pretty t--instance SrcInfo loc => Pretty (ClassDecl loc) where- pretty (ClsDecl _ decl) = pretty decl-- pretty (ClsDataFam loc context dhead optkind) =- markLine loc $- mySep ( [text "data", ppContext context, pretty dhead] ++ ppOptKind optkind)-- pretty (ClsTyFam loc dhead optkind) =- markLine loc $- mySep ( [text "type", pretty dhead] ++ ppOptKind optkind)-- pretty (ClsTyDef loc ntype htype) =- markLine loc $- mySep [text "type", pretty ntype, equals, pretty htype]--instance SrcInfo loc => Pretty (InstDecl loc) where- pretty (InsDecl _ decl) = pretty decl-- pretty (InsType loc ntype htype) =- markLine loc $- mySep [text "type", pretty ntype, equals, pretty htype]-- pretty (InsData loc don ntype constrList derives) =- markLine loc $- mySep [pretty don, pretty ntype]- <+> (myVcat (zipWith (<+>) (equals : repeat (char '|'))- (map pretty constrList))- $$$ ppDeriving derives)-- pretty (InsGData loc don ntype optkind gadtList derives) =- markLine loc $- mySep ( [pretty don, pretty ntype]- ++ ppOptKind optkind ++ [text "where"])- $$$ ppBody classIndent (map pretty gadtList)- $$$ ppDeriving derives-- pretty (InsInline loc inl mactiv name) =- markLine loc $- mySep [text (if inl then "{-# INLINE" else "{-# NOINLINE"), maybePP pretty mactiv, pretty name, text "#-}"]---------------------------- FFI stuff --------------------------------------instance Pretty (Safety l) where- pretty (PlayRisky _) = text "unsafe"- pretty (PlaySafe _ b) = text $ if b then "threadsafe" else "safe"--instance Pretty (CallConv l) where- pretty (StdCall _) = text "stdcall"- pretty (CCall _) = text "ccall"--------------------------- Pragmas ----------------------------------------ppWarnDepr :: ([Name l], String) -> Doc-ppWarnDepr (names, txt) = mySep $ (punctuate comma $ map pretty names) ++ [text $ show txt]--instance SrcInfo loc => Pretty (Rule loc) where- pretty (Rule _ tag mactiv rvs rhs lhs) =- mySep $ [text $ show tag, maybePP pretty mactiv,- maybePP ppRuleVars rvs,- pretty rhs, char '=', pretty lhs]--ppRuleVars :: [RuleVar l] -> Doc-ppRuleVars [] = empty-ppRuleVars rvs = mySep $ text "forall" : map pretty rvs ++ [char '.']--instance Pretty (Activation l) where- pretty (ActiveFrom _ i) = char '[' <> int i <> char ']'- pretty (ActiveUntil _ i) = text "[~" <> int i <> char ']'--instance Pretty (RuleVar l) where- pretty (RuleVar _ n) = pretty n- pretty (TypedRuleVar _ n t) = mySep [pretty n, text "::", pretty t]--instance Pretty (OptionPragma l) where- pretty (LanguagePragma _ ns) =- myFsep $ text "{-# LANGUAGE" : punctuate (char ',') (map pretty ns) ++ [text "#-}"]- pretty (IncludePragma _ s) =- myFsep $ [text "{-# INCLUDE", text s, text "#-}"]- pretty (CFilesPragma _ s) =- myFsep $ [text "{-# CFILES", text s, text "#-}"]- pretty (OptionsPragma _ (Just tool) s) =- myFsep $ [text "{-# OPTIONS_" <> pretty tool, text s, text "#-}"]- pretty (OptionsPragma _ _ s) =- myFsep $ [text "{-# OPTIONS", text s, text "#-}"]-{- pretty (UnknownTopPragma _ n s) =- myFsep $ map text ["{-#", n, s, "#-}"] -}--instance Pretty Tool where- pretty (UnknownTool s) = text s- pretty t = text $ show t--------------------------- Data & Newtype Bodies --------------------------instance Pretty (QualConDecl l) where- pretty (QualConDecl _pos mtvs ctxt con) =- myFsep [ppForall mtvs, ppContext ctxt, pretty con]--instance Pretty (GadtDecl l) where- pretty (GadtDecl _pos name ty) =- myFsep [pretty name, text "::", pretty ty]--instance Pretty (ConDecl l) where- pretty (RecDecl _ name fieldList) =- pretty name <> (braceList . map pretty $ fieldList)--{- pretty (ConDecl name@(Symbol _) [l, r]) =- myFsep [prettyPrec prec_btype l, ppName name,- prettyPrec prec_btype r] -}- pretty (ConDecl _ name typeList) =- mySep $ ppName name : map (prettyPrec prec_atype) typeList- pretty (InfixConDecl _ l name r) =- myFsep [prettyPrec prec_btype l, ppNameInfix name,- prettyPrec prec_btype r]--instance Pretty (FieldDecl l) where- pretty (FieldDecl _ names ty) =- myFsepSimple $ (punctuate comma . map pretty $ names) ++- [text "::", pretty ty]--{--ppField :: ([Name l],BangType l) -> Doc-ppField (names, ty) =- myFsepSimple $ (punctuate comma . map pretty $ names) ++- [text "::", pretty ty]--}--instance Pretty (BangType l) where- prettyPrec _ (BangedTy _ ty) = char '!' <> ppAType ty- prettyPrec p (UnBangedTy _ ty) = prettyPrec p ty- prettyPrec p (UnpackedTy _ ty) = text "{-# UNPACK #-}" <+> char '!' <> prettyPrec p ty--ppDeriving :: Maybe (Deriving l) -> Doc-ppDeriving = maybePP pretty--instance Pretty (Deriving l) where- pretty (Deriving _ []) = text "deriving" <+> parenList []- pretty (Deriving _ [IHead _ d []]) = text "deriving" <+> ppQName d- pretty (Deriving _ ihs) = text "deriving" <+> parenList (map pretty ihs)--------------------------- Types --------------------------ppBType :: Type l -> Doc-ppBType = prettyPrec prec_btype--ppAType :: Type l -> Doc-ppAType = prettyPrec prec_atype---- precedences for types-prec_btype, prec_atype :: Int-prec_btype = 1 -- left argument of ->,- -- or either argument of an infix data constructor-prec_atype = 2 -- argument of type or data constructor, or of a class--instance Pretty (Type l) where- prettyPrec p (TyForall _ mtvs ctxt htype) = parensIf (p > 0) $- myFsep [ppForall mtvs, ppContext ctxt, pretty htype]- prettyPrec p (TyFun _ a b) = parensIf (p > 0) $- myFsep [ppBType a, text "->", pretty b]- prettyPrec _ (TyTuple _ bxd l) =- let ds = map pretty l- in case bxd of- Boxed -> parenList ds- Unboxed -> hashParenList ds- prettyPrec _ (TyList _ t) = brackets $ pretty t- prettyPrec p (TyApp _ a b) =- {-- | a == list_tycon = brackets $ pretty b -- special case- | otherwise = -} parensIf (p > prec_btype) $- myFsep [pretty a, ppAType b]- prettyPrec _ (TyVar _ name) = pretty name- prettyPrec _ (TyCon _ name) = pretty name- prettyPrec _ (TyParen _ t) = parens (pretty t)--- prettyPrec _ (TyPred asst) = pretty asst- prettyPrec _ (TyInfix _ a op b) = myFsep [pretty a, ppQNameInfix op, pretty b]- prettyPrec _ (TyKind _ t k) = parens (myFsep [pretty t, text "::", pretty k])---instance Pretty (TyVarBind l) where- pretty (KindedVar _ var kind) = parens $ myFsep [pretty var, text "::", pretty kind]- pretty (UnkindedVar _ var) = pretty var--ppForall :: Maybe [TyVarBind l] -> Doc-ppForall Nothing = empty-ppForall (Just []) = empty-ppForall (Just vs) = myFsep (text "forall" : map pretty vs ++ [char '.'])------------------------------ Kinds ------------------------------instance Pretty (Kind l) where- pretty (KindStar _) = text "*"- pretty (KindBang _) = text "!"- pretty (KindFn _ a b) = myFsep [pretty a, text "->", pretty b]- pretty (KindParen _ k) = myFsep [text "(", pretty k, text ")"]--ppOptKind :: Maybe (Kind l) -> [Doc]-ppOptKind Nothing = []-ppOptKind (Just k) = [text "::", pretty k]--------------------- Functional Dependencies --------------------instance Pretty (FunDep l) where- pretty (FunDep _ from to) =- myFsep $ map pretty from ++ [text "->"] ++ map pretty to---ppFunDeps :: [FunDep l] -> Doc-ppFunDeps [] = empty-ppFunDeps fds = myFsep $ (char '|':) . punctuate comma . map pretty $ fds--------------------------- Expressions --------------------------instance SrcInfo loc => Pretty (Rhs loc) where- pretty (UnGuardedRhs _ e) = equals <+> pretty e- pretty (GuardedRhss _ guardList) = myVcat . map pretty $ guardList--instance SrcInfo loc => Pretty (GuardedRhs loc) where- pretty (GuardedRhs _pos guards ppBody) =- myFsep $ [char '|'] ++ (punctuate comma . map pretty $ guards) ++ [equals, pretty ppBody]--instance Pretty (Literal l) where- pretty (Int _ i _) = integer i- pretty (Char _ c _) = text (show c)- pretty (String _ s _) = text (show s)- pretty (Frac _ r _) = double (fromRational r)- -- GHC unboxed literals:- pretty (PrimChar _ c _) = text (show c) <> char '#'- pretty (PrimString _ s _) = text (show s) <> char '#'- pretty (PrimInt _ i _) = integer i <> char '#'- pretty (PrimWord _ w _) = integer w <> text "##"- pretty (PrimFloat _ r _) = float (fromRational r) <> char '#'- pretty (PrimDouble _ r _) = double (fromRational r) <> text "##"--instance SrcInfo loc => Pretty (Exp loc) where- pretty (Lit _ l) = pretty l- -- lambda stuff- pretty (InfixApp _ a op b) = myFsep [pretty a, pretty op, pretty b]- pretty (NegApp _ e) = myFsep [char '-', pretty e]- pretty (App _ a b) = myFsep [pretty a, pretty b]- pretty (Lambda _loc expList ppBody) = myFsep $- char '\\' : map pretty expList ++ [text "->", pretty ppBody]- -- keywords- -- two cases for lets- pretty (Let _ (BDecls _ declList) letBody) =- ppLetExp declList letBody- pretty (Let _ (IPBinds _ bindList) letBody) =- ppLetExp bindList letBody-- pretty (If _ cond thenexp elsexp) =- myFsep [text "if", pretty cond,- text "then", pretty thenexp,- text "else", pretty elsexp]- pretty (Case _ cond altList) =- myFsep [text "case", pretty cond, text "of"]- $$$ ppBody caseIndent (map pretty altList)- pretty (Do _ stmtList) =- text "do" $$$ ppBody doIndent (map pretty stmtList)- pretty (MDo _ stmtList) =- text "mdo" $$$ ppBody doIndent (map pretty stmtList)- -- Constructors & Vars- pretty (Var _ name) = pretty name- pretty (IPVar _ ipname) = pretty ipname- pretty (Con _ name) = pretty name- pretty (Tuple _ expList) = parenList . map pretty $ expList- pretty (TupleSection _ mExpList) = parenList . map (maybePP pretty) $ mExpList- -- weird stuff- pretty (Paren _ e) = parens . pretty $ e- pretty (LeftSection _ e op) = parens (pretty e <+> pretty op)- pretty (RightSection _ op e) = parens (pretty op <+> pretty e)- pretty (RecConstr _ c fieldList) =- pretty c <> (braceList . map pretty $ fieldList)- pretty (RecUpdate _ e fieldList) =- pretty e <> (braceList . map pretty $ fieldList)- -- Lists- pretty (List _ list) =- bracketList . punctuate comma . map pretty $ list- pretty (EnumFrom _ e) =- bracketList [pretty e, text ".."]- pretty (EnumFromTo _ from to) =- bracketList [pretty from, text "..", pretty to]- pretty (EnumFromThen _ from thenE) =- bracketList [pretty from <> comma, pretty thenE, text ".."]- pretty (EnumFromThenTo _ from thenE to) =- bracketList [pretty from <> comma, pretty thenE,- text "..", pretty to]- pretty (ListComp _ e qualList) =- bracketList ([pretty e, char '|']- ++ (punctuate comma . map pretty $ qualList))- pretty (ParComp _ e qualLists) =- bracketList (intersperse (char '|') $- pretty e : (punctuate comma . concatMap (map pretty) $ qualLists))- pretty (ExpTypeSig _pos e ty) =- myFsep [pretty e, text "::", pretty ty]- -- Template Haskell- pretty (BracketExp _ b) = pretty b- pretty (SpliceExp _ s) = pretty s- pretty (TypQuote _ t) = text "\'\'" <> pretty t- pretty (VarQuote _ x) = text "\'" <> pretty x- pretty (QuasiQuote _ n qt) = text ("[$" ++ n ++ "|" ++ qt ++ "|]")- -- Hsx- pretty (XTag _ n attrs mattr cs) =- let ax = maybe [] (return . pretty) mattr- in hcat $- (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):- map pretty cs ++ [myFsep $ [text "</" <> pretty n, char '>']]- pretty (XETag _ n attrs mattr) =- let ax = maybe [] (return . pretty) mattr- in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [text "/>"]- pretty (XPcdata _ s) = text s- pretty (XExpTag _ e) =- myFsep $ [text "<%", pretty e, text "%>"]- -- Pragmas- pretty (CorePragma _ s e) = myFsep $ map text ["{-# CORE", show s, "#-}"] ++ [pretty e]- pretty (SCCPragma _ s e) = myFsep $ map text ["{-# SCC", show s, "#-}"] ++ [pretty e]- pretty (GenPragma _ s (a,b) (c,d) e) =- myFsep $ [text "{-# GENERATED", text $ show s,- int a, char ':', int b, char '-',- int c, char ':', int d, text "#-}", pretty e]- -- Arrows- pretty (Proc _ p e) = myFsep $ [text "proc", pretty p, text "->", pretty e]- pretty (LeftArrApp _ l r) = myFsep $ [pretty l, text "-<", pretty r]- pretty (RightArrApp _ l r) = myFsep $ [pretty l, text ">-", pretty r]- pretty (LeftArrHighApp _ l r) = myFsep $ [pretty l, text "-<<", pretty r]- pretty (RightArrHighApp _ l r) = myFsep $ [pretty l, text ">>-", pretty r]---instance SrcInfo loc => Pretty (XAttr loc) where- pretty (XAttr _ n v) =- myFsep [pretty n, char '=', pretty v]--instance Pretty (XName l) where- pretty (XName _ n) = text n- pretty (XDomName _ d n) = text d <> char ':' <> text n----ppLetExp :: [Decl] -> Exp -> Doc-ppLetExp l b = myFsep [text "let" <+> ppBody letIndent (map pretty l),- text "in", pretty b]--ppWith binds = nest 2 (text "with" $$$ ppBody withIndent (map pretty binds))-withIndent = whereIndent----------------------- Template Haskell ---------------------------instance SrcInfo loc => Pretty (Bracket loc) where- pretty (ExpBracket _ e) = ppBracket "[|" e- pretty (PatBracket _ p) = ppBracket "[p|" p- pretty (TypeBracket _ t) = ppBracket "[t|" t- pretty (DeclBracket _ d) =- myFsep $ text "[d|" : map pretty d ++ [text "|]"]--ppBracket o x = myFsep [text o, pretty x, text "|]"]--instance SrcInfo loc => Pretty (Splice loc) where- pretty (IdSplice _ s) = char '$' <> text s- pretty (ParenSplice _ e) =- myFsep [text "$(", pretty e, char ')']--------------------------- Patterns -------------------------------instance SrcInfo loc => Pretty (Pat loc) where- prettyPrec _ (PVar _ name) = pretty name- prettyPrec _ (PLit _ lit) = pretty lit- prettyPrec _ (PNeg _ p) = myFsep [char '-', pretty p]- prettyPrec p (PInfixApp _ a op b) = parensIf (p > 0) $- myFsep [pretty a, pretty (QConOp (ann op) op), pretty b]- prettyPrec p (PApp _ n ps) = parensIf (p > 1) $- myFsep (pretty n : map pretty ps)- prettyPrec _ (PTuple _ ps) = parenList . map pretty $ ps- prettyPrec _ (PList _ ps) =- bracketList . punctuate comma . map pretty $ ps- prettyPrec _ (PParen _ p) = parens . pretty $ p- prettyPrec _ (PRec _ c fields) =- pretty c <> (braceList . map pretty $ fields)- -- special case that would otherwise be buggy- prettyPrec _ (PAsPat _ name (PIrrPat _ pat)) =- myFsep [pretty name <> char '@', char '~' <> pretty pat]- prettyPrec _ (PAsPat _ name pat) =- hcat [pretty name, char '@', pretty pat]- prettyPrec _ (PWildCard _) = char '_'- prettyPrec _ (PIrrPat _ pat) = char '~' <> pretty pat- prettyPrec _ (PatTypeSig _pos pat ty) =- myFsep [pretty pat, text "::", pretty ty]- prettyPrec _ (PViewPat _ e p) =- myFsep [pretty e, text "->", pretty p]- prettyPrec _ (PNPlusK _ n k) =- myFsep [pretty n, text "+", text $ show k]- -- HaRP- prettyPrec _ (PRPat _ rs) =- bracketList . punctuate comma . map pretty $ rs- -- Hsx- prettyPrec _ (PXTag _ n attrs mattr cp) =- let ap = maybe [] (return . pretty) mattr- in hcat $ -- TODO: should not introduce blanks- (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ap ++ [char '>']):- map pretty cp ++ [myFsep $ [text "</" <> pretty n, char '>']]- prettyPrec _ (PXETag _ n attrs mattr) =- let ap = maybe [] (return . pretty) mattr- in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ap ++ [text "/>"]- prettyPrec _ (PXPcdata _ s) = text s- prettyPrec _ (PXPatTag _ p) =- myFsep $ [text "<%", pretty p, text "%>"]- prettyPrec _ (PXRPats _ ps) =- myFsep $ text "<[" : map pretty ps ++ [text "%>"]- -- Generics- prettyPrec _ (PExplTypeArg _ qn t) =- myFsep [pretty qn, text "{|", pretty t, text "|}"]- -- BangPatterns- prettyPrec _ (PBangPat _ p) = text "!" <> pretty p--instance SrcInfo loc => Pretty (PXAttr loc) where- pretty (PXAttr _ n p) =- myFsep [pretty n, char '=', pretty p]--instance SrcInfo loc => Pretty (PatField loc) where- pretty (PFieldPat _ name pat) =- myFsep [pretty name, equals, pretty pat]- pretty (PFieldPun _ name) = pretty name- pretty (PFieldWildcard _) = text ".."----------------------- Regular Patterns ---------------------------instance SrcInfo loc => Pretty (RPat loc) where- pretty (RPOp _ r op) = pretty r <> pretty op- pretty (RPEither _ r1 r2) = parens . myFsep $- [pretty r1, char '|', pretty r2]- pretty (RPSeq _ rs) =- myFsep $ text "(/" : map pretty rs ++ [text "/)"]- pretty (RPGuard _ r gs) =- myFsep $ text "(|" : pretty r : char '|' : map pretty gs ++ [text "|)"]- -- special case that would otherwise be buggy- pretty (RPCAs _ n (RPPat _ (PIrrPat _ p))) =- myFsep [pretty n <> text "@:", char '~' <> pretty p]- pretty (RPCAs _ n r) = hcat [pretty n, text "@:", pretty r]- -- special case that would otherwise be buggy- pretty (RPAs _ n (RPPat _ (PIrrPat _ p))) =- myFsep [pretty n <> text "@:", char '~' <> pretty p]- pretty (RPAs _ n r) = hcat [pretty n, char '@', pretty r]- pretty (RPPat _ p) = pretty p- pretty (RPParen _ rp) = parens . pretty $ rp--instance Pretty (RPatOp l) where- pretty (RPStar _) = char '*'- pretty (RPStarG _) = text "*!"- pretty (RPPlus _) = char '+'- pretty (RPPlusG _) = text "+!"- pretty (RPOpt _) = char '?'- pretty (RPOptG _) = text "?!"--------------------------- Case bodies --------------------------instance SrcInfo loc => Pretty (Alt loc) where- pretty (Alt _pos e gAlts binds) =- pretty e <+> pretty gAlts $$$ ppWhere binds--instance SrcInfo loc => Pretty (GuardedAlts loc) where- pretty (UnGuardedAlt _ e) = text "->" <+> pretty e- pretty (GuardedAlts _ altList) = myVcat . map pretty $ altList--instance SrcInfo loc => Pretty (GuardedAlt loc) where- pretty (GuardedAlt _pos guards body) =- myFsep $ char '|': (punctuate comma . map pretty $ guards) ++ [text "->", pretty body]--------------------------- Statements in monads, guards & list comprehensions ------instance SrcInfo loc => Pretty (Stmt loc) where- pretty (Generator _loc e from) =- pretty e <+> text "<-" <+> pretty from- pretty (Qualifier _ e) = pretty e- -- two cases for lets- pretty (LetStmt _ (BDecls _ declList)) =- ppLetStmt declList- pretty (LetStmt _ (IPBinds _ bindList)) =- ppLetStmt bindList- pretty (RecStmt _ stmtList) =- text "rec" $$$ ppBody letIndent (map pretty stmtList)--ppLetStmt l = text "let" $$$ ppBody letIndent (map pretty l)--instance SrcInfo loc => Pretty (QualStmt loc) where- pretty (QualStmt _ s) = pretty s- pretty (ThenTrans _ f) = myFsep $ [text "then", pretty f]- pretty (ThenBy _ f e) = myFsep $ [text "then", pretty f, text "by", pretty e]- pretty (GroupBy _ e) = myFsep $ [text "then", text "group", text "by", pretty e]- pretty (GroupUsing _ f) = myFsep $ [text "then", text "group", text "using", pretty f]- pretty (GroupByUsing _ e f) = myFsep $ [text "then", text "group", text "by",- pretty e, text "using", pretty f]----------------------------- Record updates-instance SrcInfo loc => Pretty (FieldUpdate loc) where- pretty (FieldUpdate _ name e) =- myFsep [pretty name, equals, pretty e]- pretty (FieldPun _ name) = pretty name- pretty (FieldWildcard _) = text ".."--------------------------- Names --------------------------instance Pretty (QOp l) where- pretty (QVarOp _ n) = ppQNameInfix n- pretty (QConOp _ n) = ppQNameInfix n--ppQNameInfix :: (QName l) -> Doc-ppQNameInfix name- | isSymbolName (getName name) = ppQName name- | otherwise = char '`' <> ppQName name <> char '`'--instance Pretty (QName l) where- pretty name = case name of- UnQual _ (Symbol _ ('#':_)) -> char '(' <+> ppQName name <+> char ')'- _ -> parensIf (isSymbolName (getName name)) (ppQName name)--ppQName :: (QName l) -> Doc-ppQName (UnQual _ name) = ppName name-ppQName (Qual _ m name) = pretty m <> char '.' <> ppName name-ppQName (Special _ sym) = text (specialName sym)--instance Pretty (Op l) where- pretty (VarOp _ n) = ppNameInfix n- pretty (ConOp _ n) = ppNameInfix n--ppNameInfix :: (Name l) -> Doc-ppNameInfix name- | isSymbolName name = ppName name- | otherwise = char '`' <> ppName name <> char '`'--instance Pretty (Name l) where- pretty name = case name of- Symbol _ ('#':_) -> char '(' <+> ppName name <+> char ')'- _ -> parensIf (isSymbolName name) (ppName name)--ppName :: (Name l) -> Doc-ppName (Ident _ s) = text s-ppName (Symbol _ s) = text s--instance Pretty (IPName l) where- pretty (IPDup _ s) = char '?' <> text s- pretty (IPLin _ s) = char '%' <> text s--instance SrcInfo loc => Pretty (IPBind loc) where- pretty (IPBind _loc ipname exp) =- myFsep [pretty ipname, equals, pretty exp]--instance Pretty (CName l) where- pretty (VarName _ n) = pretty n- pretty (ConName _ n) = pretty n--isSymbolName :: (Name l) -> Bool-isSymbolName (Symbol _ _) = True-isSymbolName _ = False--getName :: QName l -> Name l-getName (UnQual _ s) = s-getName (Qual _ _ s) = s-getName (Special l (Cons _)) = Symbol l ":"-getName (Special l (FunCon _)) = Symbol l "->"-getName (Special l s) = Ident l (specialName s)--specialName :: SpecialCon l -> String-specialName (UnitCon _) = "()"-specialName (ListCon _) = "[]"-specialName (FunCon _) = "->"-specialName (TupleCon _ b n) = "(" ++ hash ++ replicate (n-1) ',' ++ hash ++ ")"- where hash = case b of- Unboxed -> "#"- _ -> ""-specialName (Cons _) = ":"--ppContext :: Maybe (Context l) -> Doc-ppContext = maybePP pretty--instance Pretty (Context l) where- pretty (CxEmpty _) = mySep [text "()", text "=>"]- pretty (CxSingle _ asst) = mySep [pretty asst, text "=>"]- pretty (CxTuple _ assts) = myFsep $ [parenList (map pretty assts), text "=>"]- pretty (CxParen _ asst) = parens (pretty asst)---- hacked for multi-parameter type classes-instance Pretty (Asst l) where- pretty (ClassA _ a ts) = myFsep $ ppQName a : map ppAType ts- pretty (InfixA _ a op b) = myFsep $ [pretty a, ppQNameInfix op, pretty b]- pretty (IParam _ i t) = myFsep $ [pretty i, text "::", pretty t]- pretty (EqualP _ t1 t2) = myFsep $ [pretty t1, text "~", pretty t2]--------------------------- pp utils --------------------------maybePP :: (a -> Doc) -> Maybe a -> Doc-maybePP pp Nothing = empty-maybePP pp (Just a) = pp a--parenList :: [Doc] -> Doc-parenList = parens . myFsepSimple . punctuate comma--hashParenList :: [Doc] -> Doc-hashParenList = hashParens . myFsepSimple . punctuate comma- where hashParens = parens . hashes- hashes = \doc -> char '#' <> doc <> char '#'--braceList :: [Doc] -> Doc-braceList = braces . myFsepSimple . punctuate comma--bracketList :: [Doc] -> Doc-bracketList = brackets . myFsepSimple---- Wrap in braces and semicolons, with an extra space at the start in--- case the first doc begins with "-", which would be scanned as {--flatBlock :: [Doc] -> Doc-flatBlock = braces . (space <>) . hsep . punctuate semi---- Same, but put each thing on a separate line-prettyBlock :: [Doc] -> Doc-prettyBlock = braces . (space <>) . vcat . punctuate semi---- Monadic PP Combinators -- these examine the env--blankline :: Doc -> Doc-blankline dl = do{e<-getPPEnv;if spacing e && layout e /= PPNoLayout- then space $$ dl else dl}-topLevel :: Doc -> [Doc] -> Doc-topLevel header dl = do- e <- fmap layout getPPEnv- case e of- PPOffsideRule -> header $$ vcat dl- PPSemiColon -> header $$ prettyBlock dl- PPInLine -> header $$ prettyBlock dl- PPNoLayout -> header <+> flatBlock dl--ppBody :: (PPHsMode -> Int) -> [Doc] -> Doc-ppBody f dl = do- e <- fmap layout getPPEnv- case e of PPOffsideRule -> indent- PPSemiColon -> indentExplicit- _ -> flatBlock dl- where- indent = do{i <-fmap f getPPEnv;nest i . vcat $ dl}- indentExplicit = do {i <- fmap f getPPEnv;- nest i . prettyBlock $ dl}--($$$) :: Doc -> Doc -> Doc-a $$$ b = layoutChoice (a $$) (a <+>) b--mySep :: [Doc] -> Doc-mySep = layoutChoice mySep' hsep- where- -- ensure paragraph fills with indentation.- mySep' [x] = x- mySep' (x:xs) = x <+> fsep xs- mySep' [] = error "Internal error: mySep"--myVcat :: [Doc] -> Doc-myVcat = layoutChoice vcat hsep--myFsepSimple :: [Doc] -> Doc-myFsepSimple = layoutChoice fsep hsep---- same, except that continuation lines are indented,--- which is necessary to avoid triggering the offside rule.-myFsep :: [Doc] -> Doc-myFsep = layoutChoice fsep' hsep- where fsep' [] = empty- fsep' (d:ds) = do- e <- getPPEnv- let n = onsideIndent e- nest n (fsep (nest (-n) d:ds))--layoutChoice :: (a -> Doc) -> (a -> Doc) -> a -> Doc-layoutChoice a b dl = do e <- getPPEnv- if layout e == PPOffsideRule ||- layout e == PPSemiColon- then a dl else b dl---- Prefix something with a LINE pragma, if requested.--- GHC's LINE pragma actually sets the current line number to n-1, so--- that the following line is line n. But if there's no newline before--- the line we're talking about, we need to compensate by adding 1.--markLine :: SrcInfo s => s -> Doc -> Doc-markLine loc doc = do- e <- getPPEnv- let y = startLine loc- let line l =- text ("{-# LINE " ++ show l ++ " \"" ++ fileName loc ++ "\" #-}")- if linePragmas e then layoutChoice (line y $$) (line (y+1) <+>) doc- else doc---- Pretty print a source location, useful for printing out error messages-instance Pretty SrcLoc where- pretty srcLoc =- return $ P.hsep [ colonFollow (P.text $ srcFilename srcLoc)- , colonFollow (P.int $ srcLine srcLoc)- , P.int $ srcColumn srcLoc- ]- where- colonFollow p = P.hcat [ p, P.colon ]
+ src/Language/Haskell/Exts/Annotated/Simplify.hs view
@@ -0,0 +1,514 @@+----------------------------------------------------------------------------- +-- | +-- Module : Language.Haskell.Exts.Annotated.Simplify +-- Copyright : (c) Niklas Broberg 2009 +-- License : BSD-style (see the file LICENSE.txt) +-- +-- Maintainer : Niklas Broberg, d00nibro@chalmers.se +-- Stability : experimental +-- Portability : portable +-- +-- This module contains code for translating from the annotated +-- complex AST in Language.Haskell.Exts.Annotated.Syntax +-- to the simpler, sparsely annotated AST in Language.Haskell.Exts.Syntax. +-- +----------------------------------------------------------------------------- +module Language.Haskell.Exts.Annotated.Simplify where + +import Language.Haskell.Exts.Annotated.Syntax +import qualified Language.Haskell.Exts.Syntax as S + +import Language.Haskell.Exts.SrcLoc + +sModuleName :: ModuleName l -> S.ModuleName +sModuleName (ModuleName _ str) = S.ModuleName str + +sSpecialCon :: SpecialCon l -> S.SpecialCon +sSpecialCon sc = case sc of + UnitCon _ -> S.UnitCon + ListCon _ -> S.ListCon + FunCon _ -> S.FunCon + TupleCon _ b k -> S.TupleCon b k + Cons _ -> S.Cons + UnboxedSingleCon _ -> S.UnboxedSingleCon + +sQName :: QName l -> S.QName +sQName qn = case qn of + Qual _ mn n -> S.Qual (sModuleName mn) (sName n) + UnQual _ n -> S.UnQual (sName n) + Special _ sc -> S.Special (sSpecialCon sc) + +sName :: Name l -> S.Name +sName (Ident _ str) = S.Ident str +sName (Symbol _ str) = S.Symbol str + +sIPName :: IPName l -> S.IPName +sIPName (IPDup _ str) = S.IPDup str +sIPName (IPLin _ str) = S.IPLin str + +sQOp :: QOp l -> S.QOp +sQOp (QVarOp _ qn) = S.QVarOp (sQName qn) +sQOp (QConOp _ qn) = S.QConOp (sQName qn) + +sOp :: Op l -> S.Op +sOp (VarOp _ n) = S.VarOp (sName n) +sOp (ConOp _ n) = S.ConOp (sName n) + +sCName :: CName l -> S.CName +sCName (VarName _ n) = S.VarName (sName n) +sCName (ConName _ n) = S.ConName (sName n) + +sModuleHead :: Maybe (ModuleHead l) -> (S.ModuleName, Maybe (S.WarningText), Maybe [S.ExportSpec]) +sModuleHead mmh = case mmh of + Nothing -> (S.main_mod, Nothing, Just [S.EVar (S.UnQual S.main_name)]) + Just (ModuleHead _ mn mwt mel) -> (sModuleName mn, fmap sWarningText mwt, fmap sExportSpecList mel) + +-- | Translate an annotated AST node representing a Haskell module, into +-- a simpler version that retains (almost) only abstract information. +-- In particular, XML and hybrid XML pages enabled by the XmlSyntax extension +-- are translated into standard Haskell modules with a @page@ function. +sModule :: SrcInfo loc => Module loc -> S.Module +sModule md = case md of + Module l mmh oss ids ds -> + let (mn, mwt, mes) = sModuleHead mmh + in S.Module (getPointLoc l) mn (map sOptionPragma oss) mwt mes (map sImportDecl ids) (map sDecl ds) + XmlPage l mn oss xn attrs mat es -> + let loc = getPointLoc l + in S.Module loc (sModuleName mn) (map sOptionPragma oss) + Nothing + (Just [S.EVar $ S.UnQual $ S.Ident "page"]) + [] + [pageFun loc $ S.XTag loc (sXName xn) (map sXAttr attrs) (fmap sExp mat) (map sExp es)] + XmlHybrid l mmh oss ids ds xn attrs mat es -> + let loc1 = getPointLoc l + loc2 = getPointLoc (ann xn) + (mn, mwt, mes) = sModuleHead mmh + in S.Module loc1 mn (map sOptionPragma oss) mwt mes (map sImportDecl ids) + (map sDecl ds ++ [pageFun loc2 $ S.XTag loc2 (sXName xn) (map sXAttr attrs) (fmap sExp mat) (map sExp es)]) + +pageFun :: SrcLoc -> S.Exp -> S.Decl +pageFun loc e = S.PatBind loc namePat Nothing rhs (S.BDecls []) + where namePat = S.PVar $ S.Ident "page" + rhs = S.UnGuardedRhs e + +sExportSpecList :: ExportSpecList l -> [S.ExportSpec] +sExportSpecList (ExportSpecList _ ess) = map sExportSpec ess + +sExportSpec :: ExportSpec l -> S.ExportSpec +sExportSpec es = case es of + EVar _ qn -> S.EVar (sQName qn) + EAbs _ qn -> S.EAbs (sQName qn) + EThingAll _ qn -> S.EThingAll (sQName qn) + EThingWith _ qn cns -> S.EThingWith (sQName qn) (map sCName cns) + EModuleContents _ mn -> S.EModuleContents (sModuleName mn) + +sImportDecl :: SrcInfo loc => ImportDecl loc -> S.ImportDecl +sImportDecl (ImportDecl l mn qu src mpkg as misl) = + S.ImportDecl (getPointLoc l) (sModuleName mn) qu src mpkg (fmap sModuleName as) (fmap sImportSpecList misl) + +sImportSpecList :: ImportSpecList l -> (Bool, [S.ImportSpec]) +sImportSpecList (ImportSpecList _ b iss) = (b, map sImportSpec iss) + +sImportSpec :: ImportSpec l -> S.ImportSpec +sImportSpec is = case is of + IVar _ n -> S.IVar (sName n) + IAbs _ n -> S.IAbs (sName n) + IThingAll _ n -> S.IThingAll (sName n) + IThingWith _ n cns -> S.IThingWith (sName n) (map sCName cns) + +sAssoc :: Assoc l -> S.Assoc +sAssoc a = case a of + AssocNone _ -> S.AssocNone + AssocLeft _ -> S.AssocLeft + AssocRight _ -> S.AssocRight + +sDeclHead :: DeclHead l -> (S.Name, [S.TyVarBind]) +sDeclHead dh = case dh of + DHead _ n tvs -> (sName n, map sTyVarBind tvs) + DHInfix _ tva n tvb -> (sName n, map sTyVarBind [tva,tvb]) + DHParen _ dh -> sDeclHead dh + +sInstHead :: InstHead l -> (S.QName, [S.Type]) +sInstHead ih = case ih of + IHead _ qn ts -> (sQName qn, map sType ts) + IHInfix _ ta qn tb -> (sQName qn, map sType [ta,tb]) + IHParen _ ih -> sInstHead ih + +-- | Translate an annotated AST node representing a Haskell declaration +-- into a simpler version. Note that in the simpler version, all declaration +-- nodes are still annotated by 'SrcLoc's. +sDecl :: SrcInfo loc => Decl loc -> S.Decl +sDecl decl = case decl of + TypeDecl l dh t -> + let (n, tvs) = sDeclHead dh + in S.TypeDecl (getPointLoc l) n tvs (sType t) + TypeFamDecl l dh mk -> + let (n, tvs) = sDeclHead dh + in S.TypeFamDecl (getPointLoc l) n tvs (fmap sKind mk) + DataDecl l dn mctxt dh constrs mder -> + let (n, tvs) = sDeclHead dh + in S.DataDecl (getPointLoc l) (sDataOrNew dn) (maybe [] sContext mctxt) n tvs (map sQualConDecl constrs) (maybe [] sDeriving mder) + GDataDecl l dn mctxt dh mk gds mder -> + let (n, tvs) = sDeclHead dh + in S.GDataDecl (getPointLoc l) (sDataOrNew dn) (maybe [] sContext mctxt) n tvs (fmap sKind mk) (map sGadtDecl gds) (maybe [] sDeriving mder) + DataFamDecl l mctxt dh mk -> + let (n, tvs) = sDeclHead dh + in S.DataFamDecl (getPointLoc l) (maybe [] sContext mctxt) n tvs (fmap sKind mk) + TypeInsDecl l t1 t2 -> S.TypeInsDecl (getPointLoc l) (sType t1) (sType t2) + DataInsDecl l dn t constrs mder -> + S.DataInsDecl (getPointLoc l) (sDataOrNew dn) (sType t) (map sQualConDecl constrs) (maybe [] sDeriving mder) + GDataInsDecl l dn t mk gds mder -> + S.GDataInsDecl (getPointLoc l) (sDataOrNew dn) (sType t) (fmap sKind mk) (map sGadtDecl gds) (maybe [] sDeriving mder) + ClassDecl l mctxt dh fds mcds -> + let (n, tvs) = sDeclHead dh + in S.ClassDecl (getPointLoc l) (maybe [] sContext mctxt) n tvs (map sFunDep fds) (maybe [] (map sClassDecl) mcds) + InstDecl l mctxt ih mids -> + let (qn, ts) = sInstHead ih + in S.InstDecl (getPointLoc l) (maybe [] sContext mctxt) qn ts (maybe [] (map sInstDecl) mids) + DerivDecl l mctxt ih -> + let (qn, ts) = sInstHead ih + in S.DerivDecl (getPointLoc l) (maybe [] sContext mctxt) qn ts + InfixDecl l ass prec ops -> S.InfixDecl (getPointLoc l) (sAssoc ass) (maybe 9 id prec) (map sOp ops) + DefaultDecl l ts -> S.DefaultDecl (getPointLoc l) (map sType ts) + SpliceDecl l sp -> S.SpliceDecl (getPointLoc l) (sExp sp) + TypeSig l ns t -> S.TypeSig (getPointLoc l) (map sName ns) (sType t) + FunBind _ ms -> S.FunBind (map sMatch ms) + PatBind l p mt rhs mbs -> + S.PatBind (getPointLoc l) (sPat p) (fmap sType mt) (sRhs rhs) (maybe (S.BDecls []) sBinds mbs) + ForImp l cc msaf mstr n t -> + S.ForImp (getPointLoc l) (sCallConv cc) (maybe (S.PlaySafe False) sSafety msaf) (maybe "" id mstr) (sName n) (sType t) + ForExp l cc mstr n t -> + S.ForExp (getPointLoc l) (sCallConv cc) (maybe "" id mstr) (sName n) (sType t) + RulePragmaDecl l rs -> S.RulePragmaDecl (getPointLoc l) (map sRule rs) + DeprPragmaDecl l nsstrs -> S.DeprPragmaDecl (getPointLoc l) (map (\(ns, str) -> (map sName ns, str)) nsstrs) + WarnPragmaDecl l nsstrs -> S.WarnPragmaDecl (getPointLoc l) (map (\(ns, str) -> (map sName ns, str)) nsstrs) + InlineSig l b mact qn -> S.InlineSig (getPointLoc l) b (maybe S.AlwaysActive sActivation mact) (sQName qn) + SpecSig l qn ts -> S.SpecSig (getPointLoc l) (sQName qn) (map sType ts) + SpecInlineSig l b mact qn ts -> + S.SpecInlineSig (getPointLoc l) b (maybe S.AlwaysActive sActivation mact) (sQName qn) (map sType ts) + InstSig l mctxt ih -> + let (qn, ts) = sInstHead ih + in S.InstSig (getPointLoc l) (maybe [] sContext mctxt) qn ts + +sDataOrNew :: DataOrNew l -> S.DataOrNew +sDataOrNew (DataType _) = S.DataType +sDataOrNew (NewType _) = S.NewType + +sDeriving :: (Deriving l) -> [(S.QName, [S.Type])] +sDeriving (Deriving _ ihs) = map sInstHead ihs + +sBinds :: SrcInfo loc => Binds loc -> S.Binds +sBinds bs = case bs of + BDecls _ decls -> S.BDecls (map sDecl decls) + IPBinds _ ipbds -> S.IPBinds (map sIPBind ipbds) + +sIPBind :: SrcInfo loc => IPBind loc -> S.IPBind +sIPBind (IPBind l ipn e) = S.IPBind (getPointLoc l) (sIPName ipn) (sExp e) + +sMatch :: SrcInfo loc => Match loc -> S.Match +sMatch (Match l n ps rhs mwhere) = + S.Match (getPointLoc l) (sName n) (map sPat ps) Nothing (sRhs rhs) (maybe (S.BDecls []) sBinds mwhere) +sMatch (InfixMatch l pa n pb rhs mwhere) = + S.Match (getPointLoc l) (sName n) (map sPat [pa,pb]) Nothing (sRhs rhs) (maybe (S.BDecls []) sBinds mwhere) + +sQualConDecl :: SrcInfo loc => QualConDecl loc -> S.QualConDecl +sQualConDecl (QualConDecl l mtvs mctxt cd) = + S.QualConDecl (getPointLoc l) (maybe [] (map sTyVarBind) mtvs) (maybe [] sContext mctxt) (sConDecl cd) + +sConDecl :: ConDecl l -> S.ConDecl +sConDecl cd = case cd of + ConDecl _ n bts -> S.ConDecl (sName n) (map sBangType bts) + InfixConDecl _ bta n btb -> S.InfixConDecl (sBangType bta) (sName n) (sBangType btb) + RecDecl _ n fds -> S.RecDecl (sName n) (map sFieldDecl fds) + +sFieldDecl :: FieldDecl l -> ([S.Name], S.BangType) +sFieldDecl (FieldDecl _ ns bt) = (map sName ns, sBangType bt) + +sGadtDecl :: SrcInfo loc => GadtDecl loc -> S.GadtDecl +sGadtDecl (GadtDecl l n t) = S.GadtDecl (getPointLoc l) (sName n) (sType t) + +sClassDecl :: SrcInfo loc => ClassDecl loc -> S.ClassDecl +sClassDecl cd = case cd of + ClsDecl _ d -> S.ClsDecl (sDecl d) + ClsDataFam l mctxt dh mk -> + let (n, tvs) = sDeclHead dh + in S.ClsDataFam (getPointLoc l) (maybe [] sContext mctxt) n tvs (fmap sKind mk) + ClsTyFam l dh mk -> + let (n, tvs) = sDeclHead dh + in S.ClsTyFam (getPointLoc l) n tvs (fmap sKind mk) + ClsTyDef l t1 t2 -> + S.ClsTyDef (getPointLoc l) (sType t1) (sType t2) + +sInstDecl :: SrcInfo loc => InstDecl loc -> S.InstDecl +sInstDecl id = case id of + InsDecl _ d -> S.InsDecl (sDecl d) + InsType l t1 t2 -> S.InsType (getPointLoc l) (sType t1) (sType t2) + InsData l dn t constrs mder -> + S.InsData (getPointLoc l) (sDataOrNew dn) (sType t) (map sQualConDecl constrs) (maybe [] sDeriving mder) + InsGData l dn t mk gds mder -> + S.InsGData (getPointLoc l) (sDataOrNew dn) (sType t) (fmap sKind mk) (map sGadtDecl gds) (maybe [] sDeriving mder) + InsInline l b mact qn -> S.InsInline (getPointLoc l) b (maybe S.AlwaysActive sActivation mact) (sQName qn) + +sBangType :: BangType l -> S.BangType +sBangType bt = case bt of + BangedTy _ t -> S.BangedTy (sType t) + UnBangedTy _ t -> S.UnBangedTy (sType t) + UnpackedTy _ t -> S.UnpackedTy (sType t) + +sRhs :: SrcInfo loc => Rhs loc -> S.Rhs +sRhs (UnGuardedRhs _ e) = S.UnGuardedRhs (sExp e) +sRhs (GuardedRhss _ grhss) = S.GuardedRhss (map sGuardedRhs grhss) + +sGuardedRhs :: SrcInfo loc => GuardedRhs loc -> S.GuardedRhs +sGuardedRhs (GuardedRhs l ss e) = S.GuardedRhs (getPointLoc l) (map sStmt ss) (sExp e) + +-- | Translate an annotated AST node representing a Haskell type into a simpler +-- unannotated form. +sType :: Type l -> S.Type +sType t = case t of + TyForall _ mtvs mctxt t -> S.TyForall (fmap (map sTyVarBind) mtvs) (maybe [] sContext mctxt) (sType t) + TyFun _ t1 t2 -> S.TyFun (sType t1) (sType t2) + TyTuple _ bx ts -> S.TyTuple bx (map sType ts) + TyList _ t -> S.TyList (sType t) + TyApp _ t1 t2 -> S.TyApp (sType t1) (sType t2) + TyVar _ n -> S.TyVar (sName n) + TyCon _ qn -> S.TyCon (sQName qn) + TyParen _ t -> S.TyParen (sType t) + TyInfix _ ta qn tb -> S.TyInfix (sType ta) (sQName qn) (sType tb) + TyKind _ t k -> S.TyKind (sType t) (sKind k) + +sTyVarBind :: TyVarBind l -> S.TyVarBind +sTyVarBind (KindedVar _ n k) = S.KindedVar (sName n) (sKind k) +sTyVarBind (UnkindedVar _ n) = S.UnkindedVar (sName n) + +sKind :: Kind l -> S.Kind +sKind k = case k of + KindStar _ -> S.KindStar + KindBang _ -> S.KindBang + KindFn _ k1 k2 -> S.KindFn (sKind k1) (sKind k2) + KindParen _ k -> S.KindParen (sKind k) + KindVar _ n -> S.KindVar (sName n) + +sFunDep :: FunDep l -> S.FunDep +sFunDep (FunDep _ as bs) = S.FunDep (map sName as) (map sName bs) + +sContext :: Context l -> S.Context +sContext ctxt = case ctxt of + CxSingle _ asst -> [sAsst asst] + CxTuple _ assts -> map sAsst assts + CxParen _ ct -> sContext ct + CxEmpty _ -> [] + +sAsst :: Asst l -> S.Asst +sAsst asst = case asst of + ClassA _ qn ts -> S.ClassA (sQName qn) (map sType ts) + InfixA _ ta qn tb -> S.InfixA (sType ta) (sQName qn) (sType tb) + IParam _ ipn t -> S.IParam (sIPName ipn) (sType t) + EqualP _ t1 t2 -> S.EqualP (sType t1) (sType t2) + +sLiteral :: Literal l -> S.Literal +sLiteral lit = case lit of + Char _ c _ -> S.Char c + String _ s _ -> S.String s + Int _ i _ -> S.Int i + Frac _ r _ -> S.Frac r + PrimInt _ i _ -> S.PrimInt i + PrimWord _ i _ -> S.PrimWord i + PrimFloat _ r _ -> S.PrimFloat r + PrimDouble _ r _ -> S.PrimDouble r + PrimChar _ c _ -> S.PrimChar c + PrimString _ s _ -> S.PrimString s + +-- | Translate an annotated AST node representing a Haskell expression +-- into a simpler unannotated form. +sExp :: SrcInfo loc => Exp loc -> S.Exp +sExp e = case e of + Var _ qn -> S.Var (sQName qn) + IPVar _ ipn -> S.IPVar (sIPName ipn) + Con _ qn -> S.Con (sQName qn) + Lit _ lit -> S.Lit (sLiteral lit) + InfixApp _ e1 op e2 -> S.InfixApp (sExp e1) (sQOp op) (sExp e2) + App _ e1 e2 -> S.App (sExp e1) (sExp e2) + NegApp _ e -> S.NegApp (sExp e) + Lambda l ps e -> S.Lambda (getPointLoc l) (map sPat ps) (sExp e) + Let _ bs e -> S.Let (sBinds bs) (sExp e) + If _ e1 e2 e3 -> S.If (sExp e1) (sExp e2) (sExp e3) + Case _ e alts -> S.Case (sExp e) (map sAlt alts) + Do _ ss -> S.Do (map sStmt ss) + MDo _ ss -> S.MDo (map sStmt ss) + Tuple _ es -> S.Tuple (map sExp es) + TupleSection _ mes -> S.TupleSection (map (fmap sExp) mes) + List _ es -> S.List (map sExp es) + Paren _ e -> S.Paren (sExp e) + LeftSection _ e op -> S.LeftSection (sExp e) (sQOp op) + RightSection _ op e -> S.RightSection (sQOp op) (sExp e) + RecConstr _ qn fups -> S.RecConstr (sQName qn) (map sFieldUpdate fups) + RecUpdate _ e fups -> S.RecUpdate (sExp e) (map sFieldUpdate fups) + EnumFrom _ e -> S.EnumFrom (sExp e) + EnumFromTo _ e1 e2 -> S.EnumFromTo (sExp e1) (sExp e2) + EnumFromThen _ e1 e2 -> S.EnumFromThen (sExp e1) (sExp e2) + EnumFromThenTo _ e1 e2 e3 -> S.EnumFromThenTo (sExp e1) (sExp e2) (sExp e3) + ListComp _ e qss -> S.ListComp (sExp e) (map sQualStmt qss) + ParComp _ e qsss -> S.ParComp (sExp e) (map (map sQualStmt) qsss) + ExpTypeSig l e t -> S.ExpTypeSig (getPointLoc l) (sExp e) (sType t) + VarQuote _ qn -> S.VarQuote (sQName qn) + TypQuote _ qn -> S.TypQuote (sQName qn) + BracketExp _ br -> S.BracketExp (sBracket br) + SpliceExp _ sp -> S.SpliceExp (sSplice sp) + QuasiQuote _ nm qt -> S.QuasiQuote nm qt + XTag l xn attrs mat es -> S.XTag (getPointLoc l) (sXName xn) (map sXAttr attrs) (fmap sExp mat) (map sExp es) + XETag l xn attrs mat -> S.XETag (getPointLoc l) (sXName xn) (map sXAttr attrs) (fmap sExp mat) + XPcdata _ str -> S.XPcdata str + XExpTag _ e -> S.XExpTag (sExp e) + CorePragma _ str e -> S.CorePragma str (sExp e) + SCCPragma _ str e -> S.SCCPragma str (sExp e) + GenPragma _ str i12 i34 e -> S.GenPragma str i12 i34 (sExp e) + Proc _ p e -> S.Proc (sPat p) (sExp e) + LeftArrApp _ e1 e2 -> S.LeftArrApp (sExp e1) (sExp e2) + RightArrApp _ e1 e2 -> S.RightArrApp (sExp e1) (sExp e2) + LeftArrHighApp _ e1 e2 -> S.LeftArrHighApp (sExp e1) (sExp e2) + RightArrHighApp _ e1 e2 -> S.RightArrHighApp (sExp e1) (sExp e2) + + +sXName :: XName l -> S.XName +sXName (XName _ str) = S.XName str +sXName (XDomName _ dom str) = S.XDomName dom str + +sXAttr :: SrcInfo loc => XAttr loc -> S.XAttr +sXAttr (XAttr _ xn e) = S.XAttr (sXName xn) (sExp e) + +sBracket:: SrcInfo loc => Bracket loc -> S.Bracket +sBracket br = case br of + ExpBracket _ e -> S.ExpBracket (sExp e) + PatBracket _ p -> S.PatBracket (sPat p) + TypeBracket _ t -> S.TypeBracket (sType t) + DeclBracket _ ds -> S.DeclBracket (map sDecl ds) + +sSplice :: SrcInfo loc => Splice loc -> S.Splice +sSplice (IdSplice _ str) = S.IdSplice str +sSplice (ParenSplice _ e) = S.ParenSplice (sExp e) + +sSafety :: Safety l -> S.Safety +sSafety (PlayRisky _) = S.PlayRisky +sSafety (PlaySafe _ b) = S.PlaySafe b + +sCallConv :: CallConv l -> S.CallConv +sCallConv (StdCall _) = S.StdCall +sCallConv (CCall _) = S.CCall + +-- | Translate an annotated AST node representing a top-level Options pragma +-- into a simpler unannotated form. +sOptionPragma :: SrcInfo loc => OptionPragma loc -> S.OptionPragma +sOptionPragma pr = case pr of + LanguagePragma l ns -> S.LanguagePragma (getPointLoc l) (map sName ns) + IncludePragma l str -> S.IncludePragma (getPointLoc l) str + CFilesPragma l str -> S.CFilesPragma (getPointLoc l) str + OptionsPragma l mt str -> S.OptionsPragma (getPointLoc l) mt str + +sActivation :: Activation l -> S.Activation +sActivation act = case act of + ActiveFrom _ k -> S.ActiveFrom k + ActiveUntil _ k -> S.ActiveUntil k + +sRule :: SrcInfo loc => Rule loc -> S.Rule +sRule (Rule _ str mact mrvs e1 e2) = + S.Rule str (maybe S.AlwaysActive sActivation mact) (fmap (map sRuleVar) mrvs) (sExp e1) (sExp e2) + +sRuleVar :: RuleVar l -> S.RuleVar +sRuleVar (RuleVar _ n) = S.RuleVar (sName n) +sRuleVar (TypedRuleVar _ n t) = S.TypedRuleVar (sName n) (sType t) + +sWarningText :: WarningText l -> S.WarningText +sWarningText (DeprText _ str) = S.DeprText str +sWarningText (WarnText _ str) = S.WarnText str + +-- | Translate an annotated AST node representing a Haskell pattern +-- into a simpler unannotated form. +sPat :: SrcInfo loc => Pat loc -> S.Pat +sPat pat = case pat of + PVar _ n -> S.PVar (sName n) + PLit _ lit -> S.PLit (sLiteral lit) + PNeg _ p -> S.PNeg (sPat p) + PNPlusK _ n k -> S.PNPlusK (sName n) k + PInfixApp _ pa qn pb -> S.PInfixApp (sPat pa) (sQName qn) (sPat pb) + PApp _ qn ps -> S.PApp (sQName qn) (map sPat ps) + PTuple _ ps -> S.PTuple (map sPat ps) + PList _ ps -> S.PList (map sPat ps) + PParen _ p -> S.PParen (sPat p) + PRec _ qn pfs -> S.PRec (sQName qn) (map sPatField pfs) + PAsPat _ n p -> S.PAsPat (sName n) (sPat p) + PWildCard _ -> S.PWildCard + PIrrPat _ p -> S.PIrrPat (sPat p) + PatTypeSig l p t -> S.PatTypeSig (getPointLoc l) (sPat p) (sType t) + PViewPat _ e p -> S.PViewPat (sExp e) (sPat p) + PRPat _ rps -> S.PRPat (map sRPat rps) + PXTag l xn attrs mat ps -> S.PXTag (getPointLoc l) (sXName xn) (map sPXAttr attrs) (fmap sPat mat) (map sPat ps) + PXETag l xn attrs mat -> S.PXETag (getPointLoc l) (sXName xn) (map sPXAttr attrs) (fmap sPat mat) + PXPcdata _ str -> S.PXPcdata str + PXPatTag _ p -> S.PXPatTag (sPat p) + PXRPats _ rps -> S.PXRPats (map sRPat rps) + PExplTypeArg _ qn t -> S.PExplTypeArg (sQName qn) (sType t) + PQuasiQuote _ nm qt -> S.PQuasiQuote nm qt + PBangPat _ p -> S.PBangPat (sPat p) + +sPXAttr :: SrcInfo loc => PXAttr loc -> S.PXAttr +sPXAttr (PXAttr _ xn p) = S.PXAttr (sXName xn) (sPat p) + +sRPatOp :: RPatOp l -> S.RPatOp +sRPatOp rpop = case rpop of + RPStar _ -> S.RPStar + RPStarG _ -> S.RPStarG + RPPlus _ -> S.RPPlus + RPPlusG _ -> S.RPPlusG + RPOpt _ -> S.RPOpt + RPOptG _ -> S.RPOptG + +sRPat :: SrcInfo loc => RPat loc -> S.RPat +sRPat rp = case rp of + RPOp _ rp rop -> S.RPOp (sRPat rp) (sRPatOp rop) + RPEither _ rp1 rp2 -> S.RPEither (sRPat rp1) (sRPat rp2) + RPSeq _ rps -> S.RPSeq (map sRPat rps) + RPGuard _ p ss -> S.RPGuard (sPat p) (map sStmt ss) + RPCAs _ n rp -> S.RPCAs (sName n) (sRPat rp) + RPAs _ n rp -> S.RPAs (sName n) (sRPat rp) + RPParen _ rp -> S.RPParen (sRPat rp) + RPPat _ p -> S.RPPat (sPat p) + +sPatField :: SrcInfo loc => PatField loc -> S.PatField +sPatField pf = case pf of + PFieldPat _ qn p -> S.PFieldPat (sQName qn) (sPat p) + PFieldPun _ n -> S.PFieldPun (sName n) + PFieldWildcard _ -> S.PFieldWildcard + +sStmt :: SrcInfo loc => Stmt loc -> S.Stmt +sStmt stmt = case stmt of + Generator l p e -> S.Generator (getPointLoc l) (sPat p) (sExp e) + Qualifier _ e -> S.Qualifier (sExp e) + LetStmt _ bs -> S.LetStmt (sBinds bs) + RecStmt _ ss -> S.RecStmt (map sStmt ss) + +sQualStmt :: SrcInfo loc => QualStmt loc -> S.QualStmt +sQualStmt qs = case qs of + QualStmt _ stmt -> S.QualStmt (sStmt stmt) + ThenTrans _ e -> S.ThenTrans (sExp e) + ThenBy _ e1 e2 -> S.ThenBy (sExp e1) (sExp e2) + GroupBy _ e -> S.GroupBy (sExp e) + GroupUsing _ e -> S.GroupUsing (sExp e) + GroupByUsing _ e1 e2 -> S.GroupByUsing (sExp e1) (sExp e2) + +sFieldUpdate :: SrcInfo loc => FieldUpdate loc -> S.FieldUpdate +sFieldUpdate fu = case fu of + FieldUpdate _ qn e -> S.FieldUpdate (sQName qn) (sExp e) + FieldPun _ n -> S.FieldPun (sName n) + FieldWildcard _ -> S.FieldWildcard + +sAlt :: SrcInfo loc => Alt loc -> S.Alt +sAlt (Alt l p galts mbs) = S.Alt (getPointLoc l) (sPat p) (sGuardedAlts galts) (maybe (S.BDecls []) sBinds mbs) + +sGuardedAlts :: SrcInfo loc => GuardedAlts loc -> S.GuardedAlts +sGuardedAlts galts = case galts of + UnGuardedAlt _ e -> S.UnGuardedAlt (sExp e) + GuardedAlts _ gs -> S.GuardedAlts (map sGuardedAlt gs) + +sGuardedAlt :: SrcInfo loc => GuardedAlt loc -> S.GuardedAlt +sGuardedAlt (GuardedAlt l ss e) = S.GuardedAlt (getPointLoc l) (map sStmt ss) (sExp e)
− src/Language/Haskell/Exts/Annotated/SrcLoc.hs
@@ -1,142 +0,0 @@-{-# LANGUAGE CPP, DeriveDataTypeable #-} -module Language.Haskell.Exts.Annotated.SrcLoc where - -#ifdef __GLASGOW_HASKELL__ -#ifdef BASE4 -import Data.Data -#else -import Data.Generics (Data(..),Typeable(..)) -#endif -#endif - --- | A single position in the source. -data SrcLoc = SrcLoc - { srcFilename :: String - , srcLine :: Int - , srcColumn :: Int - } -#ifdef __GLASGOW_HASKELL__ - deriving (Eq,Ord,Show,Typeable,Data) -#else - deriving (Eq,Ord,Show) -#endif - - --- | A portion of the source, spanning one or more lines and zero or more columns. -data SrcSpan = SrcSpan - { srcSpanFilename :: String - , srcSpanStartLine :: Int - , srcSpanStartColumn :: Int - , srcSpanEndLine :: Int - , srcSpanEndColumn :: Int - } -#ifdef __GLASGOW_HASKELL__ - deriving (Eq,Ord,Show,Typeable,Data) -#else - deriving (Eq,Ord,Show) -#endif - --- | Combine two locations in the source to denote a span. -mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan -mkSrcSpan (SrcLoc fn sl sc) (SrcLoc _ el ec) = SrcSpan fn sl sc el ec - --- | Merge two source spans into a single span from the start of the first --- to the end of the second. Assumes that the two spans are given in the --- order they appear in the source. -mergeSrcSpan :: SrcSpan -> SrcSpan -> SrcSpan -mergeSrcSpan (SrcSpan fn sl sc _ _) (SrcSpan _ _ _ el ec) = SrcSpan fn sl sc el ec - -isNullSpan ss = srcSpanStartLine ss == srcSpanEndLine ss && - srcSpanStartColumn ss >= srcSpanEndColumn ss - --- | An entity located in the source. -data Loc a = Loc - { loc :: SrcSpan - , unLoc :: a - } - deriving (Eq,Ord,Show) - - --- | A portion of the source, extended with information on the position of entities within the span. -data SrcSpanInfo = SrcSpanInfo - { srcInfoSpan :: SrcSpan --- , explLayout :: Bool - , srcInfoPoints :: [SrcSpan] -- Marks the location of specific entities inside the span - } -#ifdef __GLASGOW_HASKELL__ - deriving (Eq,Ord,Show,Typeable,Data) -#else - deriving (Eq,Ord,Show) -#endif - -nIS, noInfoSpan :: SrcSpan -> SrcSpanInfo -noInfoSpan ss = SrcSpanInfo ss [] - -nIS = noInfoSpan - -pIS, pointInfoSpan :: SrcSpan -> SrcSpanInfo -pointInfoSpan ss = SrcSpanInfo ss [ss] - -pIS = pointInfoSpan - -iS, infoSpan :: SrcSpan -> [SrcSpan] -> SrcSpanInfo -infoSpan x y = SrcSpanInfo x y - -iS = infoSpan - -(<++>), combSpanInfo :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo -combSpanInfo s1 s2 = SrcSpanInfo - (mergeSrcSpan (srcInfoSpan s1) (srcInfoSpan s2)) - [] - -(<++>) = combSpanInfo - -(<+?>) :: SrcSpanInfo -> Maybe SrcSpanInfo -> SrcSpanInfo -a <+?> b = case b of {Nothing -> a; Just b -> a <++> b} - -(<?+>) :: Maybe SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo -a <?+> b = case a of {Nothing -> b; Just a -> a <++> b} - -(<**) :: SrcSpanInfo -> [SrcSpan] -> SrcSpanInfo -ss@(SrcSpanInfo {srcInfoPoints = ps}) <** xs = ss {srcInfoPoints = ps ++ xs} - ---(<??) :: SrcSpanInfo -> Bool -> SrcSpanInfo ---ss <?? b = ss { explLayout = b } - -(<^^>) :: SrcSpan -> SrcSpan -> SrcSpanInfo -a <^^> b = nIS (mergeSrcSpan a b) - -infixl 6 <^^> -infixl 5 <++> -infixl 4 <**, <+?>, <?+> - -class SrcInfo si where - toSrcInfo :: SrcLoc -> [SrcSpan] -> SrcLoc -> si - fromSrcInfo :: SrcSpanInfo -> si - getPointLoc :: si -> SrcLoc - fileName :: si -> String - startLine :: si -> Int - startColumn :: si -> Int - - getPointLoc si = SrcLoc (fileName si) (startLine si) (startColumn si) - -instance SrcInfo SrcLoc where - toSrcInfo s _ _ = s - fromSrcInfo si = SrcLoc (fileName si) (startLine si) (startColumn si) - fileName = srcFilename - startLine = srcLine - startColumn = srcColumn - -instance SrcInfo SrcSpan where - toSrcInfo st _ end = mkSrcSpan st end - fromSrcInfo = srcInfoSpan - fileName = srcSpanFilename - startLine = srcSpanStartLine - startColumn = srcSpanStartColumn - -instance SrcInfo SrcSpanInfo where - toSrcInfo st pts end = SrcSpanInfo (mkSrcSpan st end) pts - fromSrcInfo = id - fileName = fileName . srcInfoSpan - startLine = startLine . srcInfoSpan - startColumn = startColumn . srcInfoSpan
src/Language/Haskell/Exts/Annotated/Syntax.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE CPP, DeriveDataTypeable #-} ----------------------------------------------------------------------------- -- |--- Module : Language.Haskell.Exts.Syntax+-- Module : Language.Haskell.Exts.Annotated.Syntax -- Copyright : (c) Niklas Broberg 2004-2009, -- (c) The GHC Team, 1997-2000 -- License : BSD-style (see the file LICENSE.txt)@@ -10,7 +10,7 @@ -- Stability : stable -- Portability : portable ----- A suite of datatypes describing the abstract syntax of Haskell 98+-- A suite of datatypes describing the (semi-concrete) abstract syntax of Haskell 98 -- <http://www.haskell.org/onlinereport/> plus registered extensions, including: -- -- * multi-parameter type classes with functional dependencies (MultiParamTypeClasses, FunctionalDependencies)@@ -35,6 +35,10 @@ -- -- * HSP-style XML expressions and patterns (XmlSyntax) --+-- All nodes in the syntax tree are annotated with something of a user-definable data type.+-- When parsing, this annotation will contain information about the source location that the+-- particular node comes from.+-- ----------------------------------------------------------------------------- module Language.Haskell.Exts.Annotated.Syntax (@@ -107,7 +111,7 @@ #endif -- import Language.Haskell.Exts.SrcLoc-import Control.Monad.Instances -- just for Functor (,) a+-- import Control.Monad.Instances -- just for Functor (,) a {-- | A position in the source. data SrcLoc = SrcLoc {@@ -215,32 +219,33 @@ data Module l = Module l (Maybe (ModuleHead l)) [OptionPragma l] [ImportDecl l] [Decl l] -- ^ an ordinary Haskell module- | XmlPage l [OptionPragma l] (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]- -- ^ a module consisting of a single XML document+ | XmlPage l (ModuleName l) [OptionPragma l] (XName l) [XAttr l] (Maybe (Exp l)) [Exp l]+ -- ^ a module consisting of a single XML document. The ModuleName never appears in the source+ -- but is needed for semantic purposes, it will be the same as the file name. | XmlHybrid l (Maybe (ModuleHead l)) [OptionPragma l] [ImportDecl l] [Decl l] (XName l) [XAttr l] (Maybe (Exp l)) [Exp l] -- ^ a hybrid module combining an XML document with an ordinary module #ifdef __GLASGOW_HASKELL__- deriving (Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Show)+ deriving (Eq,Ord,Show) #endif -- | The head of a module, including the name and export specification. data ModuleHead l = ModuleHead l (ModuleName l) (Maybe (WarningText l)) (Maybe (ExportSpecList l)) #ifdef __GLASGOW_HASKELL__- deriving (Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Show)+ deriving (Eq,Ord,Show) #endif -- | An explicit export specification. data ExportSpecList l = ExportSpecList l [ExportSpec l] #ifdef __GLASGOW_HASKELL__- deriving (Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Show)+ deriving (Eq,Ord,Show) #endif -- | An item in a module's export specification.@@ -258,9 +263,9 @@ | EModuleContents l (ModuleName l) -- ^ @module M@: -- re-export a module. #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An import declaration.@@ -275,9 +280,9 @@ -- ^ optional list of import specifications. } #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An explicit import specification list.@@ -287,9 +292,9 @@ -- The 'Bool' is 'True' if the names are excluded -- by @hiding@. #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An import specification, representing a single explicit item imported@@ -305,9 +310,9 @@ -- a class imported with some of its methods, or -- a datatype imported with some of its constructors. #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Associativity of an operator.@@ -316,9 +321,9 @@ | AssocLeft l -- ^ left-associative operator (declared with @infixl@). | AssocRight l -- ^ right-associative operator (declared with @infixr@) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A top-level declaration.@@ -349,7 +354,7 @@ -- ^ A declaration of operator fixity | DefaultDecl l [Type l] -- ^ A declaration of default types- | SpliceDecl l (Splice l)+ | SpliceDecl l (Exp l) -- ^ A Template Haskell splicing declaration | TypeSig l [Name l] (Type l) -- ^ A type signature declaration@@ -377,17 +382,17 @@ | InstSig l (Maybe (Context l)) (InstHead l) -- ^ A SPECIALISE instance pragma #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A flag stating whether a declaration is a data or newtype declaration. data DataOrNew l = DataType l | NewType l #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The head of a type or class declaration.@@ -396,9 +401,9 @@ | DHInfix l (TyVarBind l) (Name l) (TyVarBind l) | DHParen l (DeclHead l) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The head of an instance declaration.@@ -407,17 +412,17 @@ | IHInfix l (Type l) (QName l) (Type l) | IHParen l (InstHead l) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A deriving clause following a data type declaration. data Deriving l = Deriving l [InstHead l] #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A binding group inside a @let@ or @where@ clause.@@ -425,17 +430,17 @@ = BDecls l [Decl l] -- ^ An ordinary binding group | IPBinds l [IPBind l] -- ^ A binding group for implicit parameters #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A binding of an implicit parameter. data IPBind l = IPBind l (IPName l) (Exp l) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Clauses of a function binding.@@ -443,9 +448,9 @@ = Match l (Name l) [Pat l] (Rhs l) {-where-} (Maybe (Binds l)) | InfixMatch l (Pat l) (Name l) (Pat l) (Rhs l) {-where-} (Maybe (Binds l)) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A single constructor declaration within a data type declaration,@@ -455,9 +460,9 @@ {-forall-} (Maybe [TyVarBind l]) {- . -} (Maybe (Context l)) {- => -} (ConDecl l) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Declaration of an ordinary data constructor.@@ -469,17 +474,17 @@ | RecDecl l (Name l) [FieldDecl l] -- ^ record constructor #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Declaration of a (list of) named field(s). data FieldDecl l = FieldDecl l [Name l] (BangType l) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif @@ -487,9 +492,9 @@ data GadtDecl l = GadtDecl l (Name l) (Type l) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Declarations inside a class declaration.@@ -503,9 +508,9 @@ | ClsTyDef l (Type l) (Type l) -- ^ default choice for an associated type synonym #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Declarations inside an instance declaration.@@ -521,9 +526,9 @@ | InsInline l Bool (Maybe (Activation l)) (QName l) -- ^ an INLINE pragma #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The type of a constructor argument or field, optionally including@@ -533,9 +538,9 @@ | UnBangedTy l (Type l) -- ^ non-strict component | UnpackedTy l (Type l) -- ^ unboxed component, marked with an UNPACK pragma #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The right hand side of a function or pattern binding.@@ -544,9 +549,9 @@ | GuardedRhss l [GuardedRhs l] -- ^ guarded right hand side (/gdrhs/) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A guarded right hand side @|@ /stmts/ @=@ /exp/.@@ -555,9 +560,9 @@ data GuardedRhs l = GuardedRhs l [Stmt l] (Exp l) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A type qualified with a context.@@ -577,9 +582,9 @@ | TyInfix l (Type l) (QName l) (Type l) -- ^ infix type constructor | TyKind l (Type l) (Kind l) -- ^ type with explicit kind signature #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Flag denoting whether a tuple is boxed or unboxed.@@ -595,9 +600,9 @@ = KindedVar l (Name l) (Kind l) -- ^ variable binding with kind annotation | UnkindedVar l (Name l) -- ^ ordinary variable binding #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An explicit kind annotation.@@ -606,10 +611,11 @@ | KindBang l -- ^ @!@, the kind of unboxed types | KindFn l (Kind l) (Kind l) -- ^ @->@, the kind of a type constructor | KindParen l (Kind l) -- ^ a parenthesised kind+ | KindVar l (Name l) -- ^ a kind variable (as-of-yet unsupported by compilers) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif @@ -618,9 +624,9 @@ data FunDep l = FunDep l [Name l] [Name l] #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A context is a set of assertions@@ -630,9 +636,9 @@ | CxParen l (Context l) | CxEmpty l #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Class assertions.@@ -645,9 +651,9 @@ | IParam l (IPName l) (Type l) -- ^ implicit parameter assertion | EqualP l (Type l) (Type l) -- ^ type equality constraint #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | /literal/@@ -666,9 +672,9 @@ | PrimChar l Char String -- ^ unboxed character literal | PrimString l String String -- ^ unboxed string literal #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Haskell expressions.@@ -739,9 +745,9 @@ | LeftArrHighApp l (Exp l) (Exp l) -- ^ higher-order arrow application (from left): /exp/ @-<<@ /exp/ | RightArrHighApp l (Exp l) (Exp l) -- ^ higher-order arrow application (from right): /exp/ @>>-@ /exp/ #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The name of an xml element or attribute,@@ -750,17 +756,17 @@ = XName l String -- <name ... | XDomName l String String -- <dom:name ... #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An xml attribute, which is a name-expression pair. data XAttr l = XAttr l (XName l) (Exp l) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A template haskell bracket expression.@@ -770,9 +776,9 @@ | TypeBracket l (Type l) -- ^ type bracket: @[t| ... |]@ | DeclBracket l [Decl l] -- ^ declaration bracket: @[d| ... |]@ #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A template haskell splice expression@@ -780,9 +786,9 @@ = IdSplice l String -- ^ variable splice: @$var@ | ParenSplice l (Exp l) -- ^ parenthesised expression splice: @$(/exp/)@ #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The safety of a foreign function call.@@ -790,9 +796,9 @@ = PlayRisky l -- ^ unsafe | PlaySafe l Bool -- ^ safe ('False') or threadsafe ('True') #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The calling convention of a foreign function call.@@ -800,9 +806,9 @@ = StdCall l | CCall l #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A top level options pragma, preceding the module header.@@ -813,17 +819,17 @@ | OptionsPragma l (Maybe Tool) String -- ^ OPTIONS pragma, possibly qualified with a tool, e.g. OPTIONS_GHC #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Recognised tools for OPTIONS pragmas. data Tool = GHC | HUGS | NHC98 | YHC | HADDOCK | UnknownTool String #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Activation clause of a RULES pragma.@@ -831,18 +837,18 @@ = ActiveFrom l Int | ActiveUntil l Int #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The body of a RULES pragma. data Rule l = Rule l String (Maybe (Activation l)) (Maybe [RuleVar l]) (Exp l) (Exp l) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Variables used in a RULES pragma, optionally annotated with types@@ -850,9 +856,9 @@ = RuleVar l (Name l) | TypedRuleVar l (Name l) (Type l) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Warning text to optionally use in the module header of e.g.@@ -861,9 +867,9 @@ = DeprText l String | WarnText l String #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif @@ -902,17 +908,17 @@ | PBangPat l (Pat l) -- ^ strict (bang) pattern: @f !x = ...@ #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An XML attribute in a pattern. data PXAttr l = PXAttr l (XName l) (Pat l) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A regular pattern operator.@@ -924,9 +930,9 @@ | RPOpt l -- ^ @?@ = 0 or 1 | RPOptG l -- ^ @?!@ = 0 or 1, greedy #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An entity in a regular pattern.@@ -940,9 +946,9 @@ | RPParen l (RPat l) | RPPat l (Pat l) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An /fpat/ in a labeled record pattern.@@ -951,9 +957,9 @@ | PFieldPun l (Name l) -- ^ record field pun | PFieldWildcard l -- ^ record field wildcard #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A statement, representing both a /stmt/ in a @do@-expression,@@ -969,9 +975,9 @@ | LetStmt l (Binds l) -- ^ local bindings | RecStmt l [Stmt l] -- ^ a recursive binding group for arrows #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A general /transqual/ in a list comprehension,@@ -985,9 +991,9 @@ | GroupUsing l (Exp l) -- ^ @then@ @group@ @using@ /exp/ | GroupByUsing l (Exp l) (Exp l) -- ^ @then@ @group@ @by@ /exp/ @using@ /exp/ #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An /fbind/ in a labeled construction or update expression.@@ -996,18 +1002,18 @@ | FieldPun l (Name l) -- ^ record field pun | FieldWildcard l -- ^ record field wildcard #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An /alt/ alternative in a @case@ expression. data Alt l = Alt l (Pat l) (GuardedAlts l) (Maybe (Binds l)) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The right-hand sides of a @case@ alternative,@@ -1017,18 +1023,18 @@ = UnGuardedAlt l (Exp l) -- ^ @->@ /exp/ | GuardedAlts l [GuardedAlt l] -- ^ /gdpat/ #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A guarded case alternative @|@ /stmts/ @->@ /exp/. data GuardedAlt l = GuardedAlt l [Stmt l] (Exp l) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -----------------------------------------------------------------------------@@ -1144,8 +1150,8 @@ instance Functor Module where fmap f (Module l mmh ops iss dcls) = Module (f l) (fmap (fmap f) mmh) (map (fmap f) ops) (map (fmap f) iss) (map (fmap f) dcls)- fmap f (XmlPage l os xn xas me es) =- XmlPage (f l) (map (fmap f) os) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) (map (fmap f) es)+ fmap f (XmlPage l mn os xn xas me es) =+ XmlPage (f l) (fmap f mn) (map (fmap f) os) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) (map (fmap f) es) fmap f (XmlHybrid l mmh ops iss dcls xn xas me es) = XmlHybrid (f l) (fmap (fmap f) mmh) (map (fmap f) ops) (map (fmap f) iss) (map (fmap f) dcls) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) (map (fmap f) es)@@ -1306,9 +1312,11 @@ fmap f (UnkindedVar l n) = UnkindedVar (f l) (fmap f n) instance Functor Kind where- fmap f (KindStar l) = KindStar (f l)- fmap f (KindBang l) = KindBang (f l)- fmap f (KindFn l k1 k2) = KindFn (f l) (fmap f k1) (fmap f k2)+ fmap f (KindStar l) = KindStar (f l)+ fmap f (KindBang l) = KindBang (f l)+ fmap f (KindFn l k1 k2) = KindFn (f l) (fmap f k1) (fmap f k2)+ fmap f (KindParen l k) = KindParen (f l) (fmap f k)+ fmap f (KindVar l n) = KindVar (f l) (fmap f n) instance Functor FunDep where fmap f (FunDep l ns1 ns2) = FunDep (f l) (map (fmap f) ns1) (map (fmap f) ns2)@@ -1523,7 +1531,7 @@ ----------------------------------------------------------------------------- -- Reading annotations -class Annotated ast where+class Functor ast => Annotated ast where ann :: ast l -> l amap :: (l -> l) -> ast l -> ast l @@ -1581,13 +1589,13 @@ instance Annotated Module where ann (Module l mmh ops iss dcls) = l- ann (XmlPage l os xn xas me es) = l+ ann (XmlPage l mn os xn xas me es) = l ann (XmlHybrid l mmh ops iss dcls xn xas me es) = l amap f (Module l mmh ops iss dcls) = Module (f l) mmh ops iss dcls- amap f (XmlPage l os xn xas me es) =- XmlPage (f l) os xn xas me es+ amap f (XmlPage l mn os xn xas me es) =+ XmlPage (f l) mn os xn xas me es amap f (XmlHybrid l mmh ops iss dcls xn xas me es) = XmlHybrid (f l) mmh ops iss dcls xn xas me es @@ -1835,9 +1843,13 @@ ann (KindStar l) = l ann (KindBang l) = l ann (KindFn l k1 k2) = l+ ann (KindParen l k) = l+ ann (KindVar l v) = l amap f (KindStar l) = KindStar (f l) amap f (KindBang l) = KindBang (f l) amap f (KindFn l k1 k2) = KindFn (f l) k1 k2+ amap f (KindParen l k) = KindParen (f l) k+ amap f (KindVar l n) = KindVar (f l) n instance Annotated FunDep where ann (FunDep l ns1 ns2) = l
src/Language/Haskell/Exts/Comments.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE CPP, DeriveDataTypeable #-} module Language.Haskell.Exts.Comments where -import Language.Haskell.Exts.Syntax +import Language.Haskell.Exts.SrcLoc #ifdef __GLASGOW_HASKELL__ #ifdef BASE4 @@ -11,8 +11,7 @@ #endif #endif -data Comment = SingleLine SrcLoc String - | MultiLine SrcLoc String +data Comment = Comment Bool SrcSpan String #ifdef __GLASGOW_HASKELL__ deriving (Eq,Show,Typeable,Data) #else
+ src/Language/Haskell/Exts/InternalParser.ly view
@@ -0,0 +1,1768 @@+> {+> {-# OPTIONS_HADDOCK hide #-}+> -----------------------------------------------------------------------------+> -- |+> -- Module : Language.Haskell.Exts.Annotated.Parser+> -- Copyright : (c) Niklas Broberg 2004-2009,+> -- Original (c) Simon Marlow, Sven Panne 1997-2000+> -- License : BSD-style (see the file LICENSE.txt)+> --+> -- Maintainer : Niklas Broberg, d00nibro@chalmers.se+> -- Stability : stable+> -- Portability : portable+> --+> --+> -----------------------------------------------------------------------------+>+> module Language.Haskell.Exts.InternalParser (+> -- * General parsing+> ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult,+> -- * Parsing of specific AST elements+> -- ** Modules+> parseModule, parseModuleWithMode, parseModuleWithComments,+> -- ** Expressions+> parseExp, parseExpWithMode, parseExpWithComments,+> -- ** Patterns+> parsePat, parsePatWithMode, parsePatWithComments,+> -- ** Declarations+> parseDecl, parseDeclWithMode, parseDeclWithComments,+> -- ** Types+> parseType, parseTypeWithMode, parseTypeWithComments,+> -- ** Option pragmas+> getTopPragmas+> ) where+>+> import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Exp(..), Asst(..), XAttr(..), FieldUpdate(..) )+> import Language.Haskell.Exts.Annotated.Syntax ( Type, Exp, Asst )+> import Language.Haskell.Exts.ParseMonad+> import Language.Haskell.Exts.Lexer+> import Language.Haskell.Exts.ParseUtils+> import Language.Haskell.Exts.Annotated.Fixity+> import Language.Haskell.Exts.SrcLoc+> import Language.Haskell.Exts.Comments ( Comment )+> import Language.Haskell.Exts.Extension++> import Control.Monad ( liftM )+import Debug.Trace (trace)++> }++-----------------------------------------------------------------------------+This module comprises a parser for Haskell 98 with the following extensions++* Multi-parameter type classes with functional dependencies+* Implicit parameters+* Pattern guards+* Mdo notation+* FFI+* HaRP+* HSP++Most of the code is blatantly stolen from the GHC module Language.Haskell.Parser.+Some of the code for extensions is greatly influenced by GHC's internal parser+library, ghc/compiler/parser/Parser.y.+-----------------------------------------------------------------------------+Conflicts: 6 shift/reduce++2 for ambiguity in 'case x of y | let z = y in z :: Bool -> b' [State 12, 244]+ (don't know whether to reduce 'Bool' as a btype or shift the '->'.+ Similarly lambda and if. The default resolution in favour of the+ shift means that a guard can never end with a type signature.+ In mitigation: it's a rare case and no Haskell implementation+ allows these, because it would require unbounded lookahead.)+ There are 2 conflicts rather than one because contexts are parsed+ as btypes (cf ctype).++1 for ambiguity in 'let ?x ...' [State 712]+ the parser can't tell whether the ?x is the lhs of a normal binding or+ an implicit binding. Fortunately resolving as shift gives it the only+ sensible meaning, namely the lhs of an implicit binding.++1 for ambiguity using hybrid modules [State 116]+ For HSP pages that start with a <% %> block, the parser cannot tell whether+ to reduce a srcloc or shift the starting <%. Since any other body could not+ start with <%, shifting is the only sensible thing to do.++1 for ambiguity using toplevel xml modules [State 119]+ For HSP xml pages starting with a <, the parser cannot tell whether to shift+ that < or reduce an implicit 'open'. Since no other body could possibly start+ with <, shifting is the only sensible thing to do.++1 for ambiguity in '{-# RULES "name" [ ... #-}' [State 318]+ we don't know whether the '[' starts the activation or not: it+ might be the start of the declaration with the activation being+ empty. Resolving with shift means the declaration cannot start with '['.++-----------------------------------------------------------------------------++> %token+> VARID { Loc _ (VarId _) }+> QVARID { Loc _ (QVarId _) }+> IDUPID { Loc _ (IDupVarId _) } -- duplicable implicit parameter ?x+> ILINID { Loc _ (ILinVarId _) } -- linear implicit parameter %x+> CONID { Loc _ (ConId _) }+> QCONID { Loc _ (QConId _) }+> DVARID { Loc _ (DVarId _) } -- VARID containing dashes+> VARSYM { Loc _ (VarSym _) }+> CONSYM { Loc _ (ConSym _) }+> QVARSYM { Loc _ (QVarSym _) }+> QCONSYM { Loc _ (QConSym _) }+> INT { Loc _ (IntTok _) }+> RATIONAL { Loc _ (FloatTok _) }+> CHAR { Loc _ (Character _) }+> STRING { Loc _ (StringTok _) }++> PRIMINT { Loc _ (IntTokHash _) }+> PRIMWORD { Loc _ (WordTokHash _) }+> PRIMFLOAT { Loc _ (FloatTokHash _) }+> PRIMDOUBLE { Loc _ (DoubleTokHash _) }+> PRIMCHAR { Loc _ (CharacterHash _) }+> PRIMSTRING { Loc _ (StringHash _) }++Symbols++> '(' { Loc $$ LeftParen }+> ')' { Loc $$ RightParen }+> '(#' { Loc $$ LeftHashParen }+> '#)' { Loc $$ RightHashParen }+> '{|' { Loc $$ LeftCurlyBar }+> '|}' { Loc $$ RightCurlyBar }+> ';' { Loc $$ SemiColon }+> '{' { Loc $$ LeftCurly }+> '}' { Loc $$ RightCurly }+> vccurly { Loc $$ VRightCurly } -- a virtual close brace+> '[' { Loc $$ LeftSquare }+> ']' { Loc $$ RightSquare }+> ',' { Loc $$ Comma }+> '_' { Loc $$ Underscore }+> '`' { Loc $$ BackQuote }++Reserved operators++> '.' { Loc $$ Dot }+> '..' { Loc $$ DotDot }+> ':' { Loc $$ Colon }+> '::' { Loc $$ DoubleColon }+> '=' { Loc $$ Equals }+> '\\' { Loc $$ Backslash }+> '|' { Loc $$ Bar }+> '<-' { Loc $$ LeftArrow }+> '->' { Loc $$ RightArrow }+> '@' { Loc $$ At }+> '~' { Loc $$ Tilde }+> '=>' { Loc $$ DoubleArrow }+> '-' { Loc $$ Minus }+> '!' { Loc $$ Exclamation }+> '*' { Loc $$ Star }++Arrows++> '-<' { Loc $$ LeftArrowTail }+> '>-' { Loc $$ RightArrowTail }+> '-<<' { Loc $$ LeftDblArrowTail }+> '>>-' { Loc $$ RightDblArrowTail }++Harp++> '(|' { Loc $$ RPGuardOpen }+> '|)' { Loc $$ RPGuardClose }+> '@:' { Loc $$ RPCAt }++Template Haskell++> IDSPLICE { Loc _ (THIdEscape _) } -- $x+> '$(' { Loc $$ THParenEscape }+> '[|' { Loc $$ THExpQuote }+> '[p|' { Loc $$ THPatQuote }+> '[t|' { Loc $$ THTypQuote }+> '[d|' { Loc $$ THDecQuote }+> '|]' { Loc $$ THCloseQuote }+> VARQUOTE { Loc $$ THVarQuote } -- 'x+> TYPQUOTE { Loc $$ THTyQuote } -- ''T+> QUASIQUOTE { Loc _ (THQuasiQuote _) }++Hsx++> PCDATA { Loc _ (XPCDATA _) }+> '<' { Loc $$ XStdTagOpen }+> '</' { Loc $$ XCloseTagOpen }+> '<%' { Loc $$ XCodeTagOpen }+> '>' { Loc $$ XStdTagClose }+> '/>' { Loc $$ XEmptyTagClose }+> '%>' { Loc $$ XCodeTagClose }+> '<[' { Loc $$ XRPatOpen }+> ']>' { Loc $$ XRPatClose }++FFI++> 'foreign' { Loc $$ KW_Foreign }+> 'export' { Loc $$ KW_Export }+> 'safe' { Loc $$ KW_Safe }+> 'unsafe' { Loc $$ KW_Unsafe }+> 'threadsafe' { Loc $$ KW_Threadsafe }+> 'stdcall' { Loc $$ KW_StdCall }+> 'ccall' { Loc $$ KW_CCall }++Reserved Ids++> 'as' { Loc $$ KW_As }+> 'by' { Loc $$ KW_By } -- transform list comprehensions+> 'case' { Loc $$ KW_Case }+> 'class' { Loc $$ KW_Class }+> 'data' { Loc $$ KW_Data }+> 'default' { Loc $$ KW_Default }+> 'deriving' { Loc $$ KW_Deriving }+> 'do' { Loc $$ KW_Do }+> 'else' { Loc $$ KW_Else }+> 'family' { Loc $$ KW_Family } -- indexed type families+> 'forall' { Loc $$ KW_Forall } -- universal/existential qualification+> 'group' { Loc $$ KW_Group } -- transform list comprehensions+> 'hiding' { Loc $$ KW_Hiding }+> 'if' { Loc $$ KW_If }+> 'import' { Loc $$ KW_Import }+> 'in' { Loc $$ KW_In }+> 'infix' { Loc $$ KW_Infix }+> 'infixl' { Loc $$ KW_InfixL }+> 'infixr' { Loc $$ KW_InfixR }+> 'instance' { Loc $$ KW_Instance }+> 'let' { Loc $$ KW_Let }+> 'mdo' { Loc $$ KW_MDo }+> 'module' { Loc $$ KW_Module }+> 'newtype' { Loc $$ KW_NewType }+> 'of' { Loc $$ KW_Of }+> 'proc' { Loc $$ KW_Proc } -- arrows+> 'rec' { Loc $$ KW_Rec } -- arrows+> 'then' { Loc $$ KW_Then }+> 'type' { Loc $$ KW_Type }+> 'using' { Loc $$ KW_Using } -- transform list comprehensions+> 'where' { Loc $$ KW_Where }+> 'qualified' { Loc $$ KW_Qualified }++Pragmas++> '{-# INLINE' { Loc _ (INLINE _) }+> '{-# SPECIALISE' { Loc $$ SPECIALISE }+> '{-# SPECIALISE_INLINE' { Loc _ (SPECIALISE_INLINE _) }+> '{-# SOURCE' { Loc $$ SOURCE }+> '{-# RULES' { Loc $$ RULES }+> '{-# CORE' { Loc $$ CORE }+> '{-# SCC' { Loc $$ SCC }+> '{-# GENERATED' { Loc $$ GENERATED }+> '{-# DEPRECATED' { Loc $$ DEPRECATED }+> '{-# WARNING' { Loc $$ WARNING }+> '{-# UNPACK' { Loc $$ UNPACK }+> '{-# OPTIONS' { Loc _ (OPTIONS _) }+> '{-# CFILES' { Loc _ (CFILES _) }+> '{-# INCLUDE' { Loc _ (INCLUDE _) }+> '{-# LANGUAGE' { Loc $$ LANGUAGE }+> '#-}' { Loc $$ PragmaEnd }+++> %monad { P }+> %lexer { lexer } { Loc _ EOF }+> %error { parseError }+> %name mparseModule page+> %name mparseExp trueexp+> %name mparsePat pat+> %name mparseDecl topdecl+> %name mparseType truectype+> %partial mfindOptPragmas toppragmas+> %tokentype { Loc Token }+> %expect 6+> %%++-----------------------------------------------------------------------------+HSP Pages++Any HSP-specific parts requiring the XmlSyntax extension enabled will+be governed by the lexing, since all productions require at least one+special lexeme.++TODO: Yuck, this is messy, needs fixing in the AST!++> page :: { Module L }+> : toppragmas topxml {% checkPageModule $2 $1 }+> | toppragmas '<%' module '%>' topxml {% let (os,ss,l) = $1 in checkHybridModule $5 ($3 os ss l) $2 $4 }+> | toppragmas module { let (os,ss,l) = $1 in $2 os ss l }++> topxml :: { PExp L }+> : '<' name attrs mattr '>' children '</' name '>' {% do { n <- checkEqNames $2 $8;+> let { cn = reverse $6;+> as = reverse $3; };+> return $ XTag ($1 <^^> $9 <** [$1,$5,$7,$9]) n as $4 cn } }+> | '<' name attrs mattr '/>' { XETag ($1 <^^> $5 <** [$1,$5]) $2 (reverse $3) $4 }+++> toppragmas :: { ([OptionPragma L],[S],L) }+> : open toppragmasaux close { let (os,ss,ml) = $2 in (os,$1:ss++[$3],$1 <^^> $3) }++> toppragmasaux :: { ([OptionPragma L],[S],Maybe L) }+> : toppragma ';' toppragmasaux { let (os,ss,ml) = $3 in ($1 : os, $2 : ss, Just $ ann $1 <++> nIS $2 <+?> ml) }+> | {- nothing -} { ([],[],Nothing) }++TODO: the various pragma starts with content don't record where that content is located.++> toppragma :: { OptionPragma L }+> : '{-# LANGUAGE' conids optsemis '#-}' { LanguagePragma ($1 <^^> $4 <** ($1:snd $2 ++ reverse $3 ++ [$4])) (fst $2) }+> | '{-# INCLUDE' optsemis '#-}' { let Loc l (INCLUDE s) = $1 in IncludePragma (l <^^> $3 <** (l:reverse $2 ++ [$3])) s }+> | '{-# OPTIONS' optsemis '#-}' { let Loc l (OPTIONS (mc, s)) = $1+> in OptionsPragma (l <^^> $3 <** (l:reverse $2 ++ [$3])) (readTool mc) s }+> | '{-# CFILES' optsemis '#-}' { let Loc l (CFILES s) = $1+> in CFilesPragma (l <^^> $3 <** (l:reverse $2 ++ [$3])) s }++> conids :: { ([Name L],[S]) }+> : conid ',' conids { ($1 : fst $3, $2 : snd $3) }+> | conid { ([$1],[]) }++-----------------------------------------------------------------------------+Module Header++> module :: { [OptionPragma L] -> [S] -> L -> Module L }+> : optmodulehead body+> { let (is,ds,ss1,inf) = $2+> in \os ss l -> Module (l <++> inf <** (ss ++ ss1)) $1 os is ds }++> optmodulehead :: { Maybe (ModuleHead L) }+> : 'module' modid maybemodwarning maybeexports 'where' { Just $ ModuleHead ($1 <^^> $5 <** [$1,$5]) $2 $3 $4 }+> | {- empty -} { Nothing }++> maybemodwarning :: { Maybe (WarningText L) }+> : '{-# DEPRECATED' STRING '#-}' { let Loc l (StringTok (s,_)) = $2 in Just $ DeprText ($1 <^^> $3 <** [$1,l,$3]) s }+> | '{-# WARNING' STRING '#-}' { let Loc l (StringTok (s,_)) = $2 in Just $ WarnText ($1 <^^> $3 <** [$1,l,$3]) s }+> | {- empty -} { Nothing }++> body :: { ([ImportDecl L],[Decl L],[S],L) }+> : '{' bodyaux '}' { let (is,ds,ss) = $2 in (is,ds,$1:ss ++ [$3], $1 <^^> $3) }+> | open bodyaux close { let (is,ds,ss) = $2 in (is,ds,$1:ss ++ [$3], $1 <^^> $3) }++> bodyaux :: { ([ImportDecl L],[Decl L],[S]) }+> : optsemis impdecls semis topdecls { (reverse (fst $2), fst $4, reverse $1 ++ snd $2 ++ reverse $3 ++ snd $4) }+> | optsemis topdecls { ([], fst $2, reverse $1 ++ snd $2) }+> | optsemis impdecls optsemis { (reverse (fst $2), [], reverse $1 ++ snd $2 ++ reverse $3) }+> | optsemis { ([], [], reverse $1) }++> semis :: { [S] }+> : optsemis ';' { $2 : $1 }++> optsemis :: { [S] }+> : semis { $1 }+> | {- empty -} { [] }++-----------------------------------------------------------------------------+The Export List++> maybeexports :: { Maybe (ExportSpecList L) }+> : exports { Just $1 }+> | {- empty -} { Nothing }++> exports :: { ExportSpecList L }+> : '(' exportlist optcomma ')' { ExportSpecList ($1 <^^> $4 <** ($1:reverse (snd $2) ++ $3 ++ [$4])) (reverse (fst $2)) }+> | '(' optcomma ')' { ExportSpecList ($1 <^^> $3 <** ($1:$2++[$3])) [] }++> optcomma :: { [S] }+> : ',' { [$1] }+> | {- empty -} { [ ] }++> exportlist :: { ([ExportSpec L],[S]) }+> : exportlist ',' export { ($3 : fst $1, $2 : snd $1) }+> | export { ([$1],[]) }++> export :: { ExportSpec L }+> : qvar { EVar (ann $1) $1 }+> | qtyconorcls { EAbs (ann $1) $1 }+> | qtyconorcls '(' '..' ')' { EThingAll (ann $1 <++> nIS $4 <** [$2,$3,$4]) $1 }+> | qtyconorcls '(' ')' { EThingWith (ann $1 <++> nIS $3 <** [$2,$3]) $1 [] }+> | qtyconorcls '(' cnames ')' { EThingWith (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) $1 (reverse (fst $3)) }+> | 'module' modid { EModuleContents (nIS $1 <++> ann $2 <** [$1]) $2 }++-----------------------------------------------------------------------------+Import Declarations++> impdecls :: { ([ImportDecl L],[S]) }+> : impdecls semis impdecl { ($3 : fst $1, snd $1 ++ reverse $2) }+> | impdecl { ([$1],[]) }++> impdecl :: { ImportDecl L }+> : 'import' optsrc optqualified maybepkg modid maybeas maybeimpspec+> { let { (mmn,ss,ml) = $6 ;+> l = nIS $1 <++> ann $5 <+?> ml <+?> (fmap ann) $7 <** ($1:snd $2 ++ snd $3 ++ snd $4 ++ ss)}+> in ImportDecl l $5 (fst $3) (fst $2) (fst $4) mmn $7 }++> optsrc :: { (Bool,[S]) }+> : '{-# SOURCE' '#-}' { (True,[$1,$2]) }+> | {- empty -} { (False,[]) }++> optqualified :: { (Bool,[S]) }+> : 'qualified' { (True,[$1]) }+> | {- empty -} { (False, []) }++Requires the PackageImports extension enabled.+> maybepkg :: { (Maybe String,[S]) }+> : STRING {% do { checkEnabled PackageImports ;+> let { Loc l (StringTok (s,_)) = $1 } ;+> return $ (Just s,[l]) } }+> | {- empty -} { (Nothing,[]) }++> maybeas :: { (Maybe (ModuleName L),[S],Maybe L) }+> : 'as' modid { (Just $2,[$1],Just (nIS $1 <++> ann $2)) }+> | {- empty -} { (Nothing,[],Nothing) }+++> maybeimpspec :: { Maybe (ImportSpecList L) }+> : impspec { Just $1 }+> | {- empty -} { Nothing }++> impspec :: { ImportSpecList L }+> : opthiding '(' importlist optcomma ')' { let {(b,ml,s) = $1 ;+> l = (ml <?+> ($2 <^^> $5)) <** (s ++ $2:reverse (snd $3) ++ $4 ++ [$5])}+> in ImportSpecList l b (reverse (fst $3)) }+> | opthiding '(' optcomma ')' { let {(b,ml,s) = $1 ; l = (ml <?+> ($2 <^^> $4)) <** (s ++ $2:$3 ++ [$4])}+> in ImportSpecList l b [] }++> opthiding :: { (Bool, Maybe L,[S]) }+> : 'hiding' { (True,Just (nIS $1),[$1]) }+> | {- empty -} { (False,Nothing,[]) }++> importlist :: { ([ImportSpec L],[S]) }+> : importlist ',' importspec { ($3 : fst $1, $2 : snd $1) }+> | importspec { ([$1],[]) }++> importspec :: { ImportSpec L }+> : var { IVar (ann $1) $1 }+> | tyconorcls { IAbs (ann $1) $1 }+> | tyconorcls '(' '..' ')' { IThingAll (ann $1 <++> nIS $4 <** [$2,$3,$4]) $1 }+> | tyconorcls '(' ')' { IThingWith (ann $1 <++> nIS $3 <** [$2,$3]) $1 [] }+> | tyconorcls '(' cnames ')' { IThingWith (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) $1 (reverse (fst $3)) }++> cnames :: { ([CName L],[S]) }+> : cnames ',' cname { ($3 : fst $1, $2 : snd $1) }+> | cname { ([$1],[]) }++> cname :: { CName L }+> : var { VarName (ann $1) $1 }+> | con { ConName (ann $1) $1 }++-----------------------------------------------------------------------------+Fixity Declarations++> fixdecl :: { Decl L }+> : infix prec ops { let (ops,ss,l) = $3+> in InfixDecl (ann $1 <++> l <** (snd $2 ++ reverse ss)) $1 (fst $2) (reverse ops) }++> prec :: { (Maybe Int, [S]) }+> : {- empty -} { (Nothing, []) }+> | INT {% let Loc l (IntTok (i,_)) = $1 in checkPrec i >>= \i -> return (Just i, [l]) }++> infix :: { Assoc L }+> : 'infix' { AssocNone $ nIS $1 }+> | 'infixl' { AssocLeft $ nIS $1 }+> | 'infixr' { AssocRight $ nIS $1 }++> ops :: { ([Op L],[S],L) }+> : ops ',' op { let (ops,ss,l) = $1 in ($3 : ops, $2 : ss, l <++> ann $3) }+> | op { ([$1],[],ann $1) }++-----------------------------------------------------------------------------+Top-Level Declarations++Note: The report allows topdecls to be empty. This would result in another+shift/reduce-conflict, so we don't handle this case here, but in bodyaux.++> topdecls :: { ([Decl L],[S]) }+> : topdecls1 optsemis {% checkRevDecls (fst $1) >>= \ds -> return (ds, snd $1 ++ reverse $2) }++> topdecls1 :: { ([Decl L],[S]) }+> : topdecls1 semis topdecl { ($3 : fst $1, snd $1 ++ reverse $2) }+> | topdecl { ([$1],[]) }++> topdecl :: { Decl L }+> : 'type' dtype '=' truectype+> {% do { dh <- checkSimpleType $2;+> let {l = nIS $1 <++> ann $4 <** [$1,$3]};+> return (TypeDecl l dh $4) } }++Requires the TypeFamilies extension enabled, but the lexer will handle+that through the 'family' keyword.+> | 'type' 'family' type optkind+> {% do { dh <- checkSimpleType $3;+> let {l = nIS $1 <++> ann $3 <+?> (fmap ann) (fst $4) <** ($1:$2:snd $4)};+> return (TypeFamDecl l dh (fst $4)) } }++Here there is no special keyword so we must do the check.+> | 'type' 'instance' truedtype '=' truectype+> {% do { -- no checkSimpleType $4 since dtype may contain type patterns+> checkEnabled TypeFamilies ;+> let {l = nIS $1 <++> ann $5 <** [$1,$2,$4]};+> return (TypeInsDecl l $3 $5) } }+> | data_or_newtype ctype constrs0 deriving+> {% do { (cs,dh) <- checkDataHeader $2;+> let { (qds,ss,minf) = $3;+> l = $1 <> $2 <+?> minf <+?> fmap ann $4 <** ss};+> checkDataOrNew $1 qds;+> return (DataDecl l $1 cs dh (reverse qds) $4) } }++Requires the GADTs extension enabled, handled in gadtlist.+> | data_or_newtype ctype optkind gadtlist deriving+> {% do { (cs,dh) <- checkDataHeader $2;+> let { (gs,ss,minf) = $4;+> l = ann $1 <+?> minf <+?> fmap ann $5 <** (snd $3 ++ ss)};+> checkDataOrNew $1 gs;+> return (GDataDecl l $1 cs dh (fst $3) (reverse gs) $5) } }++Same as above, lexer will handle it through the 'family' keyword.+> | 'data' 'family' ctype optkind+> {% do { (cs,dh) <- checkDataHeader $3;+> let {l = nIS $1 <++> ann $3 <+?> (fmap ann) (fst $4) <** ($1:$2:snd $4)};+> return (DataFamDecl l cs dh (fst $4)) } }++Here we must check for TypeFamilies.+> | data_or_newtype 'instance' truectype constrs0 deriving+> {% do { -- (cs,c,t) <- checkDataHeader $4;+> checkEnabled TypeFamilies ;+> let { (qds,ss,minf) = $4 ;+> l = $1 <> $3 <+?> minf <+?> fmap ann $5 <** $2:ss };+> checkDataOrNew $1 qds;+> return (DataInsDecl l $1 $3 (reverse qds) $5) } }++This style requires both TypeFamilies and GADTs, the latter is handled in gadtlist.+> | data_or_newtype 'instance' truectype optkind gadtlist deriving+> {% do { -- (cs,c,t) <- checkDataHeader $4;+> checkEnabled TypeFamilies ;+> let {(gs,ss,minf) = $5;+> l = ann $1 <+?> minf <+?> fmap ann $6 <** ($2:snd $4 ++ ss)};+> checkDataOrNew $1 gs;+> return (GDataInsDecl l $1 $3 (fst $4) (reverse gs) $6) } }+> | 'class' ctype fds optcbody+> {% do { (cs,dh) <- checkClassHeader $2;+> let {(fds,ss1,minf1) = $3;(mcs,ss2,minf2) = $4} ;+> let { l = nIS $1 <++> ann $2 <+?> minf1 <+?> minf2 <** ($1:ss1 ++ ss2)} ;+> return (ClassDecl l cs dh fds mcs) } }+> | 'instance' ctype optvaldefs+> {% do { (cs,ih) <- checkInstHeader $2;+> let {(mis,ss,minf) = $3};+> return (InstDecl (nIS $1 <++> ann $2 <+?> minf <** ($1:ss)) cs ih mis) } }++Requires the StandaloneDeriving extension enabled.+> | 'deriving' 'instance' ctype+> {% do { checkEnabled StandaloneDeriving ;+> (cs, ih) <- checkInstHeader $3;+> let {l = nIS $1 <++> ann $3 <** [$1,$2]};+> return (DerivDecl l cs ih) } }+> | 'default' '(' typelist ')'+> { DefaultDecl ($1 <^^> $4 <** ($1:$2 : snd $3 ++ [$4])) (fst $3) }++Requires the TemplateHaskell extension, but the lexer will handle that+through the '$(' lexeme.+CHANGE: Arbitrary top-level expressions are considered implicit splices+> | exp0 {% checkEnabled TemplateHaskell >> checkExpr $1 >>= \e -> return (SpliceDecl (ann e) e) }+ | '$(' trueexp ')' { let l = $1 <^^> $3 <** [$1,$3] in SpliceDecl l $ ParenSplice l $2 }++These require the ForeignFunctionInterface extension, handled by the+lexer through the 'foreign' (and 'export') keyword.+> | 'foreign' 'import' callconv safety fspec+> { let (s,n,t,ss) = $5 in ForImp (nIS $1 <++> ann t <** ($1:$2:ss)) $3 $4 s n t }+> | 'foreign' 'export' callconv fspec+> { let (s,n,t,ss) = $4 in ForExp (nIS $1 <++> ann t <** ($1:$2:ss)) $3 s n t }++> | '{-# RULES' rules '#-}' { RulePragmaDecl ($1 <^^> $3 <** [$1,$3]) $ reverse $2 }+> | '{-# DEPRECATED' warndeprs '#-}' { DeprPragmaDecl ($1 <^^> $3 <** ($1:snd $2++[$3])) $ reverse (fst $2) }+> | '{-# WARNING' warndeprs '#-}' { WarnPragmaDecl ($1 <^^> $3 <** ($1:snd $2++[$3])) $ reverse (fst $2) }+> | decl { $1 }++> data_or_newtype :: { DataOrNew L }+> : 'data' { DataType $ nIS $1 }+> | 'newtype' { NewType $ nIS $1 }++> typelist :: { ([Type L],[S]) }+> : types {% do { ts <- mapM checkType (fst $1);+> return $ (reverse ts, reverse (snd $1)) } }+> | truetype { ([$1],[]) }+> | {- empty -} { ([],[]) }++> decls :: { ([Decl L],[S]) }+> : optsemis decls1 optsemis {% checkRevDecls (fst $2) >>= \ds -> return (ds, reverse $1 ++ snd $2 ++ reverse $3) }+> | optsemis { ([],reverse $1) }++> decls1 :: { ([Decl L],[S]) }+> : decls1 semis decl { ($3 : fst $1, snd $1 ++ reverse $2) }+> | decl { ([$1],[]) }++> decl :: { Decl L }+> : signdecl { $1 }+> | fixdecl { $1 }+> | valdef { $1 }++> decllist :: { Binds L }+> : '{' decls '}' { BDecls ($1 <^^> $3 <** ($1:snd $2++[$3])) (fst $2) }+> | open decls close { BDecls ($1 <^^> $3 <** ($1:snd $2++[$3])) (fst $2) }++> signdecl :: { Decl L }+> : exp0b '::' truectype {% do { v <- checkSigVar $1;+> return $ TypeSig ($1 <> $3 <** [$2]) [v] $3 } }+> | exp0b ',' vars '::' truectype {% do { v <- checkSigVar $1;+> let {(vs,ss,_) = $3 ; l = $1 <> $5 <** ($2 : reverse ss ++ [$4]) } ;+> return $ TypeSig l (v : reverse vs) $5 } }+> | '{-# INLINE' activation qvar '#-}' { let Loc l (INLINE s) = $1 in InlineSig (l <^^> $4 <** [l,$4]) s $2 $3 }+> | '{-# SPECIALISE' qvar '::' sigtypes '#-}' { SpecSig ($1 <^^> $5 <** ($1:$3 : snd $4 ++ [$5])) $2 (fst $4) }+> | '{-# SPECIALISE_INLINE' activation qvar '::' sigtypes '#-}'+> { let Loc l (SPECIALISE_INLINE s) = $1+> in SpecInlineSig (l <^^> $6 <** (l:$4:snd $5++[$6])) s $2 $3 (fst $5) }+> | '{-# SPECIALISE' 'instance' ctype '#-}' {% do { (cs,ih) <- checkInstHeader $3;+> let {l = $1 <^^> $4 <** [$1,$2,$4]};+> return $ InstSig l cs ih } }++> sigtypes :: { ([Type L],[S]) }+> : sigtype { ([$1],[]) }+> | sigtype ',' sigtypes { ($1 : fst $3, $2 : snd $3) }++> sigtype :: { Type L }+> : ctype {% checkType $ mkTyForall (ann $1) Nothing Nothing $1 }++Binding can be either of implicit parameters, or it can be a normal sequence+of declarations. The two kinds cannot be mixed within the same block of+binding.++> binds :: { Binds L }+> : decllist { $1 }+> | '{' ipbinds '}' { IPBinds ($1 <^^> $3 <** snd $2) (fst $2) }+> | open ipbinds close { IPBinds ($1 <^^> $3 <** snd $2) (fst $2) }++ATTENTION: Dirty Hackery Ahead! If the second alternative of vars is var+instead of qvar, we get another shift/reduce-conflict. Consider the+following programs:++ { (+) :: ... } only var+ { (+) x y = ... } could (incorrectly) be qvar++We re-use expressions for patterns, so a qvar would be allowed in patterns+instead of a var only (which would be correct). But deciding what the + is,+would require more lookahead. So let's check for ourselves...++> vars :: { ([Name L],[S],L) }+> : vars ',' var { let (ns,ss,l) = $1 in ($3 : ns, $2 : ss, l <++> ann $3) }+> | qvar {% do { n <- checkUnQual $1;+> return ([n],[],ann n) } }++-----------------------------------------------------------------------------+FFI++These will only be called on in the presence of a 'foreign' keyword,+so no need to check for extensions.++> callconv :: { CallConv L }+> : 'stdcall' { StdCall (nIS $1) }+> | 'ccall' { CCall (nIS $1) }++> safety :: { Maybe (Safety L) }+> : 'safe' { Just $ PlaySafe (nIS $1) False }+> | 'unsafe' { Just $ PlayRisky (nIS $1) }+> | 'threadsafe' { Just $ PlaySafe (nIS $1) True }+> | {- empty -} { Nothing }++> fspec :: { (Maybe String, Name L, Type L, [S]) }+> : STRING var_no_safety '::' truedtype { let Loc l (StringTok (s,_)) = $1 in (Just s, $2, $4, [l,$3]) }+> | var_no_safety '::' truedtype { (Nothing, $1, $3, [$2]) }++-----------------------------------------------------------------------------+Pragmas++> rules :: { [Rule L] }+> : rules ';'rule { $3 : $1 }+> | rules ';' { $1 }+> | rule { [$1] }+> | {- empty -} { [] }++> rule :: { Rule L }+> : STRING activation ruleforall exp0 '=' trueexp {% do { let {Loc l (StringTok (s,_)) = $1};+> e <- checkRuleExpr $4;+> return $ Rule (nIS l <++> ann $6 <** l:snd $3 ++ [$5]) s $2 (fst $3) e $6 } }++> activation :: { Maybe (Activation L) }+> : {- empty -} { Nothing }+> | '[' INT ']' { let Loc l (IntTok (i,_)) = $2 in Just $ ActiveFrom ($1 <^^> $3 <** [$1,l,$3]) (fromInteger i) }+> | '[' '~' INT ']' { let Loc l (IntTok (i,_)) = $3 in Just $ ActiveUntil ($1 <^^> $4 <** [$1,$2,l,$4]) (fromInteger i) }++> ruleforall :: { (Maybe [RuleVar L],[S]) }+> : {- empty -} { (Nothing,[]) }+> | 'forall' rulevars '.' { (Just $2,[$1,$3]) }++> rulevars :: { [RuleVar L] }+> : rulevar { [$1] }+> | rulevar rulevars { $1 : $2 }++> rulevar :: { RuleVar L }+> : varid { RuleVar (ann $1) $1 }+> | '(' varid '::' truectype ')' { TypedRuleVar ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }++> warndeprs :: { ([([Name L],String)],[S]) }+> : warndeprs ';' warndepr { (fst $3 : fst $1, snd $1 ++ ($2:snd $3)) }+> | warndeprs ';' { (fst $1, snd $1 ++ [$2]) }+> | warndepr { ([fst $1],snd $1) }+> | {- empty -} { ([],[]) }++> warndepr :: { (([Name L], String),[S]) }+> : namevars STRING { let Loc l (StringTok (s,_)) = $2 in ((fst $1,s),snd $1 ++ [l]) }++> namevars :: { ([Name L],[S]) }+> : namevar { ([$1],[]) }+> | namevar ',' namevars { ($1 : fst $3, $2 : snd $3) }++> namevar :: { Name L }+> : con { $1 }+> | var { $1 }++-----------------------------------------------------------------------------+Types++Type equality contraints need the TypeFamilies extension.++> truedtype :: { Type L }+> : dtype {% checkType $1 }++> dtype :: { PType L }+> : btype { $1 }+> | btype qtyconop dtype { TyInfix ($1 <> $3) $1 $2 $3 }+> | btype qtyvarop dtype { TyInfix ($1 <> $3) $1 $2 $3 } -- FIXME+> | btype '->' ctype { TyFun ($1 <> $3 <** [$2]) $1 $3 }+> | btype '~' btype {% do { checkEnabled TypeFamilies ;+> let {l = $1 <> $3 <** [$2]};+> return $ TyPred l $ EqualP l $1 $3 } }++Implicit parameters can occur in normal types, as well as in contexts.++> truetype :: { Type L }+> : type {% checkType $1 }++> type :: { PType L }+> : ivar '::' dtype { let l = ($1 <> $3 <** [$2]) in TyPred l $ IParam l $1 $3 }+> | dtype { $1 }++> truebtype :: { Type L }+> : btype {% checkType $1 }++> btype :: { PType L }+> : btype atype { TyApp ($1 <> $2) $1 $2 }+> | atype { $1 }++UnboxedTuples requires the extension, but that will be handled through+the (# and #) lexemes. Kinds will be handled at the kind rule.++> trueatype :: { Type L }+> : atype {% checkType $1 }++> atype :: { PType L }+> : gtycon { TyCon (ann $1) $1 }+> | tyvar { TyVar (ann $1) $1 }+> | '(' types ')' { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Boxed (reverse (fst $2)) }+> | '(#' types1 '#)' { TyTuple ($1 <^^> $3 <** ($1:reverse ($3:snd $2))) Unboxed (reverse (fst $2)) }+> | '[' type ']' { TyList ($1 <^^> $3 <** [$1,$3]) $2 }+> | '(' ctype ')' { TyParen ($1 <^^> $3 <** [$1,$3]) $2 }+> | '(' ctype '::' kind ')' { TyKind ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }++> gtycon :: { QName L }+> : otycon { $1 }+> | '(' ')' { unit_tycon_name ($1 <^^> $2 <** [$1,$2]) }+> | '(' '->' ')' { fun_tycon_name ($1 <^^> $3 <** [$1,$2,$3]) }+> | '[' ']' { list_tycon_name ($1 <^^> $2 <** [$1,$2]) }+> | '(' commas ')' { tuple_tycon_name ($1 <^^> $3 <** ($1:reverse $2 ++ [$3])) Boxed (length $2) }+> | '(#' '#)' { unboxed_singleton_tycon_name ($1 <^^> $2 <** [$1,$2]) }+> | '(#' commas '#)' { tuple_tycon_name ($1 <^^> $3 <** ($1:reverse $2 ++ [$3])) Unboxed (length $2) }++> otycon :: { QName L }+> : qconid { $1 }+> | '(' gconsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++These are for infix types++> qtyconop :: { QName L }+> : qconop { $1 }+++(Slightly edited) Comment from GHC's hsparser.y:+"context => type" vs "type" is a problem, because you can't distinguish between++ foo :: (Baz a, Baz a)+ bar :: (Baz a, Baz a) => [a] -> [a] -> [a]++with one token of lookahead. The HACK is to parse the context as a btype+(more specifically as a tuple type), then check that it has the right form+C a, or (C1 a, C2 b, ... Cn z) and convert it into a context. Blaach!++Forall-quantified types require some extension to enable them, which+is any of the keyword-enabling ones, except ExistentialQuantification.++> truectype :: { Type L }+> : ctype {% checkType $1 }++> ctype :: { PType L }+> : 'forall' ktyvars '.' ctype { TyForall (nIS $1 <++> ann $4 <** [$1,$3]) (Just (reverse (fst $2))) Nothing $4 }+> | context ctype { TyForall ($1 <> $2) Nothing (Just $1) $2 }+> | type { $1 }++Equality constraints require the TypeFamilies extension.++> context :: { PContext L }+> : btype '=>' {% checkPContext $ (amap (\l -> l <++> nIS $2 <** (srcInfoPoints l ++ [$2]))) $1 }+> | btype '~' btype '=>' {% do { checkEnabled TypeFamilies;+> let {l = $1 <> $3 <** [$2,$4]};+> checkPContext (TyPred l $ EqualP l $1 $3) } }++> types :: { ([PType L],[S]) }+> : types1 ',' ctype { ($3 : fst $1, $2 : snd $1) }++> types1 :: { ([PType L],[S]) }+> : ctype { ([$1],[]) }+> | types1 ',' ctype { ($3 : fst $1, $2 : snd $1) }++> ktyvars :: { ([TyVarBind L],Maybe L) }+> : ktyvars ktyvar { ($2 : fst $1, Just (snd $1 <?+> ann $2)) }+> | {- empty -} { ([],Nothing) }++> ktyvar :: { TyVarBind L }+> : tyvar { UnkindedVar (ann $1) $1 }+> | '(' tyvar '::' kind ')' { KindedVar ($1 <^^> $5 <** [$1,$3,$5]) $2 $4 }++> tyvars :: { ([Name L],Maybe L) }+> : tyvars tyvar { ($2 : fst $1, Just (snd $1 <?+> ann $2)) }+> | {- empty -} { ([], Nothing) }++> tyvars1 :: { ([Name L],L) }+> : tyvars tyvar { ($2 : fst $1, snd $1 <?+> ann $2) }+++-----------------------------------------------------------------------------+Functional Dependencies++These require the FunctionalDependencies extension to be enabled.++> fds :: { ([FunDep L],[S],Maybe L) }+> : {- empty -} { ([],[], Nothing) }+> | '|' fds1 {% do { checkEnabled FunctionalDependencies ;+> let {(fds,ss,l) = $2} ;+> return (reverse fds, $1 : reverse ss, Just (nIS $1 <++> l)) } }++> fds1 :: { ([FunDep L],[S],L) }+> : fds1 ',' fd { let (fds,ss,l) = $1 in ($3 : fds, $2 : ss, l <++> ann $3) }+> | fd { ([$1],[],ann $1) }++> fd :: { FunDep L }+> : tyvars1 '->' tyvars1 { FunDep (snd $1 <++> snd $3 <** [$2]) (reverse (fst $1)) (reverse (fst $3)) }++-----------------------------------------------------------------------------+Datatype declarations++GADTs - require the GADTs extension enabled, but we handle that at the calling site.++ gadtlist :: { ([GadtDecl L],[S],L) }+ : gadtlist1 {% >> return $1 }++> gadtlist :: { ([GadtDecl L],[S],Maybe L) }+> : 'where' '{' gadtconstrs1 '}' {% checkEnabled GADTs >> return (fst $3, $1 : $2 : snd $3 ++ [$4], Just $ $1 <^^> $4) }+> | 'where' open gadtconstrs1 close {% checkEnabled GADTs >> return (fst $3, $1 : $2 : snd $3 ++ [$4], Just $ $1 <^^> $4) }+> | {- empty -} {% checkEnabled EmptyDataDecls >> return ([],[],Nothing) }++> gadtconstrs1 :: { ([GadtDecl L],[S]) }+> : optsemis gadtconstrs optsemis { (fst $2, reverse $1 ++ snd $2 ++ reverse $3) }++> gadtconstrs :: { ([GadtDecl L],[S]) }+> : gadtconstrs semis gadtconstr { ($3 : fst $1, snd $1 ++ reverse $2) }+> | gadtconstr { ([$1],[]) }++> gadtconstr :: { GadtDecl L }+> : qcon '::' truectype {% do { c <- checkUnQual $1;+> return $ GadtDecl ($1 <> $3 <** [$2]) c $3 } }++To allow the empty case we need the EmptyDataDecls extension.+> constrs0 :: { ([QualConDecl L],[S],Maybe L) }+ : {- empty -} {% checkEnabled EmptyDataDecls >> return ([],[],Nothing) }+> : '=' constrs { let (ds,ss,l) = $2 in (ds, $1 : reverse ss, Just $ nIS $1 <++> l) }++> constrs :: { ([QualConDecl L],[S],L) }+> : constrs '|' constr { let (ds,ss,l) = $1 in ($3 : ds, $2 : ss, l <++> ann $3) }+> | constr { ([$1],[],ann $1) }++> constr :: { QualConDecl L }+> : forall context constr1 {% do { checkEnabled ExistentialQuantification ;+> ctxt <- checkContext (Just $2) ;+> let {(mtvs,ss,ml) = $1} ;+> return $ QualConDecl (ml <?+> ann $3 <** ss) mtvs ctxt $3 } }+> | forall constr1 { let (mtvs, ss, ml) = $1 in QualConDecl (ml <?+> ann $2 <** ss) mtvs Nothing $2 }++> forall :: { (Maybe [TyVarBind L], [S], Maybe L) }+> : 'forall' ktyvars '.' {% checkEnabled ExistentialQuantification >> return (Just (fst $2), [$1,$3], Just $ $1 <^^> $3) }+> | {- empty -} { (Nothing, [], Nothing) }++To avoid conflicts when introducing type operators, we need to parse record constructors+as qcon and then check separately that they are truly unqualified.++> constr1 :: { ConDecl L }+> : scontype { let (n,ts,l) = $1 in ConDecl l n ts }+> | sbtype conop sbtype { InfixConDecl ($1 <> $3) $1 $2 $3 }+> | qcon '{' '}' {% do { c <- checkUnQual $1; return $ RecDecl (ann $1 <++> nIS $3 <** [$2,$3]) c [] } }+> | qcon '{' fielddecls '}' {% do { c <- checkUnQual $1;+> return $ RecDecl (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4])) c (reverse (fst $3)) } }++> scontype :: { (Name L, [BangType L], L) }+> : btype {% do { (c,ts) <- splitTyConApp $1;+> return (c,map (\t -> UnBangedTy (ann t) t) ts,ann $1) } }+> | scontype1 { $1 }++> scontype1 :: { (Name L, [BangType L],L) }+> : btype '!' trueatype {% do { (c,ts) <- splitTyConApp $1;+> return (c,map (\t -> UnBangedTy (ann t) t) ts+++> [BangedTy (nIS $2 <++> ann $3 <** [$2]) $3], $1 <> $3) } }+> | btype '{-# UNPACK' '#-}' '!' trueatype {% do { (c,ts) <- splitTyConApp $1;+> return (c,map (\t -> UnBangedTy (ann t) t) ts+++> [UnpackedTy (nIS $2 <++> ann $5 <** [$2,$3,$4]) $5], $1 <> $5) } }+> | scontype1 satype { let (n,ts,l) = $1 in (n, ts ++ [$2],l <++> ann $2) }++> satype :: { BangType L }+> : trueatype { UnBangedTy (ann $1) $1 }+> | '!' trueatype { BangedTy (nIS $1 <++> ann $2 <** [$1]) $2 }+> | '{-# UNPACK' '#-}' '!' trueatype { UnpackedTy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }++> sbtype :: { BangType L }+> : truebtype { UnBangedTy (ann $1) $1 }+> | '!' trueatype { BangedTy (nIS $1 <++> ann $2 <** [$1]) $2 }+> | '{-# UNPACK' '#-}' '!' trueatype { UnpackedTy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }++> fielddecls :: { ([FieldDecl L],[S]) }+> : fielddecls ',' fielddecl { ($3 : fst $1, $2 : snd $1) }+> | fielddecl { ([$1],[]) }++> fielddecl :: { FieldDecl L }+> : vars '::' stype { let (ns,ss,l) = $1 in FieldDecl (l <++> ann $3 <** (reverse ss ++ [$2])) (reverse ns) $3 }++> stype :: { BangType L }+> : truectype { UnBangedTy (ann $1) $1 }+> | '!' trueatype { BangedTy (nIS $1 <++> ann $2 <** [$1]) $2 }+> | '{-# UNPACK' '#-}' '!' trueatype { UnpackedTy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }++> deriving :: { Maybe (Deriving L) }+> : {- empty -} { Nothing }+> | 'deriving' qtycls1 { let l = nIS $1 <++> ann $2 <** [$1] in Just $ Deriving l [IHead (ann $2) $2 []] }+> | 'deriving' '(' ')' { Just $ Deriving ($1 <^^> $3 <** [$1,$2,$3]) [] }+> | 'deriving' '(' dclasses ')' { Just $ Deriving ($1 <^^> $4 <** $1:$2: reverse (snd $3) ++ [$4]) (reverse (fst $3)) }++> dclasses :: { ([InstHead L],[S]) }+> : types1 {% checkDeriving (fst $1) >>= \ds -> return (ds, snd $1) }++> qtycls1 :: { QName L }+> : qconid { $1 }+++-----------------------------------------------------------------------------+Kinds++> kind :: { Kind L }+> : kind1 {% checkEnabled KindSignatures >> return $1 }++> kind1 :: { Kind L }+> : akind { $1 }+> | akind '->' kind1 { KindFn ($1 <> $3 <** [$2]) $1 $3 }++> akind :: { Kind L }+> : '*' { KindStar (nIS $1) }+> | '!' { KindBang (nIS $1) }+> | '(' kind1 ')' { KindParen ($1 <^^> $3 <** [$1,$3]) $2 }++> optkind :: { (Maybe (Kind L), [S]) }+> : {-empty-} { (Nothing,[]) }+> | '::' kind { (Just $2,[$1]) }+-----------------------------------------------------------------------------+Class declarations++TODO: Lots of stuff to pass around here.++No implicit parameters in the where clause of a class declaration.+> optcbody :: { (Maybe [ClassDecl L],[S],Maybe L) }+> : 'where' '{' cldecls '}' {% checkClassBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }+> | 'where' open cldecls close {% checkClassBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }+> | {- empty -} { (Nothing,[],Nothing) }++> cldecls :: { ([ClassDecl L],[S]) }+> : optsemis cldecls1 optsemis {% checkRevClsDecls (fst $2) >>= \cs -> return (cs, reverse $1 ++ snd $2 ++ reverse $3) }+> | optsemis { ([],reverse $1) }++> cldecls1 :: { ([ClassDecl L],[S]) }+> : cldecls1 semis cldecl { ($3 : fst $1, snd $1 ++ reverse $2) }+> | cldecl { ([$1],[]) }++Associated types require the TypeFamilies extension.++> cldecl :: { ClassDecl L }+> : decl { ClsDecl (ann $1) $1 }+> | atdecl {% checkEnabled TypeFamilies >> return $1 }++> atdecl :: { ClassDecl L }+> : 'type' type optkind+> {% do { dh <- checkSimpleType $2;+> return (ClsTyFam (nIS $1 <++> ann $2 <+?> (fmap ann) (fst $3) <** $1:snd $3) dh (fst $3)) } }+> | 'type' truedtype '=' truectype+> { ClsTyDef (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }+> | 'data' ctype optkind+> {% do { (cs,dh) <- checkDataHeader $2;+> return (ClsDataFam (nIS $1 <++> ann $2 <+?> (fmap ann) (fst $3) <** $1:snd $3) cs dh (fst $3)) } }++-----------------------------------------------------------------------------+Instance declarations++> optvaldefs :: { (Maybe [InstDecl L],[S],Maybe L) }+> : 'where' '{' valdefs '}' {% checkInstBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }+> | 'where' open valdefs close {% checkInstBody (fst $3) >>= \vs -> return (Just vs, $1:$2: snd $3 ++ [$4], Just ($1 <^^> $4)) }+> | {- empty -} { (Nothing, [], Nothing) }++> valdefs :: { ([InstDecl L],[S]) }+> : optsemis valdefs1 optsemis {% checkRevInstDecls (fst $2) >>= \is -> return (is, reverse $1 ++ snd $2 ++ reverse $3) }+> | optsemis { ([],reverse $1) }++> valdefs1 :: { ([InstDecl L],[S]) }+> : valdefs1 semis insvaldef { ($3 : fst $1, snd $1 ++ reverse $2) }+> | insvaldef { ([$1],[]) }++Associated types require the TypeFamilies extension enabled.++> insvaldef :: { InstDecl L }+> : valdef { InsDecl (ann $1) $1 }+> | atinst {% checkEnabled TypeFamilies >> return $1 }+> | inlinst { $1 }++> inlinst :: { InstDecl L }+> : '{-# INLINE' activation qvar '#-}' { let Loc l (INLINE s) = $1 in InsInline (l <^^> $4 <** [l,$4]) s $2 $3 }++> atinst :: { InstDecl L }+> : 'type' truedtype '=' truectype+> {% do { -- no checkSimpleType $4 since dtype may contain type patterns+> return (InsType (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4) } }+> | data_or_newtype truectype constrs0 deriving+> {% do { -- (cs,c,t) <- checkDataHeader $4;+> let {(ds,ss,minf) = $3};+> checkDataOrNew $1 ds;+> return (InsData ($1 <> $2 <+?> minf <+?> fmap ann $4 <** ss ) $1 $2 (reverse ds) $4) } }+> | data_or_newtype truectype optkind gadtlist deriving+> {% do { -- (cs,c,t) <- checkDataHeader $4;+> let { (gs,ss,minf) = $4 } ;+> checkDataOrNew $1 gs;+> return $ InsGData (ann $1 <+?> minf <+?> fmap ann $5 <** (snd $3 ++ ss)) $1 $2 (fst $3) (reverse gs) $5 } }++-----------------------------------------------------------------------------+Value definitions++> valdef :: { Decl L }+> : exp0b optsig rhs optwhere {% checkValDef (($1 <> $3 <+?> (fmap ann) (fst $4)) <** (snd $2 ++ snd $4)) $1 (fst $2) $3 (fst $4) }+> | '!' aexp rhs optwhere {% do { checkEnabled BangPatterns ;+> let { l = nIS $1 <++> ann $2 <** [$1] };+> p <- checkPattern (BangPat l $2);+> return $ PatBind (p <> $3 <+?> (fmap ann) (fst $4) <** snd $4)+> p Nothing $3 (fst $4) } }++May bind implicit parameters+> optwhere :: { (Maybe (Binds L),[S]) }+> : 'where' binds { (Just $2, [$1]) }+> | {- empty -} { (Nothing, []) }++Type signatures on value definitions require ScopedTypeVariables (or PatternSignatures, which is deprecated).++> optsig :: { (Maybe (Type L),[S]) }+> : '::' truectype {% checkEnabled ScopedTypeVariables >> return (Just $2, [$1]) }+> | {- empty -} { (Nothing,[]) }++> rhs :: { Rhs L }+> : '=' trueexp { UnGuardedRhs (nIS $1 <++> ann $2 <** [$1]) $2 }+> | gdrhs { GuardedRhss (snd $1) (reverse $ fst $1) }++> gdrhs :: { ([GuardedRhs L],L) }+> : gdrhs gdrh { ($2 : fst $1, snd $1 <++> ann $2) }+> | gdrh { ([$1],ann $1) }++Guards may contain patterns if PatternGuards is enabled, hence quals instead of exp.+> gdrh :: { GuardedRhs L }+> : '|' quals '=' trueexp {% do { checkPatternGuards (fst $2);+> return $ GuardedRhs (nIS $1 <++> ann $4 <** ($1:snd $2 ++ [$3])) (reverse (fst $2)) $4 } }++-----------------------------------------------------------------------------+Expressions++Note: The Report specifies a meta-rule for lambda, let and if expressions+(the exp's that end with a subordinate exp): they extend as far to+the right as possible. That means they cannot be followed by a type+signature or infix application. To implement this without shift/reduce+conflicts, we split exp10 into these expressions (exp10a) and the others+(exp10b). That also means that only an exp0 ending in an exp10b (an exp0b)+can followed by a type signature or infix application. So we duplicate+the exp0 productions to distinguish these from the others (exp0a).++Ugly: We need non-parenthesized post-operators for HaRP, and to parse both+these and normal left sections, we parse both as PostOp and let the post pass+mangle them into the correct form depending on context.++> trueexp :: { Exp L }+> : exp {% checkExpr $1 }++> exp :: { PExp L }+> : exp0b '::' truectype { ExpTypeSig ($1 <> $3 <** [$2]) $1 $3 }+> | exp0 { $1 }+> | exp0b qop { PostOp ($1 <> $2) $1 $2 }+> | exp0b '-<' exp { LeftArrApp ($1 <> $3 <** [$2]) $1 $3 }+> | exp0b '>-' exp { RightArrApp ($1 <> $3 <** [$2]) $1 $3 }+> | exp0b '-<<' exp { LeftArrHighApp ($1 <> $3 <** [$2]) $1 $3 }+> | exp0b '>>-' exp { RightArrHighApp ($1 <> $3 <** [$2]) $1 $3 }++> exp0 :: { PExp L }+> : exp0a { $1 }+> | exp0b { $1 }++> exp0a :: { PExp L }+> : exp0b qop exp10a { InfixApp ($1 <> $3) $1 $2 $3 }+> | exp10a { $1 }++> exp0b :: { PExp L }+> : exp0b qop exp10b { InfixApp ($1 <> $3) $1 $2 $3 }+> | exp10b { $1 }++> exp10a :: { PExp L }+> : '\\' apats '->' exp { Lambda (nIS $1 <++> ann $4 <** [$1,$3]) (reverse $2) $4 }+A let may bind implicit parameters+> | 'let' binds 'in' exp { Let (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }+> | 'if' exp 'then' exp 'else' exp { If (nIS $1 <++> ann $6 <** [$1,$3,$5]) $2 $4 $6 }+> | 'proc' apat '->' exp { Proc (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }+> | exppragma { $1 }++mdo blocks require the RecursiveDo extension enabled, but the lexer handles that.++> exp10b :: { PExp L }+> : 'case' exp 'of' altslist { let (als, inf, ss) = $4 in Case (nIS $1 <++> inf <** ($1:$3:ss)) $2 als }+> | '-' fexp { NegApp (nIS $1 <++> ann $2 <** [$1]) $2 }+> | 'do' stmtlist { let (sts, inf, ss) = $2 in Do (nIS $1 <++> inf <** $1:ss) sts }+> | 'mdo' stmtlist { let (sts, inf, ss) = $2 in MDo (nIS $1 <++> inf <** $1:ss) sts }+> | fexp { $1 }++> exppragma :: { PExp L }+> : '{-# CORE' STRING '#-}' exp { let Loc l (StringTok (s,_)) = $2 in CorePragma (nIS $1 <++> ann $4 <** [l,$3]) s $4 }+> | '{-# SCC' STRING '#-}' exp { let Loc l (StringTok (s,_)) = $2 in SCCPragma (nIS $1 <++> ann $4 <** [l,$3]) s $4 }+> | '{-# GENERATED' STRING INT ':' INT '-' INT ':' INT '#-}' exp+> { let { Loc l0 (StringTok (s,_)) = $2;+> Loc l1 (IntTok (i1,_)) = $3;+> Loc l2 (IntTok (i2,_)) = $5;+> Loc l3 (IntTok (i3,_)) = $7;+> Loc l4 (IntTok (i4,_)) = $9}+> in GenPragma (nIS $1 <++> ann $11 <** [$1,l0,l1,$4,l2,$6,l3,$8,l4,$10])+> s (fromInteger i1, fromInteger i2)+> (fromInteger i3, fromInteger i4) $11 }++> fexp :: { PExp L }+> : fexp aexp { App ($1 <> $2) $1 $2 }+> | aexp { $1 }++> apats :: { [Pat L] }+> : apats apat { $2 : $1 }+> | apat { [$1] }++> apat :: { Pat L }+> : aexp {% checkPattern $1 }+> | '!' aexp {% checkPattern (BangPat (nIS $1 <++> ann $2 <** [$1]) $2) }++UGLY: Because patterns and expressions are mixed, aexp has to be split into+two rules: One right-recursive and one left-recursive. Otherwise we get two+reduce/reduce-errors (for as-patterns and irrefutable patters).++Even though the variable in an as-pattern cannot be qualified, we use+qvar here to avoid a shift/reduce conflict, and then check it ourselves+(as for vars above).++Non-linear name binding, @:, requires RegularPatterns, but the lexer handles that.++> aexp :: { PExp L }+> : qvar '@' aexp {% do { n <- checkUnQual $1;+> return (AsPat ($1 <> $3 <** [$2]) n $3) } }+> | qvar '@:' aexp {% do { n <- checkUnQual $1;+> return (CAsRP ($1 <> $3 <** [$2]) n $3) } }+> | '~' aexp { IrrPat (nIS $1 <++> ann $2 <** [$1]) $2 }+> | aexp1 { $1 }++Note: The first two alternatives of aexp1 are not necessarily record+updates: they could be labeled constructions.+Generics-style explicit type arguments need the Generics extension, but+we check that in the lexer.++> aexp1 :: { PExp L }+> : aexp1 '{' '}' {% liftM (amap (const (ann $1 <++> nIS $3 <** [$2,$3]))) $ mkRecConstrOrUpdate $1 [] }+> | aexp1 '{' fbinds '}' {% liftM (amap (const (ann $1 <++> nIS $4 <** ($2:reverse (snd $3) ++ [$4]))))+> $ mkRecConstrOrUpdate $1 (reverse (fst $3)) }+> | qvar '{|' truetype '|}' { ExplTypeArg (ann $1 <++> nIS $4 <** [$2,$4]) $1 $3 }+> | aexp2 { $1 }++According to the Report, the left section (e op) is legal iff (e op x)+parses equivalently to ((e) op x). Thus e must be an exp0b.+An implicit parameter can be used as an expression, enabled by the lexer.+Extensions using banana brackets are also enabled by the lexer. The only+thing we need to look at here is the erpats that use no non-standard lexemes.++> aexp2 :: { PExp L }+> : ivar { IPVar (ann $1) $1 }+> | qvar { Var (ann $1) $1 }+> | gcon { $1 }+> | literal { Lit (ann $1) $1 }+> | '(' texp ')' { Paren ($1 <^^> $3 <** [$1,$3]) $2 }+> | '(' texp tsectend { TupleSection ($1 <^^> head (snd $3) <** $1:reverse (snd $3)) (Just $2 : fst $3) }+> | '(' commas texp ')' { TupleSection ($1 <^^> $4 <** $1:reverse ($4:$2))+> (replicate (length $2 - 1) Nothing ++ [Just $3]) }+> | '(' commas texp tsectend { TupleSection ($1 <^^> head (snd $4) <** $1:reverse (snd $4 ++ $2))+> (replicate (length $2 - 1) Nothing ++ Just $3 : fst $4) }+> | '[' list ']' { amap (\l -> l <** [$3]) $ $2 ($1 <^^> $3 <** [$1]) }+> | '_' { WildCard (nIS $1) }+> | '(' erpats ')' {% checkEnabled RegularPatterns >> return (Paren ($1 <^^> $3 <** [$1,$3]) $2) }+> | '(|' sexps '|)' { SeqRP ($1 <^^> $3 <** ($1:reverse (snd $2) ++ [$3])) $ reverse (fst $2) }+> | '(|' exp '|' quals '|)' { GuardRP ($1 <^^> $5 <** ($1:$3 : snd $4 ++ [$5])) $2 $ (reverse $ fst $4) }+> | xml { $1 }++Template Haskell - all this is enabled in the lexer.+> | IDSPLICE { let Loc l (THIdEscape s) = $1 in SpliceExp (nIS l) $ IdSplice (nIS l) s }+> | '$(' trueexp ')' { SpliceExp ($1 <^^> $3 <** [$1,$3]) $ ParenSplice (ann $2) $2 }+> | '[|' trueexp '|]' { BracketExp ($1 <^^> $3 <** [$1,$3]) $ ExpBracket (ann $2) $2 }+> | '[p|' exp0 '|]' {% do { p <- checkPattern $2;+> return $ BracketExp ($1 <^^> $3 <** [$1,$3]) $ PatBracket (ann p) p } }+> | '[t|' truectype '|]' { let l = $1 <^^> $3 <** [$1,$3] in BracketExp l $ TypeBracket l $2 }+> | '[d|' open topdecls close '|]' { let l = $1 <^^> $5 <** ($1:snd $3 ++ [$5]) in BracketExp l $ DeclBracket l (fst $3) }+> | VARQUOTE qvar { VarQuote (nIS $1 <++> ann $2 <** [$1]) $2 }+> | VARQUOTE qcon { VarQuote (nIS $1 <++> ann $2 <** [$1]) $2 }+> | TYPQUOTE tyvar { TypQuote (nIS $1 <++> ann $2 <** [$1]) (UnQual (ann $2) $2) }+> | TYPQUOTE gtycon { TypQuote (nIS $1 <++> ann $2 <** [$1]) $2 }+> | QUASIQUOTE { let Loc l (THQuasiQuote (n,q)) = $1 in QuasiQuote (nIS l) n q }+End Template Haskell++> commas :: { [S] }+> : commas ',' { $2 : $1 }+> | ',' { [$1] }++> texp :: { PExp L }+> : exp { $1 }+> | qopm exp0 { PreOp ($1 <> $2) $1 $2 }+> | exp '->' exp {% do {checkEnabled ViewPatterns;+> return $ ViewPat ($1 <> $3 <** [$2]) $1 $3} }++> tsectend :: { ([Maybe (PExp L)],[S]) }+> : commas texp tsectend { let (mes, ss) = $3 in (replicate (length $1 - 1) Nothing ++ Just $2 : mes, ss ++ $1) }+> | commas texp ')' { (replicate (length $1 - 1) Nothing ++ [Just $2], $3 : $1) }+> | commas ')' { (replicate (length $1) Nothing, $2 : $1) }++-----------------------------------------------------------------------------+Harp Extensions++> sexps :: { ([PExp L],[S]) }+> : sexps ',' exp { ($3 : fst $1, $2 : snd $1) }+> | exp { ([$1],[]) }++Either patterns are left associative+> erpats :: { PExp L }+> : exp '|' erpats { EitherRP ($1 <> $3 <** [$2]) $1 $3 }+> | exp '|' exp { EitherRP ($1 <> $3 <** [$2]) $1 $3 }++-----------------------------------------------------------------------------+Hsx Extensions - requires XmlSyntax, but the lexer handles all that.++> xml :: { PExp L }+> : '<' name attrs mattr '>' children '</' name '>' {% do { n <- checkEqNames $2 $8;+> let { cn = reverse $6;+> as = reverse $3;+> l = $1 <^^> $9 <** [$1,$5,$7,srcInfoSpan (ann $8),$9] };+> return $ XTag l n as $4 cn } }+> | '<' name attrs mattr '/>' { XETag ($1 <^^> $5 <** [$1,$5]) $2 (reverse $3) $4 }+> | '<%' exp '%>' { XExpTag ($1 <^^> $3 <** [$1,$3]) $2 }++> children :: { [PExp L] }+> : children child { $2 : $1 }+> | {- empty -} { [] }++> child :: { PExp L }+> : PCDATA { let Loc l (XPCDATA pcd) = $1 in XPcdata (nIS l) pcd }+> | '<[' sexps ']>' { XRPats ($1 <^^> $3 <** (snd $2 ++ [$1,$3])) $ reverse (fst $2) }+> | xml { $1 }++> name :: { XName L }+> : xmlname ':' xmlname { let {Loc l1 s1 = $1; Loc l2 s2 = $3}+> in XDomName (nIS l1 <++> nIS l2 <** [l1,$2,l2]) s1 s2 }+> | xmlname { let Loc l str = $1 in XName (nIS l) str }++> xmlname :: { Loc String }+> : VARID { let Loc l (VarId s) = $1 in Loc l s }+> | CONID { let Loc l (ConId s) = $1 in Loc l s }+> | DVARID { let Loc l (DVarId s) = $1 in Loc l $ mkDVar s }+> | xmlkeyword { $1 }++> xmlkeyword :: { Loc String }+> : 'type' { Loc $1 "type" }+> | 'class' { Loc $1 "class" }+> | 'data' { Loc $1 "data" }+> | 'foreign' { Loc $1 "foreign" }+> | 'export' { Loc $1 "export" }+> | 'safe' { Loc $1 "safe" }+> | 'unsafe' { Loc $1 "unsafe" }+> | 'threadsafe' { Loc $1 "threadsafe" }+> | 'stdcall' { Loc $1 "stdcall" }+> | 'ccall' { Loc $1 "ccall" }+> | 'as' { Loc $1 "as" }+> | 'by' { Loc $1 "by" }+> | 'case' { Loc $1 "case" }+> | 'default' { Loc $1 "default" }+> | 'deriving' { Loc $1 "deriving" }+> | 'do' { Loc $1 "do" }+> | 'else' { Loc $1 "else" }+> | 'family' { Loc $1 "family" }+> | 'forall' { Loc $1 "forall" }+> | 'group' { Loc $1 "group" }+> | 'hiding' { Loc $1 "hiding" }+> | 'if' { Loc $1 "if" }+> | 'import' { Loc $1 "import" }+> | 'in' { Loc $1 "in" }+> | 'infix' { Loc $1 "infix" }+> | 'infixl' { Loc $1 "infixl" }+> | 'infixr' { Loc $1 "infixr" }+> | 'instance' { Loc $1 "instance" }+> | 'let' { Loc $1 "let" }+> | 'mdo' { Loc $1 "mdo" }+> | 'module' { Loc $1 "module" }+> | 'newtype' { Loc $1 "newtype" }+> | 'of' { Loc $1 "of" }+> | 'proc' { Loc $1 "proc" }+> | 'rec' { Loc $1 "rec" }+> | 'then' { Loc $1 "then" }+> | 'using' { Loc $1 "using" }+> | 'where' { Loc $1 "where" }+> | 'qualified' { Loc $1 "qualified" }+++> attrs :: { [ParseXAttr L] }+> : attrs attr { $2 : $1 }+> | {- empty -} { [] }++> attr :: { ParseXAttr L }+> : name '=' aexp { XAttr ($1 <> $3 <** [$2]) $1 $3 }++> mattr :: { Maybe (PExp L) }++> : aexp { Just $1 }+> | {-empty-} { Nothing }++-----------------------------------------------------------------------------+List expressions++The rules below are little bit contorted to keep lexps left-recursive while+avoiding another shift/reduce-conflict.++> list :: { L -> PExp L }+> : texp { \l -> List l [$1] }+> | lexps { \l -> let (ps,ss) = $1 in List (l <** reverse ss) (reverse ps) }+> | texp '..' { \l -> EnumFrom (l <** [$2]) $1 }+> | texp ',' exp '..' { \l -> EnumFromThen (l <** [$2,$4]) $1 $3 }+> | texp '..' exp { \l -> EnumFromTo (l <** [$2]) $1 $3 }+> | texp ',' exp '..' exp { \l -> EnumFromThenTo (l <** [$2,$4]) $1 $3 $5 }+> | texp '|' pqualstmts { \l -> let (stss, ss) = $3 in ParComp (l <** ($2:ss)) $1 (reverse stss) }++> lexps :: { ([PExp L],[S]) }+> : lexps ',' texp { let (es, ss) = $1 in ($3 : es, $2 : ss) }+> | texp ',' texp { ([$3,$1], [$2]) }++-----------------------------------------------------------------------------+List comprehensions++> pqualstmts :: { ([[QualStmt L]],[S]) }+> : pqualstmts '|' qualstmts { let { (stss, ss1) = $1;+> (sts, ss2) = $3 }+> in (reverse sts : stss, ss1 ++ [$2] ++ reverse ss2) }+> | qualstmts { let (sts, ss) = $1 in ([reverse sts], reverse ss) }++> qualstmts :: { ([QualStmt L],[S]) }+> : qualstmts ',' qualstmt { let (sts, ss) = $1 in ($3 : sts, $2 : ss) }+> | qualstmt { ([$1],[]) }++> qualstmt :: { QualStmt L }+> : transformqual { $1 }+> | qual { QualStmt (ann $1) $1 }++> transformqual :: { QualStmt L }+> : 'then' trueexp { ThenTrans (nIS $1 <++> ann $2 <** [$1]) $2 }+> | 'then' trueexp 'by' trueexp { ThenBy (nIS $1 <++> ann $4 <** [$1,$3]) $2 $4 }+> | 'then' 'group' 'by' trueexp { GroupBy (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }+> | 'then' 'group' 'using' trueexp { GroupUsing (nIS $1 <++> ann $4 <** [$1,$2,$3]) $4 }+> | 'then' 'group' 'by' trueexp 'using' trueexp { GroupByUsing (nIS $1 <++> ann $6 <** [$1,$2,$3,$5]) $4 $6 }++> quals :: { ([Stmt L],[S]) }+> : quals ',' qual { let (sts, ss) = $1 in ($3 : sts, $2 : ss) }+> | qual { ([$1],[]) }++> qual :: { Stmt L }+> : pat '<-' trueexp { Generator ($1 <> $3 <** [$2]) $1 $3 }+> | trueexp { Qualifier (ann $1) $1 }+> | 'let' binds { LetStmt (nIS $1 <++> ann $2 <** [$1]) $2 }+++-----------------------------------------------------------------------------+Case alternatives++> altslist :: { ([Alt L],L,[S]) }+> : '{' alts '}' { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }+> | open alts close { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }++> alts :: { ([Alt L],[S]) }+> : optsemis alts1 optsemis { (reverse $ fst $2, $1 ++ snd $2 ++ $3) }++> alts1 :: { ([Alt L],[S]) }+> : alts1 semis alt { ($3 : fst $1, snd $1 ++ $2) }+> | alt { ([$1],[]) }++> alt :: { Alt L }+> : pat ralt optwhere { Alt ($1 <> $2 <+?> (fmap ann) (fst $3) <** snd $3) $1 $2 (fst $3) }++> ralt :: { GuardedAlts L }+> : '->' trueexp { UnGuardedAlt (nIS $1 <++> ann $2 <** [$1]) $2 }+> | gdpats { GuardedAlts (snd $1) (reverse $ fst $1) }++> gdpats :: { ([GuardedAlt L],L) }+> : gdpats gdpat { ($2 : fst $1, snd $1 <++> ann $2) }+> | gdpat { ([$1], ann $1) }++A guard can be a pattern guard if PatternGuards is enabled, hence quals instead of exp0.+> gdpat :: { GuardedAlt L }+> : '|' quals '->' trueexp {% do { checkPatternGuards (fst $2);+> let {l = nIS $1 <++> ann $4 <** ($1:snd $2 ++ [$3])};+> return (GuardedAlt l (reverse (fst $2)) $4) } }++> pat :: { Pat L }+> : exp {% checkPattern $1 }+> | '!' aexp {% checkPattern (BangPat (nIS $1 <++> ann $2 <** [$1]) $2) }+-----------------------------------------------------------------------------+Statement sequences++As per the Report, but with stmt expanded to simplify building the list+without introducing conflicts. This also ensures that the last stmt is+an expression.++TODO: The points can't be added here, must be propagated!++> stmtlist :: { ([Stmt L],L,[S]) }+> : '{' stmts '}' { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }+> | open stmts close { (fst $2, $1 <^^> $3, $1:snd $2 ++ [$3]) }++> stmts :: { ([Stmt L],[S]) }+> : stmt stmts1 { ($1 : fst $2, snd $2) }+> | ';' stmts { (fst $2, $1 : snd $2) }+> | {- empty -} { ([],[]) }++> stmts1 :: { ([Stmt L],[S]) }+> : ';' stmts { (fst $2, $1 : snd $2) }+> | {- empty -} { ([],[]) }++A let statement may bind implicit parameters.+> stmt :: { Stmt L }+> : 'let' binds { LetStmt (nIS $1 <++> ann $2 <** [$1]) $2 }+> | pat '<-' trueexp { Generator ($1 <> $3 <** [$2]) $1 $3 }+> | trueexp { Qualifier (ann $1) $1 }+> | 'rec' stmtlist { let (stms,inf,ss) = $2 in RecStmt (nIS $1 <++> inf <** $1:ss) stms }++-----------------------------------------------------------------------------+Record Field Update/Construction++> fbinds :: { ([PFieldUpdate L],[S]) }+> : fbinds ',' fbind { let (fbs, ss) = $1 in ($3 : fbs, $2 : ss) }+> | fbind { ([$1],[]) }++Puns and wild cards need the respective extensions enabled.++> fbind :: { PFieldUpdate L }+> : qvar '=' exp { FieldUpdate ($1 <>$3 <** [$2]) $1 $3 }+> | qvar {% checkEnabled NamedFieldPuns >> checkUnQual $1 >>= return . FieldPun (ann $1) }+> | '..' {% checkEnabled RecordWildCards >> return (FieldWildcard (nIS $1)) }++-----------------------------------------------------------------------------+Implicit parameter bindings - need the ImplicitParameter extension enabled, but the lexer handles that.++> ipbinds :: { ([IPBind L],[S]) }+> : optsemis ipbinds1 optsemis { (reverse (fst $2), reverse $1 ++ snd $2 ++ reverse $3) }++> ipbinds1 :: { ([IPBind L],[S]) }+> : ipbinds1 semis ipbind { ($3 : fst $1, snd $1 ++ reverse $2) }+> | ipbind { ([$1],[]) }++> ipbind :: { IPBind L }+> : ivar '=' trueexp { IPBind ($1 <> $3 <** [$2]) $1 $3 }++-----------------------------------------------------------------------------+Variables, Constructors and Operators.++> gcon :: { PExp L }+> : '(' ')' { p_unit_con ($1 <^^> $2 <** [$1,$2]) }+> | '[' ']' { List ($1 <^^> $2 <** [$1,$2]) [] }+> | '(' commas ')' { p_tuple_con ($1 <^^> $3 <** $1:reverse ($3:$2)) Boxed (length $2) }+> | '(#' '#)' { p_unboxed_singleton_con ($1 <^^> $2 <** [$1,$2]) }+> | '(#' commas '#)' { p_tuple_con ($1 <^^> $3 <** $1:reverse ($3:$2)) Unboxed (length $2) }+> | qcon { Con (ann $1) $1 }++> var :: { Name L }+> : varid { $1 }+> | '(' varsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> var_no_safety :: { Name L }+> : varid_no_safety { $1 }+> | '(' varsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> qvar :: { QName L }+> : qvarid { $1 }+> | '(' qvarsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++Implicit parameter+> ivar :: { IPName L }+> : ivarid { $1 }++> con :: { Name L }+> : conid { $1 }+> | '(' consym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> qcon :: { QName L }+> : qconid { $1 }+> | '(' gconsym ')' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> varop :: { Name L }+> : varsym { $1 }+> | '`' varid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> qvarop :: { QName L }+> : qvarsym { $1 }+> | '`' qvarid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> qvaropm :: { QName L }+> : qvarsymm { $1 }+> | '`' qvarid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> conop :: { Name L }+> : consym { $1 }+> | '`' conid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> qconop :: { QName L }+> : gconsym { $1 }+> | '`' qconid '`' { fmap (const ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3])) $2 }++> op :: { Op L }+> : varop { VarOp (ann $1) $1 }+> | conop { ConOp (ann $1) $1 }++> qop :: { QOp L }+> : qvarop { QVarOp (ann $1) $1 }+> | qconop { QConOp (ann $1) $1 }++> qopm :: { QOp L }+> : qvaropm { QVarOp (ann $1) $1 }+> | qconop { QConOp (ann $1) $1 }++> gconsym :: { QName L }+> : ':' { list_cons_name (nIS $1) }+> | qconsym { $1 }++-----------------------------------------------------------------------------+Identifiers and Symbols++> qvarid :: { QName L }+> : varid { UnQual (ann $1) $1 }+> | QVARID { let {Loc l (QVarId q) = $1; nis = nIS l}+> in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) }++> varid_no_safety :: { Name L }+> : VARID { let Loc l (VarId v) = $1 in Ident (nIS l) v }+> | 'as' { as_name (nIS $1) }+> | 'qualified' { qualified_name (nIS $1) }+> | 'hiding' { hiding_name (nIS $1) }+> | 'export' { export_name (nIS $1) }+> | 'stdcall' { stdcall_name (nIS $1) }+> | 'ccall' { ccall_name (nIS $1) }++> varid :: { Name L }+> : varid_no_safety { $1 }+> | 'safe' { safe_name (nIS $1) }+> | 'unsafe' { unsafe_name (nIS $1) }+> | 'threadsafe' { threadsafe_name (nIS $1) }+++Implicit parameter+> ivarid :: { IPName L }+> : IDUPID { let Loc l (IDupVarId i) = $1 in IPDup (nIS l) i }+> | ILINID { let Loc l (ILinVarId i) = $1 in IPLin (nIS l) i }++> qconid :: { QName L }+> : conid { UnQual (ann $1) $1 }+> | QCONID { let {Loc l (QConId q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Ident nis (snd q)) }++> conid :: { Name L }+> : CONID { let Loc l (ConId c) = $1 in Ident (nIS l) c }++> qconsym :: { QName L }+> : consym { UnQual (ann $1) $1 }+> | QCONSYM { let {Loc l (QConSym q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) }++> consym :: { Name L }+> : CONSYM { let Loc l (ConSym c) = $1 in Symbol (nIS l) c }++> qvarsym :: { QName L }+> : varsym { UnQual (ann $1) $1 }+> | qvarsym1 { $1 }++> qvarsymm :: { QName L }+> : varsymm { UnQual (ann $1) $1 }+> | qvarsym1 { $1 }++> varsym :: { Name L }+> : VARSYM { let Loc l (VarSym v) = $1 in Symbol (nIS l) v }+> | '-' { minus_name (nIS $1) }+> | '!' { bang_name (nIS $1) }+> | '.' { dot_name (nIS $1) }+> | '*' { star_name (nIS $1) }++> varsymm :: { Name L } -- varsym not including '-'+> : VARSYM { let Loc l (VarSym v) = $1 in Symbol (nIS l) v }+> | '!' { bang_name (nIS $1) }+> | '.' { dot_name (nIS $1) }+> | '*' { star_name (nIS $1) }++> qvarsym1 :: { QName L }+> : QVARSYM { let {Loc l (QVarSym q) = $1; nis = nIS l} in Qual nis (ModuleName nis (fst q)) (Symbol nis (snd q)) }++> literal :: { Literal L }+> : INT { let Loc l (IntTok (i,raw)) = $1 in Int (nIS l) i raw }+> | CHAR { let Loc l (Character (c,raw)) = $1 in Char (nIS l) c raw }+> | RATIONAL { let Loc l (FloatTok (r,raw)) = $1 in Frac (nIS l) r raw }+> | STRING { let Loc l (StringTok (s,raw)) = $1 in String (nIS l) s raw }+> | PRIMINT { let Loc l (IntTokHash (i,raw)) = $1 in PrimInt (nIS l) i raw }+> | PRIMWORD { let Loc l (WordTokHash (w,raw)) = $1 in PrimWord (nIS l) w raw }+> | PRIMFLOAT { let Loc l (FloatTokHash (f,raw)) = $1 in PrimFloat (nIS l) f raw }+> | PRIMDOUBLE { let Loc l (DoubleTokHash (d,raw)) = $1 in PrimDouble (nIS l) d raw }+> | PRIMCHAR { let Loc l (CharacterHash (c,raw)) = $1 in PrimChar (nIS l) c raw }+> | PRIMSTRING { let Loc l (StringHash (s,raw)) = $1 in PrimString (nIS l) s raw }++-----------------------------------------------------------------------------+Layout++> open :: { S } : {% pushCurrentContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x) (return x) -} }++> close :: { S }+> : vccurly { $1 {- >>= \x -> trace (show x ++ show x ++ show x) (return x) -} } -- context popped in lexer.+> | error {% popContext >> getSrcLoc >>= \s -> return $ mkSrcSpan s s {- >>= \x -> trace (show x ++ show x) (return x) -} }++-----------------------------------------------------------------------------+Miscellaneous (mostly renamings)++> modid :: { ModuleName L }+> : CONID { let Loc l (ConId n) = $1 in ModuleName (nIS l) n }+> | QCONID { let Loc l (QConId n) = $1 in ModuleName (nIS l) (fst n ++ '.':snd n) }++> tyconorcls :: { Name L }+> : con { $1 }++> qtyconorcls :: { QName L }+> : qcon { $1 }++> tyvar :: { Name L }+> : varid { $1 }++> qtyvarop :: { QName L }+> qtyvarop : '`' tyvar '`' { UnQual ($1 <^^> $3 <** [$1, srcInfoSpan (ann $2), $3]) $2 }+> | tyvarsym { UnQual (ann $1) $1 }++> tyvarsym :: { Name L }+> tyvarsym : VARSYM { let Loc l (VarSym x) = $1 in Symbol (nIS l) x }++-----------------------------------------------------------------------------++> {++> type L = SrcSpanInfo -- just for convenience+> type S = SrcSpan++> parseError :: Loc Token -> P a+> parseError t = fail $ "Parse error: " ++ show t++> (<>) :: (Annotated a, Annotated b) => a SrcSpanInfo -> b SrcSpanInfo -> SrcSpanInfo+> a <> b = ann a <++> ann b+>+> infixl 6 <>++> nIS = noInfoSpan+> iS = infoSpan+++> -- | Parse of a string, which should contain a complete Haskell module.+> parseModule :: String -> ParseResult (Module L)+> parseModule = simpleParse mparseModule++> -- | Parse of a string containing a complete Haskell module, using an explicit mode.+> parseModuleWithMode :: ParseMode -> String -> ParseResult (Module L)+> parseModuleWithMode = modeParse mparseModule++> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.+> parseModuleWithComments :: ParseMode -> String -> ParseResult (Module L, [Comment])+> parseModuleWithComments = commentParse mparseModule++> -- | Parse of a string containing a Haskell expression.+> parseExp :: String -> ParseResult (Exp L)+> parseExp = simpleParse mparseExp++> -- | Parse of a string containing a Haskell expression, using an explicit mode.+> parseExpWithMode :: ParseMode -> String -> ParseResult (Exp L)+> parseExpWithMode = modeParse mparseExp++> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.+> parseExpWithComments :: ParseMode -> String -> ParseResult (Exp L, [Comment])+> parseExpWithComments = commentParse mparseExp++> -- | Parse of a string containing a Haskell pattern.+> parsePat :: String -> ParseResult (Pat L)+> parsePat = simpleParse mparsePat++> -- | Parse of a string containing a Haskell pattern, using an explicit mode.+> parsePatWithMode :: ParseMode -> String -> ParseResult (Pat L)+> parsePatWithMode = modeParse mparsePat++> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.+> parsePatWithComments :: ParseMode -> String -> ParseResult (Pat L, [Comment])+> parsePatWithComments = commentParse mparsePat++> -- | Parse of a string containing a Haskell top-level declaration.+> parseDecl :: String -> ParseResult (Decl L)+> parseDecl = simpleParse mparseDecl++> -- | Parse of a string containing a Haskell top-level declaration, using an explicit mode.+> parseDeclWithMode :: ParseMode -> String -> ParseResult (Decl L)+> parseDeclWithMode = modeParse mparseDecl++> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.+> parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl L, [Comment])+> parseDeclWithComments = commentParse mparseDecl++> -- | Parse of a string containing a Haskell type.+> parseType :: String -> ParseResult (Type L)+> parseType = runParser mparseType++> -- | Parse of a string containing a Haskell type, using an explicit mode.+> parseTypeWithMode :: ParseMode -> String -> ParseResult (Type L)+> parseTypeWithMode mode = runParserWithMode mode mparseType++> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.+> parseTypeWithComments :: ParseMode -> String -> ParseResult (Type L, [Comment])+> parseTypeWithComments mode str = runParserWithModeComments mode mparseType str+++> simpleParse :: AppFixity a => P (a L) -> String -> ParseResult (a L)+> simpleParse p = fmap (applyFixities preludeFixities) . runParser p++> modeParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L)+> modeParse p mode = fmap (applyFixities (fixities mode)) . runParserWithMode mode p++> commentParse :: AppFixity a => P (a L) -> ParseMode -> String -> ParseResult (a L, [Comment])+> commentParse p mode str = runParserWithModeComments mode p str+> >>= \(ast, cs) -> return (applyFixities (fixities mode) ast, cs)++> -- | Partial parse of a string starting with a series of top-level option pragmas.+> getTopPragmas :: String -> ParseResult [OptionPragma L]+> getTopPragmas = runParser (mfindOptPragmas >>= \(ps,_,_) -> return ps)++>++> }
src/Language/Haskell/Exts/Lexer.hs view
@@ -1,7 +1,7 @@ {-# OPTIONS_HADDOCK hide #-} ----------------------------------------------------------------------------- -- |--- Module : Language.Haskell.Exts.Lexer+-- Module : Language.Haskell.Exts.Annotated.Lexer -- Copyright : (c) The GHC Team, 1997-2000 -- (c) Niklas Broberg, 2004-2009 -- License : BSD-style (see the file LICENSE.txt)@@ -21,9 +21,10 @@ module Language.Haskell.Exts.Lexer (Token(..), lexer) where import Language.Haskell.Exts.ParseMonad+import Language.Haskell.Exts.SrcLoc+import Language.Haskell.Exts.Comments import Language.Haskell.Exts.Extension import Language.Haskell.Exts.ExtScheme-import Language.Haskell.Exts.Comments import Data.Char import Data.Ratio@@ -43,16 +44,16 @@ | ConSym String | QVarSym (String,String) | QConSym (String,String)- | IntTok Integer- | FloatTok Rational- | Character Char- | StringTok String- | IntTokHash Integer -- 1#- | WordTokHash Integer -- 1##- | FloatTokHash Rational -- 1.0#- | DoubleTokHash Rational -- 1.0##- | CharacterHash Char -- c#- | StringHash String -- "Hello world!"#+ | IntTok (Integer, String)+ | FloatTok (Rational, String)+ | Character (Char, String)+ | StringTok (String, String)+ | IntTokHash (Integer, String) -- 1#+ | WordTokHash (Integer, String) -- 1##+ | FloatTokHash (Rational, String) -- 1.0#+ | DoubleTokHash (Rational, String) -- 1.0##+ | CharacterHash (Char, String) -- c#+ | StringHash (String, String) -- "Hello world!"# -- Symbols @@ -309,14 +310,14 @@ -- We need to know whether we are at the beginning of the line to decide -- whether to insert layout tokens. -lexer :: (Token -> P a) -> P a+lexer :: (Loc Token -> P a) -> P a lexer = runL topLexer -topLexer :: Lex a Token+topLexer :: Lex a (Loc Token) topLexer = do b <- pullCtxtFlag if b then -- trace (show cf ++ ": " ++ show VRightCurly) $- setBOL >> return VRightCurly -- the lex context state flags that we must do an empty {} - UGLY+ setBOL >> getSrcLocL >>= \l -> return (Loc (mkSrcSpan l l) VRightCurly) -- the lex context state flags that we must do an empty {} - UGLY else do bol <- checkBOL (bol, ws) <- lexWhiteSpace bol@@ -327,10 +328,13 @@ -- then we want to care about the whitespace. -- We don't bother to test for XmlSyntax, since we -- couldn't end up in ChildCtxt otherwise.- Just ChildCtxt | not bol && ws -> return $ XPCDATA " "+ Just ChildCtxt | not bol && ws -> getSrcLocL >>= \l -> return $ Loc (mkSrcSpan l l) $ XPCDATA " " _ -> do startToken- if bol then lexBOL -- >>= \t -> trace ("BOL: " ++ show t) (return t)- else lexToken -- >>= \t -> trace (show t) (return t)+ sl <- getSrcLocL+ t <- if bol then lexBOL -- >>= \t -> trace ("BOL: " ++ show t) (return t)+ else lexToken -- >>= \t -> trace (show t) (return t)+ el <- getSrcLocL+ return $ Loc (mkSrcSpan sl el) t lexWhiteSpace :: Bool -> Lex a (Bool, Bool) lexWhiteSpace bol = do@@ -342,7 +346,8 @@ loc <- getSrcLocL discard 2 (bol, c) <- lexNestedComment bol ""- pushComment $ MultiLine loc (reverse c)+ loc2 <- getSrcLocL+ pushComment $ Comment True (mkSrcSpan loc loc2) (reverse c) (bol, _) <- lexWhiteSpace bol return (bol, True) '-':'-':s | all (== '-') (takeWhile isHSymbol s) -> do@@ -351,10 +356,13 @@ dashes <- lexWhile (== '-') rest <- lexWhile (/= '\n') s' <- getInput+ loc2 <- getSrcLocL+ let com = Comment False (mkSrcSpan loc loc2) $ dashes ++ rest case s' of- [] -> fail "Unterminated end-of-line comment"+ [] -> pushComment com >> return (False, True) _ -> do- lexNewline >> pushComment (SingleLine loc $ dashes ++ rest)+ pushComment com+ lexNewline lexWhiteSpace True return (True, True) '\n':_ -> do@@ -524,12 +532,12 @@ '0':c:d:_ | toLower c == 'o' && isOctDigit d -> do discard 2- n <- lexOctal- return (IntTok n)+ (n, str) <- lexOctal+ return (IntTok (n, '0':c:str)) | toLower c == 'x' && isHexDigit d -> do discard 2- n <- lexHexadecimal- return (IntTok n)+ (n, str) <- lexHexadecimal+ return (IntTok (n, '0':c:str)) -- implicit parameters '?':c:_ | isLower c && ImplicitParams `elem` exts -> do@@ -779,36 +787,37 @@ frac <- lexWhile isDigit let num = parseInteger 10 (ds ++ frac) decimals = toInteger (length frac)- exponent <- do+ (exponent, estr) <- do rest2 <- getInput case rest2 of 'e':_ -> lexExponent 'E':_ -> lexExponent- _ -> return 0+ _ -> return (0,"") con <- lexHash FloatTok FloatTokHash (Right DoubleTokHash)- return $ con ((num%1) * 10^^(exponent - decimals))+ return $ con ((num%1) * 10^^(exponent - decimals), ds ++ '.':frac ++ estr) e:_ | toLower e == 'e' -> do- exponent <- lexExponent+ (exponent, estr) <- lexExponent con <- lexHash FloatTok FloatTokHash (Right DoubleTokHash)- return $ con ((parseInteger 10 ds%1) * 10^^exponent)- '#':'#':_ | MagicHash `elem` exts -> discard 2 >> return (WordTokHash (parseInteger 10 ds))- '#':_ | MagicHash `elem` exts -> discard 1 >> return (IntTokHash (parseInteger 10 ds))- _ -> return (IntTok (parseInteger 10 ds))+ return $ con ((parseInteger 10 ds%1) * 10^^exponent, ds ++ estr)+ '#':'#':_ | MagicHash `elem` exts -> discard 2 >> return (WordTokHash (parseInteger 10 ds, ds))+ '#':_ | MagicHash `elem` exts -> discard 1 >> return (IntTokHash (parseInteger 10 ds, ds))+ _ -> return (IntTok (parseInteger 10 ds, ds)) where- lexExponent :: Lex a Integer+ lexExponent :: Lex a (Integer, String) lexExponent = do+ (e:r) <- getInput discard 1 -- 'e' or 'E'- r <- getInput case r of '+':d:_ | isDigit d -> do discard 1- lexDecimal+ (n, str) <- lexDecimal+ return (n, e:'+':str) '-':d:_ | isDigit d -> do discard 1- n <- lexDecimal- return (negate n)- d:_ | isDigit d -> lexDecimal+ (n, str) <- lexDecimal+ return (negate n, e:'-':str)+ d:_ | isDigit d -> lexDecimal >>= \(n,str) -> return (n, e:str) _ -> fail "Float with missing exponent" lexHash :: (b -> Token) -> (b -> Token) -> Either String (b -> Token) -> Lex a (b -> Token)@@ -881,16 +890,16 @@ case s of '\'':_ | TemplateHaskell `elem` exts -> discard 1 >> return THTyQuote '\\':_ -> do- c <- lexEscape+ (c,raw) <- lexEscape matchQuote con <- lexHash Character CharacterHash (Left "Double hash not available for character literals")- return (con c)+ return (con (c, '\\':raw)) c:'\'':_ -> do discard 2 con <- lexHash Character CharacterHash (Left "Double hash not available for character literals")- return (con c)+ return (con (c, [c])) _ | TemplateHaskell `elem` exts -> return THVarQuote _ -> fail "Improper character constant or misplaced \'" @@ -898,50 +907,53 @@ lexString :: Lex a Token-lexString = loop ""+lexString = loop ("","") where- loop s = do+ loop (s,raw) = do r <- getInput exts <- getExtensionsL case r of '\\':'&':_ -> do discard 2- loop s+ loop (s, '&':'\\':raw) '\\':c:_ | isSpace c -> do discard 1- lexWhiteChars+ wcs <- lexWhiteChars matchChar '\\' "Illegal character in string gap"- loop s+ loop (s, '\\':reverse wcs ++ '\\':raw) | otherwise -> do- ce <- lexEscape- loop (ce:s)+ (ce, str) <- lexEscape+ loop (ce:s, reverse str ++ '\\':raw) '"':'#':_ | MagicHash `elem` exts -> do discard 2- return (StringHash (reverse s))+ return (StringHash (reverse s, reverse raw)) '"':_ -> do discard 1- return (StringTok (reverse s))+ return (StringTok (reverse s, reverse raw)) c:_ -> do discard 1- loop (c:s)+ loop (c:s, c:raw) [] -> fail "Improperly terminated string" - lexWhiteChars :: Lex a ()+ lexWhiteChars :: Lex a String lexWhiteChars = do s <- getInput case s of '\n':_ -> do lexNewline- lexWhiteChars+ wcs <- lexWhiteChars+ return $ '\n':wcs '\t':_ -> do lexTab- lexWhiteChars+ wcs <- lexWhiteChars+ return $ '\t':wcs c:_ | isSpace c -> do discard 1- lexWhiteChars- _ -> return ()+ wcs <- lexWhiteChars+ return $ c:wcs+ _ -> return "" -lexEscape :: Lex a Char+lexEscape :: Lex a (Char, String) lexEscape = do discard 1 r <- getInput@@ -949,68 +961,71 @@ -- Production charesc from section B.2 (Note: \& is handled by caller) - 'a':_ -> discard 1 >> return '\a'- 'b':_ -> discard 1 >> return '\b'- 'f':_ -> discard 1 >> return '\f'- 'n':_ -> discard 1 >> return '\n'- 'r':_ -> discard 1 >> return '\r'- 't':_ -> discard 1 >> return '\t'- 'v':_ -> discard 1 >> return '\v'- '\\':_ -> discard 1 >> return '\\'- '"':_ -> discard 1 >> return '\"'- '\'':_ -> discard 1 >> return '\''+ 'a':_ -> discard 1 >> return ('\a', "a")+ 'b':_ -> discard 1 >> return ('\b', "b")+ 'f':_ -> discard 1 >> return ('\f', "f")+ 'n':_ -> discard 1 >> return ('\n', "n")+ 'r':_ -> discard 1 >> return ('\r', "r")+ 't':_ -> discard 1 >> return ('\t', "t")+ 'v':_ -> discard 1 >> return ('\v', "v")+ '\\':_ -> discard 1 >> return ('\\', "\\")+ '"':_ -> discard 1 >> return ('\"', "\"")+ '\'':_ -> discard 1 >> return ('\'', "\'") -- Production ascii from section B.2 '^':c:_ -> discard 2 >> cntrl c- 'N':'U':'L':_ -> discard 3 >> return '\NUL'- 'S':'O':'H':_ -> discard 3 >> return '\SOH'- 'S':'T':'X':_ -> discard 3 >> return '\STX'- 'E':'T':'X':_ -> discard 3 >> return '\ETX'- 'E':'O':'T':_ -> discard 3 >> return '\EOT'- 'E':'N':'Q':_ -> discard 3 >> return '\ENQ'- 'A':'C':'K':_ -> discard 3 >> return '\ACK'- 'B':'E':'L':_ -> discard 3 >> return '\BEL'- 'B':'S':_ -> discard 2 >> return '\BS'- 'H':'T':_ -> discard 2 >> return '\HT'- 'L':'F':_ -> discard 2 >> return '\LF'- 'V':'T':_ -> discard 2 >> return '\VT'- 'F':'F':_ -> discard 2 >> return '\FF'- 'C':'R':_ -> discard 2 >> return '\CR'- 'S':'O':_ -> discard 2 >> return '\SO'- 'S':'I':_ -> discard 2 >> return '\SI'- 'D':'L':'E':_ -> discard 3 >> return '\DLE'- 'D':'C':'1':_ -> discard 3 >> return '\DC1'- 'D':'C':'2':_ -> discard 3 >> return '\DC2'- 'D':'C':'3':_ -> discard 3 >> return '\DC3'- 'D':'C':'4':_ -> discard 3 >> return '\DC4'- 'N':'A':'K':_ -> discard 3 >> return '\NAK'- 'S':'Y':'N':_ -> discard 3 >> return '\SYN'- 'E':'T':'B':_ -> discard 3 >> return '\ETB'- 'C':'A':'N':_ -> discard 3 >> return '\CAN'- 'E':'M':_ -> discard 2 >> return '\EM'- 'S':'U':'B':_ -> discard 3 >> return '\SUB'- 'E':'S':'C':_ -> discard 3 >> return '\ESC'- 'F':'S':_ -> discard 2 >> return '\FS'- 'G':'S':_ -> discard 2 >> return '\GS'- 'R':'S':_ -> discard 2 >> return '\RS'- 'U':'S':_ -> discard 2 >> return '\US'- 'S':'P':_ -> discard 2 >> return '\SP'- 'D':'E':'L':_ -> discard 3 >> return '\DEL'+ 'N':'U':'L':_ -> discard 3 >> return ('\NUL', "NUL")+ 'S':'O':'H':_ -> discard 3 >> return ('\SOH', "SOH")+ 'S':'T':'X':_ -> discard 3 >> return ('\STX', "STX")+ 'E':'T':'X':_ -> discard 3 >> return ('\ETX', "ETX")+ 'E':'O':'T':_ -> discard 3 >> return ('\EOT', "EOT")+ 'E':'N':'Q':_ -> discard 3 >> return ('\ENQ', "ENQ")+ 'A':'C':'K':_ -> discard 3 >> return ('\ACK', "ACK")+ 'B':'E':'L':_ -> discard 3 >> return ('\BEL', "BEL")+ 'B':'S':_ -> discard 2 >> return ('\BS', "BS")+ 'H':'T':_ -> discard 2 >> return ('\HT', "HT")+ 'L':'F':_ -> discard 2 >> return ('\LF', "LF")+ 'V':'T':_ -> discard 2 >> return ('\VT', "VT")+ 'F':'F':_ -> discard 2 >> return ('\FF', "FF")+ 'C':'R':_ -> discard 2 >> return ('\CR', "CR")+ 'S':'O':_ -> discard 2 >> return ('\SO', "SO")+ 'S':'I':_ -> discard 2 >> return ('\SI', "SI")+ 'D':'L':'E':_ -> discard 3 >> return ('\DLE', "DLE")+ 'D':'C':'1':_ -> discard 3 >> return ('\DC1', "DC1")+ 'D':'C':'2':_ -> discard 3 >> return ('\DC2', "DC2")+ 'D':'C':'3':_ -> discard 3 >> return ('\DC3', "DC3")+ 'D':'C':'4':_ -> discard 3 >> return ('\DC4', "DC4")+ 'N':'A':'K':_ -> discard 3 >> return ('\NAK', "NAK")+ 'S':'Y':'N':_ -> discard 3 >> return ('\SYN', "SYN")+ 'E':'T':'B':_ -> discard 3 >> return ('\ETB', "ETB")+ 'C':'A':'N':_ -> discard 3 >> return ('\CAN', "CAN")+ 'E':'M':_ -> discard 2 >> return ('\EM', "EM")+ 'S':'U':'B':_ -> discard 3 >> return ('\SUB', "SUB")+ 'E':'S':'C':_ -> discard 3 >> return ('\ESC', "ESC")+ 'F':'S':_ -> discard 2 >> return ('\FS', "FS")+ 'G':'S':_ -> discard 2 >> return ('\GS', "GS")+ 'R':'S':_ -> discard 2 >> return ('\RS', "RS")+ 'U':'S':_ -> discard 2 >> return ('\US', "US")+ 'S':'P':_ -> discard 2 >> return ('\SP', "SP")+ 'D':'E':'L':_ -> discard 3 >> return ('\DEL', "DEL") -- Escaped numbers 'o':c:_ | isOctDigit c -> do discard 1- n <- lexOctal- checkChar n+ (n, raw) <- lexOctal+ n <- checkChar n+ return (n, 'o':raw) 'x':c:_ | isHexDigit c -> do discard 1- n <- lexHexadecimal- checkChar n+ (n, raw) <- lexHexadecimal+ n <- checkChar n+ return (n, 'x':raw) c:_ | isDigit c -> do- n <- lexDecimal- checkChar n+ (n, raw) <- lexDecimal+ n <- checkChar n+ return (n, raw) _ -> fail "Illegal escape sequence" @@ -1020,27 +1035,27 @@ -- Production cntrl from section B.2 - cntrl :: Char -> Lex a Char- cntrl c | c >= '@' && c <= '_' = return (chr (ord c - ord '@'))+ cntrl :: Char -> Lex a (Char, String)+ cntrl c | c >= '@' && c <= '_' = return (chr (ord c - ord '@'), '^':c:[]) cntrl _ = fail "Illegal control character" -- assumes at least one octal digit-lexOctal :: Lex a Integer+lexOctal :: Lex a (Integer, String) lexOctal = do ds <- lexWhile isOctDigit- return (parseInteger 8 ds)+ return (parseInteger 8 ds, ds) -- assumes at least one hexadecimal digit-lexHexadecimal :: Lex a Integer+lexHexadecimal :: Lex a (Integer, String) lexHexadecimal = do ds <- lexWhile isHexDigit- return (parseInteger 16 ds)+ return (parseInteger 16 ds, ds) -- assumes at least one decimal digit-lexDecimal :: Lex a Integer+lexDecimal :: Lex a (Integer, String) lexDecimal = do ds <- lexWhile isDigit- return (parseInteger 10 ds)+ return (parseInteger 10 ds, ds) -- Stolen from Hugs's Prelude parseInteger :: Integer -> String -> Integer
src/Language/Haskell/Exts/ParseMonad.hs view
@@ -1,7 +1,7 @@ {-# OPTIONS_HADDOCK hide #-} ----------------------------------------------------------------------------- -- |--- Module : Language.Haskell.Exts.ParseMonad+-- Module : Language.Haskell.Exts.Annotated.ParseMonad -- Copyright : Niklas Broberg (c) 2004-2009, -- Original (c) The GHC Team, 1997-2000 -- License : BSD-style (see the file libraries/base/LICENSE)@@ -32,10 +32,10 @@ getModuleName ) where -import Language.Haskell.Exts.Syntax(SrcLoc(..))-import Language.Haskell.Exts.Extension (Extension)-import Language.Haskell.Exts.Fixity (Fixity, preludeFixities)+import Language.Haskell.Exts.SrcLoc(SrcLoc(..))+import Language.Haskell.Exts.Annotated.Fixity (Fixity, preludeFixities) import Language.Haskell.Exts.Comments+import Language.Haskell.Exts.Extension (Extension) import Data.List ( intersperse ) import Control.Applicative@@ -352,7 +352,7 @@ getSrcLocL :: Lex a SrcLoc getSrcLocL = Lex $ \cont -> P $ \i x y l ->- runP (cont l) i x y l+ runP (cont (l { srcLine = y, srcColumn = x })) i x y l pushContextL :: LexContext -> Lex a () pushContextL ctxt = Lex $ \cont -> P $ \r x y loc (stk, e, pst, cs) ->
+ src/Language/Haskell/Exts/ParseSyntax.hs view
@@ -0,0 +1,432 @@+module Language.Haskell.Exts.ParseSyntax where + +import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) ) +import qualified Language.Haskell.Exts.Annotated.Syntax as S ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) ) + +--------------------------------------- +-- Expressions as we parse them (and patters, and regular patterns) + +data PExp l + = Var l (QName l) -- ^ variable + | IPVar l (IPName l) -- ^ implicit parameter variable + | Con l (QName l) -- ^ data constructor + | Lit l (Literal l) -- ^ literal constant + | InfixApp l (PExp l) (QOp l) (PExp l) -- ^ infix application + | App l (PExp l) (PExp l) -- ^ ordinary application + | NegApp l (PExp l) -- ^ negation expression @-@ /exp/ + | Lambda l [Pat l] (PExp l) -- ^ lambda expression + | Let l (Binds l) (PExp l) -- ^ local declarations with @let@ + | If l (PExp l) (PExp l) (PExp l) -- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/ + | Case l (PExp l) [Alt l] -- ^ @case@ /exp/ @of@ /alts/ + | Do l [Stmt l] -- ^ @do@-expression: + -- the last statement in the list + -- should be an expression. + | MDo l [Stmt l] -- ^ @mdo@-expression +-- | Tuple [PExp] -- ^ tuple expression + | TupleSection l [Maybe (PExp l)] -- ^ tuple section expression, e.g. @(,,3)@ + | List l [PExp l] -- ^ list expression + | Paren l (PExp l) -- ^ parenthesized expression +-- RightSection QOp PExp -- ^ right section @(@/qop/ /exp/@)@ + | RecConstr l (QName l) [PFieldUpdate l] + -- ^ record construction expression + | RecUpdate l (PExp l) [PFieldUpdate l] + -- ^ record update expression + | EnumFrom l (PExp l) -- ^ unbounded arithmetic sequence, + -- incrementing by 1 + | EnumFromTo l (PExp l) (PExp l) -- ^ bounded arithmetic sequence, + -- incrementing by 1 + | EnumFromThen l (PExp l) (PExp l) -- ^ unbounded arithmetic sequence, + -- with first two elements given + | EnumFromThenTo l (PExp l) (PExp l) (PExp l) + -- ^ bounded arithmetic sequence, + -- with first two elements given + | ParComp l (PExp l) [[QualStmt l]] -- ^ parallel list comprehension + | ExpTypeSig l (PExp l) (S.Type l) + -- ^ expression type signature + | AsPat l (Name l) (PExp l) -- ^ patterns only + | WildCard l -- ^ patterns only + | IrrPat l (PExp l) -- ^ patterns only + +-- Post-ops for parsing left sections and regular patterns. Not to be left in the final tree. + | PostOp l (PExp l) (QOp l) -- ^ post-ops + | PreOp l (QOp l) (PExp l) -- ^ pre-ops + +-- View patterns + | ViewPat l (PExp l) (PExp l) -- ^ patterns only + +-- HaRP + | SeqRP l [PExp l] -- ^ regular patterns only + | GuardRP l (PExp l) [Stmt l] -- ^ regular patterns only + | EitherRP l (PExp l) (PExp l) -- ^ regular patterns only + | CAsRP l (Name l) (PExp l) -- ^ regular patterns only + +-- Template Haskell + | VarQuote l (QName l) -- ^ 'x + | TypQuote l (QName l) -- ^ ''T + | BracketExp l (Bracket l) + | SpliceExp l (Splice l) + | QuasiQuote l String String -- ^ [$...|...] + +-- Hsx + | XTag l (XName l) [ParseXAttr l] (Maybe (PExp l)) [PExp l] + | XETag l (XName l) [ParseXAttr l] (Maybe (PExp l)) + | XPcdata l String + | XExpTag l (PExp l) + | XRPats l [PExp l] + +-- Pragmas + | CorePragma l String (PExp l) + | SCCPragma l String (PExp l) + | GenPragma l String (Int, Int) (Int, Int) (PExp l) +-- | UnknownExpPragma String String + +-- Generics + | ExplTypeArg l (QName l) (S.Type l) -- ^ f {| Int |} x = ... + +-- Bang Patterns + | BangPat l (PExp l) -- ^ f !a = ... + +-- Arrows + | Proc l (Pat l) (PExp l) + | LeftArrApp l (PExp l) (PExp l) + | RightArrApp l (PExp l) (PExp l) + | LeftArrHighApp l (PExp l) (PExp l) + | RightArrHighApp l (PExp l) (PExp l) + deriving (Eq,Show) + +data PFieldUpdate l + = FieldUpdate l (QName l) (PExp l) + | FieldPun l (Name l) + | FieldWildcard l + deriving (Eq,Show) + +data ParseXAttr l = XAttr l (XName l) (PExp l) + deriving (Eq,Show) + +instance Annotated PExp where + ann e = case e of + Var l qn -> l + IPVar l ipn -> l + Con l qn -> l + Lit l lit -> l + InfixApp l e1 qop e2 -> l + App l e1 e2 -> l + NegApp l e -> l + Lambda l ps e -> l + Let l bs e -> l + If l ec et ee -> l + Case l e alts -> l + Do l ss -> l + MDo l ss -> l + TupleSection l mes -> l + List l es -> l + Paren l e -> l + RecConstr l qn fups -> l + RecUpdate l e fups -> l + EnumFrom l e -> l + EnumFromTo l ef et -> l + EnumFromThen l ef et -> l + EnumFromThenTo l ef eth eto -> l + ParComp l e qsss -> l + ExpTypeSig l e t -> l + AsPat l n e -> l + WildCard l -> l + IrrPat l e -> l + PostOp l e op -> l + PreOp l op e -> l + ViewPat l e1 e2 -> l + SeqRP l es -> l + GuardRP l e ss -> l + EitherRP l e1 e2 -> l + CAsRP l n e -> l + + VarQuote l qn -> l + TypQuote l qn -> l + BracketExp l br -> l + SpliceExp l sp -> l + QuasiQuote l sn se -> l + + XTag l xn xas me es -> l + XETag l xn xas me -> l + XPcdata l s -> l + XExpTag l e -> l + XRPats l es -> l + + CorePragma l s e -> l + SCCPragma l s e -> l + GenPragma l s n12 n34 e -> l + + ExplTypeArg l qn t -> l + BangPat l e -> l + + Proc l p e -> l + LeftArrApp l e1 e2 -> l + RightArrApp l e1 e2 -> l + LeftArrHighApp l e1 e2 -> l + RightArrHighApp l e1 e2 -> l + + amap f e = case e of + Var l qn -> Var (f l) qn + IPVar l ipn -> IPVar (f l) ipn + Con l qn -> Con (f l) qn + Lit l lit -> Lit (f l) lit + InfixApp l e1 qop e2 -> InfixApp (f l) e1 qop e2 + App l e1 e2 -> App (f l) e1 e2 + NegApp l e -> NegApp (f l) e + Lambda l ps e -> Lambda (f l) ps e + Let l bs e -> Let (f l) bs e + If l ec et ee -> If (f l) ec et ee + Case l e alts -> Case (f l) e alts + Do l ss -> Do (f l) ss + MDo l ss -> MDo (f l) ss + TupleSection l mes -> TupleSection (f l) mes + List l es -> List (f l) es + Paren l e -> Paren (f l) e + RecConstr l qn fups -> RecConstr (f l) qn fups + RecUpdate l e fups -> RecUpdate (f l) e fups + EnumFrom l e -> EnumFrom (f l) e + EnumFromTo l ef et -> EnumFromTo (f l) ef et + EnumFromThen l ef et -> EnumFromThen (f l) ef et + EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) ef eth eto + ParComp l e qsss -> ParComp (f l) e qsss + ExpTypeSig l e t -> ExpTypeSig (f l) e t + + AsPat l n e -> AsPat (f l) n e + WildCard l -> WildCard (f l) + IrrPat l e -> IrrPat (f l) e + PostOp l e op -> PostOp (f l) e op + PreOp l op e -> PreOp (f l) op e + ViewPat l e1 e2 -> ViewPat (f l) e1 e2 + SeqRP l es -> SeqRP (f l) es + GuardRP l e ss -> GuardRP (f l) e ss + EitherRP l e1 e2 -> EitherRP (f l) e1 e2 + CAsRP l n e -> CAsRP (f l) n e + ExplTypeArg l n t -> ExplTypeArg (f l) n t + BangPat l e -> BangPat (f l) e + + VarQuote l qn -> VarQuote (f l) qn + TypQuote l qn -> TypQuote (f l) qn + BracketExp l br -> BracketExp (f l) br + SpliceExp l sp -> SpliceExp (f l) sp + QuasiQuote l sn se -> QuasiQuote (f l) sn se + + XTag l xn xas me es -> XTag (f l) xn xas me es + XETag l xn xas me -> XETag (f l) xn xas me + XPcdata l s -> XPcdata (f l) s + XExpTag l e -> XExpTag (f l) e + + CorePragma l s e -> CorePragma (f l) s e + SCCPragma l s e -> SCCPragma (f l) s e + GenPragma l s n12 n34 e -> GenPragma (f l) s n12 n34 e + + Proc l p e -> Proc (f l) p e + LeftArrApp l e1 e2 -> LeftArrApp (f l) e1 e2 + RightArrApp l e1 e2 -> RightArrApp (f l) e1 e2 + LeftArrHighApp l e1 e2 -> LeftArrHighApp (f l) e1 e2 + RightArrHighApp l e1 e2 -> RightArrHighApp (f l) e1 e2 + +instance Functor PExp where + fmap f e = case e of + Var l qn -> Var (f l) (fmap f qn) + IPVar l ipn -> IPVar (f l) (fmap f ipn) + Con l qn -> Con (f l) (fmap f qn) + Lit l lit -> Lit (f l) (fmap f lit) + InfixApp l e1 qop e2 -> InfixApp (f l) (fmap f e1) (fmap f qop) (fmap f e2) + App l e1 e2 -> App (f l) (fmap f e1) (fmap f e2) + NegApp l e -> NegApp (f l) (fmap f e) + Lambda l ps e -> Lambda (f l) (map (fmap f) ps) (fmap f e) + Let l bs e -> Let (f l) (fmap f bs) (fmap f e) + If l ec et ee -> If (f l) (fmap f ec) (fmap f et) (fmap f ee) + Case l e alts -> Case (f l) (fmap f e) (map (fmap f) alts) + Do l ss -> Do (f l) (map (fmap f) ss) + MDo l ss -> MDo (f l) (map (fmap f) ss) + TupleSection l mes -> TupleSection (f l) (map (fmap (fmap f)) mes) + List l es -> List (f l) (map (fmap f) es) + Paren l e -> Paren (f l) (fmap f e) + RecConstr l qn fups -> RecConstr (f l) (fmap f qn) (map (fmap f) fups) + RecUpdate l e fups -> RecUpdate (f l) (fmap f e) (map (fmap f) fups) + EnumFrom l e -> EnumFrom (f l) (fmap f e) + EnumFromTo l ef et -> EnumFromTo (f l) (fmap f ef) (fmap f et) + EnumFromThen l ef et -> EnumFromThen (f l) (fmap f ef) (fmap f et) + EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) (fmap f ef) (fmap f eth) (fmap f eto) + ParComp l e qsss -> ParComp (f l) (fmap f e) (map (map (fmap f)) qsss) + ExpTypeSig l e t -> ExpTypeSig (f l) (fmap f e) (fmap f t) + + AsPat l n e -> AsPat (f l) (fmap f n) (fmap f e) + WildCard l -> WildCard (f l) + IrrPat l e -> IrrPat (f l) (fmap f e) + PostOp l e op -> PostOp (f l) (fmap f e) (fmap f op) + PreOp l op e -> PreOp (f l) (fmap f op) (fmap f e) + ViewPat l e1 e2 -> ViewPat (f l) (fmap f e1) (fmap f e2) + SeqRP l es -> SeqRP (f l) (map (fmap f) es) + GuardRP l e ss -> GuardRP (f l) (fmap f e) (map (fmap f) ss) + EitherRP l e1 e2 -> EitherRP (f l) (fmap f e1) (fmap f e2) + CAsRP l n e -> CAsRP (f l) (fmap f n) (fmap f e) + ExplTypeArg l n t -> ExplTypeArg (f l) (fmap f n) (fmap f t) + BangPat l e -> BangPat (f l) (fmap f e) + + VarQuote l qn -> VarQuote (f l) (fmap f qn) + TypQuote l qn -> TypQuote (f l) (fmap f qn) + BracketExp l br -> BracketExp (f l) (fmap f br) + SpliceExp l sp -> SpliceExp (f l) (fmap f sp) + QuasiQuote l sn se -> QuasiQuote (f l) sn se + + XTag l xn xas me es -> XTag (f l) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) (map (fmap f) es) + XETag l xn xas me -> XETag (f l) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) + XPcdata l s -> XPcdata (f l) s + XExpTag l e -> XExpTag (f l) (fmap f e) + + CorePragma l s e -> CorePragma (f l) s (fmap f e) + SCCPragma l s e -> SCCPragma (f l) s (fmap f e) + GenPragma l s n12 n34 e -> GenPragma (f l) s n12 n34 (fmap f e) + + Proc l p e -> Proc (f l) (fmap f p) (fmap f e) + LeftArrApp l e1 e2 -> LeftArrApp (f l) (fmap f e1) (fmap f e2) + RightArrApp l e1 e2 -> RightArrApp (f l) (fmap f e1) (fmap f e2) + LeftArrHighApp l e1 e2 -> LeftArrHighApp (f l) (fmap f e1) (fmap f e2) + RightArrHighApp l e1 e2 -> RightArrHighApp (f l) (fmap f e1) (fmap f e2) + + + +instance Functor PFieldUpdate where + fmap f (FieldUpdate l qn e) = FieldUpdate (f l) (fmap f qn) (fmap f e) + fmap f (FieldPun l n) = FieldPun (f l) (fmap f n) + fmap f (FieldWildcard l) = FieldWildcard (f l) + +instance Annotated PFieldUpdate where + ann (FieldUpdate l qn e) = l + ann (FieldPun l n) = l + ann (FieldWildcard l) = l + amap f (FieldUpdate l qn e) = FieldUpdate (f l) qn e + amap f (FieldPun l n) = FieldPun (f l) n + amap f (FieldWildcard l) = FieldWildcard (f l) + +instance Functor ParseXAttr where + fmap f (XAttr l xn e) = XAttr (f l) (fmap f xn) (fmap f e) + +instance Annotated ParseXAttr where + ann (XAttr l _ _) = l + amap f (XAttr l xn e) = XAttr (f l) xn e + +p_unit_con :: l -> PExp l +p_unit_con l = Con l (unit_con_name l) + +p_tuple_con :: l -> Boxed -> Int -> PExp l +p_tuple_con l b i = Con l (tuple_con_name l b i) + +p_unboxed_singleton_con :: l -> PExp l +p_unboxed_singleton_con l = Con l (unboxed_singleton_con_name l) + +data PContext l + = CxSingle l (PAsst l) + | CxTuple l [PAsst l] + | CxParen l (PContext l) + | CxEmpty l + deriving (Eq, Show) + +instance Functor PContext where + fmap f (CxSingle l asst) = CxSingle (f l) (fmap f asst) + fmap f (CxTuple l assts) = CxTuple (f l) (map (fmap f) assts) + fmap f (CxParen l ctxt) = CxParen (f l) (fmap f ctxt) + fmap f (CxEmpty l) = CxEmpty (f l) + +instance Annotated PContext where + ann (CxSingle l asst ) = l + ann (CxTuple l assts) = l + ann (CxParen l ctxt ) = l + ann (CxEmpty l) = l + amap f (CxSingle l asst ) = CxSingle (f l) asst + amap f (CxTuple l assts) = CxTuple (f l) assts + amap f (CxParen l ctxt ) = CxParen (f l) ctxt + amap f (CxEmpty l) = CxEmpty (f l) + +data PType l + = TyForall l + (Maybe [TyVarBind l]) + (Maybe (PContext l)) + (PType l) + | TyFun l (PType l) (PType l) -- ^ function type + | TyTuple l Boxed [PType l] -- ^ tuple type, possibly boxed + | TyList l (PType l) -- ^ list syntax, e.g. [a], as opposed to [] a + | TyApp l (PType l) (PType l) -- ^ application of a type constructor + | TyVar l (Name l) -- ^ type variable + | TyCon l (QName l) -- ^ named type or type constructor + | TyParen l (PType l) -- ^ type surrounded by parentheses + | TyPred l (PAsst l) -- ^ assertion of an implicit parameter + | TyInfix l (PType l) (QName l) (PType l) -- ^ infix type constructor + | TyKind l (PType l) (Kind l) -- ^ type with explicit kind signature + deriving (Eq, Show) + +instance Functor PType where + fmap f t = case t of + TyForall l mtvs mcx t -> TyForall (f l) (fmap (map (fmap f)) mtvs) (fmap (fmap f) mcx) (fmap f t) + TyFun l t1 t2 -> TyFun (f l) (fmap f t1) (fmap f t2) + TyTuple l b ts -> TyTuple (f l) b (map (fmap f) ts) + TyList l t -> TyList (f l) (fmap f t) + TyApp l t1 t2 -> TyApp (f l) (fmap f t1) (fmap f t2) + TyVar l n -> TyVar (f l) (fmap f n) + TyCon l qn -> TyCon (f l) (fmap f qn) + TyParen l t -> TyParen (f l) (fmap f t) + TyPred l asst -> TyPred (f l) (fmap f asst) + TyInfix l ta qn tb -> TyInfix (f l) (fmap f ta) (fmap f qn) (fmap f tb) + TyKind l t k -> TyKind (f l) (fmap f t) (fmap f k) + +instance Annotated PType where + ann t = case t of + TyForall l mtvs cx t -> l + TyFun l t1 t2 -> l + TyTuple l b ts -> l + TyList l t -> l + TyApp l t1 t2 -> l + TyVar l n -> l + TyCon l qn -> l + TyParen l t -> l + TyInfix l ta qn tb -> l + TyKind l t k -> l + amap f t = case t of + TyForall l mtvs mcx t -> TyForall (f l) mtvs mcx t + TyFun l t1 t2 -> TyFun (f l) t1 t2 + TyTuple l b ts -> TyTuple (f l) b ts + TyList l t -> TyList (f l) t + TyApp l t1 t2 -> TyApp (f l) t1 t2 + TyVar l n -> TyVar (f l) n + TyCon l qn -> TyCon (f l) qn + TyParen l t -> TyParen (f l) t + TyInfix l ta qn tb -> TyInfix (f l) ta qn tb + TyKind l t k -> TyKind (f l) t k + +data PAsst l + = ClassA l (QName l) [PType l] + | InfixA l (PType l) (QName l) (PType l) + | IParam l (IPName l) (PType l) + | EqualP l (PType l) (PType l) + deriving (Eq, Show) + +instance Functor PAsst where + fmap f asst = case asst of + ClassA l qn ts -> ClassA (f l) (fmap f qn) (map (fmap f) ts) + InfixA l ta qn tb -> InfixA (f l) (fmap f ta) (fmap f qn) (fmap f tb) + IParam l ipn t -> IParam (f l) (fmap f ipn) (fmap f t) + EqualP l t1 t2 -> EqualP (f l) (fmap f t1) (fmap f t2) + +instance Annotated PAsst where + ann asst = case asst of + ClassA l qn ts -> l + InfixA l ta qn tb -> l + IParam l ipn t -> l + EqualP l t1 t2 -> l + amap f asst = case asst of + ClassA l qn ts -> ClassA (f l) qn ts + InfixA l ta qn tb -> InfixA (f l) ta qn tb + IParam l ipn t -> IParam (f l) ipn t + EqualP l t1 t2 -> EqualP (f l) t1 t2 + + +unit_tycon, fun_tycon, list_tycon, unboxed_singleton_tycon :: l -> PType l +unit_tycon l = TyCon l (unit_tycon_name l) +fun_tycon l = TyCon l (fun_tycon_name l) +list_tycon l = TyCon l (list_tycon_name l) +unboxed_singleton_tycon l = TyCon l (unboxed_singleton_tycon_name l) + +tuple_tycon :: l -> Boxed -> Int -> PType l +tuple_tycon l b i = TyCon l (tuple_tycon_name l b i)
src/Language/Haskell/Exts/ParseUtils.hs view
@@ -2,1070 +2,1373 @@ ----------------------------------------------------------------------------- -- | -- Module : Language.Haskell.Exts.ParseUtils--- Copyright : (c) Niklas Broberg 2004,--- (c) The GHC Team, 1997-2000--- License : BSD-style (see the file LICENSE.txt)------ Maintainer : Niklas Broberg, d00nibro@chalmers.se--- Stability : stable--- Portability : portable------ Utilities for the Haskell-exts parser.-----------------------------------------------------------------------------------module Language.Haskell.Exts.ParseUtils (- splitTyConApp -- PType -> P (Name,[Type])- , checkEnabled -- (Show e, Enabled e) => e -> P ()- , checkPatternGuards -- [Stmt] -> P ()- , mkRecConstrOrUpdate -- PExp -> [PFieldUpdate] -> P Exp- , checkPrec -- Integer -> P Int- , checkPContext -- PType -> P PContext- , checkContext -- PContext -> P Context- , checkAssertion -- PType -> P PAsst- , checkDataHeader -- PType -> P (Context,Name,[TyVarBind])- , checkClassHeader -- PType -> P (Context,Name,[TyVarBind])- , checkInstHeader -- PType -> P (Context,QName,[Type])- , checkDeriving -- [PType] -> P [Deriving]- , checkPattern -- PExp -> P Pat- , checkExpr -- PExp -> P Exp- , checkType -- PType -> P Type- , checkValDef -- SrcLoc -> PExp -> Maybe Type -> Rhs -> Binds -> P Decl- , checkClassBody -- [ClassDecl] -> P [ClassDecl]- , checkInstBody -- [InstDecl] -> P [InstDecl]- , checkUnQual -- QName -> P Name- , checkRevDecls -- [Decl] -> P [Decl]- , checkRevClsDecls -- [ClassDecl] -> P [ClassDecl]- , checkRevInstDecls -- [InstDecl] -> P [InstDecl]- , checkDataOrNew -- DataOrNew -> [a] -> P ()- , checkSimpleType -- PType -> P (Name, [TyVarBind])- , checkSigVar -- PExp -> P Name- , getGConName -- S.Exp -> P QName- , mkTyForall -- Maybe [TyVarBind] -> PContext -> PType -> PType- -- HaRP- , checkRPattern -- PExp -> P RPat- -- Hsx- , checkEqNames -- XName -> XName -> P XName- , mkPageModule -- [OptionPragma] -> Exp -> P Module- , mkPage -- Module -> SrcLoc -> Exp -> P Module- , mkDVar -- [String] -> String- , mkDVarExpr -- [String] -> PExp- -- Pragmas- , checkRuleExpr -- PExp -> P Exp- , readTool -- Maybe String -> Maybe Tool-- -- Parsed expressions and types- , PExp(..), PFieldUpdate(..), ParseXAttr(..), PType(..), PContext, PAsst(..)- , p_unit_con -- PExp- , p_tuple_con -- Boxed -> Int -> PExp- , p_unboxed_singleton_con -- PExp- ) where--import Language.Haskell.Exts.Syntax hiding ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..) )-import qualified Language.Haskell.Exts.Syntax as S ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..) )-import Language.Haskell.Exts.ParseMonad-import Language.Haskell.Exts.Pretty-import Language.Haskell.Exts.Build-import Language.Haskell.Exts.Extension-import Language.Haskell.Exts.ExtScheme--import Data.List (intersperse)-import Data.Maybe (fromJust)-import Control.Monad (when)--splitTyConApp :: PType -> P (Name,[S.Type])-splitTyConApp t0 = do- (n, pts) <- split t0 []- ts <- mapM checkType pts- return (n,ts)- where- split :: PType -> [PType] -> P (Name,[PType])- split (TyApp t u) ts = split t (u:ts)- split (TyCon (UnQual t)) ts = return (t,ts)- split (TyInfix a op b) ts = split (TyCon op) (a:b:ts)- split _ _ = fail "Illegal data/newtype declaration"---------------------------------------------------------------------------------- Checking for extensions--checkEnabled :: (Show e, Enabled e) => e -> P ()-checkEnabled e = do- exts <- getExtensions- if isEnabled e exts- then return ()- else fail $ show e ++ " is not enabled"--checkPatternGuards :: [Stmt] -> P ()-checkPatternGuards [Qualifier _] = return ()-checkPatternGuards _ = checkEnabled PatternGuards---------------------------------------------------------------------------------- Checking contexts---- Check that a context is syntactically correct. Takes care of--- checking for MPTCs, TypeOperators, TypeFamilies (for eq constraints)--- and ImplicitParameters, but leaves checking of the class assertion--- parameters for later.-checkPContext :: PType -> P PContext-checkPContext (TyTuple Boxed ts) =- mapM checkAssertion ts-checkPContext (TyCon (Special UnitCon)) =- return []-checkPContext (TyParen t) = do- c <- checkAssertion t- return [c]-checkPContext t = do- c <- checkAssertion t- return [c]---- Check a single assertion according to the above, still leaving--- the class assertion parameters for later.-checkAssertion :: PType -> P PAsst--- We cannot even get here unless ImplicitParameters is enabled.-checkAssertion (TyPred p@(IParam _ _)) = return p--- We cannot even get here unless TypeFamilies is enabled.-checkAssertion (TyPred p@(EqualP _ _)) = return p-checkAssertion t = checkAssertion' [] t- where -- class assertions must have at least one argument- checkAssertion' ts@(_:xs) (TyCon c) = do- when (not $ null xs) $ checkEnabled MultiParamTypeClasses- when (isSymbol c) $ checkEnabled TypeOperators- return $ ClassA c ts- checkAssertion' ts (TyApp a t) = do- -- no check on t at this stage- checkAssertion' (t:ts) a- checkAssertion' ts (TyInfix a op b) =- -- infix operators require TypeOperators- checkEnabled TypeOperators >> checkAssertion' (a:b:ts) (TyCon op)- checkAssertion' ts (TyParen t) =- checkAssertion' ts t- checkAssertion' _ _ = fail "Illegal class assertion"--isSymbol :: QName -> Bool-isSymbol (UnQual (Symbol _)) = True-isSymbol (Qual _ (Symbol _)) = True-isSymbol _ = False----- Checks simple contexts for class and instance--- headers. If FlexibleContexts is enabled then--- anything goes, otherwise only tyvars are allowed.-checkSContext :: PContext -> P Context-checkSContext = mapM (checkAsst True)---- Checks ordinary contexts for sigtypes and data type--- declarations. If FlexibleContexts is enabled then--- anything goes, otherwise only tyvars OR tyvars--- applied to types are allowed.-checkContext :: PContext -> P Context-checkContext = mapM (checkAsst False)--checkAsst :: Bool -> PAsst -> P S.Asst-checkAsst isSimple asst =- case asst of- ClassA qn pts -> do- ts <- mapM (checkAsstParam isSimple) pts- return $ S.ClassA qn ts- InfixA a op b -> do- [a,b] <- mapM (checkAsstParam isSimple) [a,b]- return $ S.InfixA a op b- IParam ipn pt -> do- t <- checkType pt- return $ S.IParam ipn t- EqualP pa pb -> do- a <- checkType pa- b <- checkType pb- return $ S.EqualP a b--checkAsstParam :: Bool -> PType -> P S.Type-checkAsstParam isSimple t = do- exts <- getExtensions- if FlexibleContexts `elem` exts- then checkType t- else case t of- TyVar n -> return $ S.TyVar n- TyApp pf pt | not isSimple -> do- f <- checkAsstParam isSimple pf- t <- checkType pt- return $ S.TyApp f t- _ -> fail "Malformed context: FlexibleContexts not enabled"---------------------------------------------------------------------------------- Checking Headers---checkDataHeader :: PType -> P (Context,Name,[TyVarBind])-checkDataHeader (TyForall Nothing cs t) = do- (c,ts) <- checkSimple "data/newtype" t []- cs <- checkContext cs- return (cs,c,ts)-checkDataHeader t = do- (c,ts) <- checkSimple "data/newtype" t []- return ([],c,ts)--checkClassHeader :: PType -> P (Context,Name,[TyVarBind])-checkClassHeader (TyForall Nothing cs t) = do- (c,ts) <- checkSimple "class" t []- cs <- checkSContext cs- return (cs,c,ts)-checkClassHeader t = do- (c,ts) <- checkSimple "class" t []- return ([],c,ts)--checkSimple :: String -> PType -> [TyVarBind] -> P (Name,[TyVarBind])-checkSimple kw (TyApp l t) xs | isTyVarBind t = checkSimple kw l (toTyVarBind t : xs)-checkSimple _ (TyInfix t1 (UnQual t) t2) xs- | isTyVarBind t1 && isTyVarBind t2 =- checkEnabled TypeOperators >> return (t, toTyVarBind t1 : toTyVarBind t2 : xs)-checkSimple _kw (TyCon (UnQual t)) xs = do- case t of- Symbol _ -> checkEnabled TypeOperators- _ -> return ()- return (t,xs)-checkSimple kw (TyParen t) xs = checkSimple kw t xs-checkSimple kw _ _ = fail ("Illegal " ++ kw ++ " declaration")--isTyVarBind :: PType -> Bool-isTyVarBind (TyVar _) = True-isTyVarBind (TyKind (TyVar _) _) = True-isTyVarBind _ = False--toTyVarBind :: PType -> TyVarBind-toTyVarBind (TyVar n) = UnkindedVar n-toTyVarBind (TyKind (TyVar n) k) = KindedVar n k--checkInstHeader :: PType -> P (Context,QName,[S.Type])-checkInstHeader (TyForall Nothing cs t) = do- (c,ts) <- checkInsts t []- cs <- checkSContext cs- return (cs,c,ts)-checkInstHeader t = do- (c,ts) <- checkInsts t []- return ([],c,ts)---checkInsts :: PType -> [PType] -> P (QName,[S.Type])-checkInsts (TyApp l t) ts = checkInsts l (t:ts)-checkInsts (TyCon c) ts = do- when (isSymbol c) $ checkEnabled TypeOperators- ts <- checkTypes ts- return (c,ts)-checkInsts (TyInfix a op b) [] = do- checkEnabled TypeOperators- ts <- checkTypes [a,b]- return (op,ts)-checkInsts (TyParen t) [] = checkInsts t []-checkInsts _ _ = fail "Illegal instance declaration"--checkDeriving :: [PType] -> P [Deriving]-checkDeriving = mapM (flip checkInsts [])---------------------------------------------------------------------------------- Checking Patterns.---- We parse patterns as expressions and check for valid patterns below,--- converting the expression into a pattern at the same time.--checkPattern :: PExp -> P Pat-checkPattern e = checkPat e []--checkPat :: PExp -> [Pat] -> P Pat-checkPat (Con c) args = return (PApp c args)-checkPat (App f x) args = do- x <- checkPat x []- checkPat f (x:args)-checkPat (InfixApp l op r) args- | op == (QVarOp (UnQual (Symbol "!"))) = do- -- We must have BangPatterns on- checkEnabled BangPatterns- let (e,es) = splitBang r []- ps <- mapM checkPattern (BangPat e:es)- checkPat l (ps++args)-checkPat e [] = case e of- Var (UnQual x) -> return (PVar x)- Lit l -> return (PLit l)- InfixApp l op r ->- case op of- QConOp c -> do- l <- checkPat l []- r <- checkPat r []- return (PInfixApp l c r)- QVarOp (UnQual (Symbol "+")) -> do- case (l,r) of- (Var (UnQual n@(Ident _)), Lit (Int k)) -> return (PNPlusK n k)- _ -> patFail ""-{- QVarOp (UnQual (Symbol "!")) -> do- -- We must have BangPatterns on- checkEnabled BangPatterns- let (e,es) = splitBang r []- ps <- mapM checkPattern (BangPat e:es)- checkPat l ps -}- _ -> patFail ""-{- Tuple es -> do- ps <- mapM (\e -> checkPat e []) es- return (PTuple ps)-}- TupleSection mes ->- if all ((/=) Nothing) mes- then do ps <- mapM (\e -> checkPat e []) (map fromJust mes)- return (PTuple ps)- else fail "Illegal tuple section in pattern"-- List es -> do- ps <- mapM checkRPattern es- if all isStdPat ps- then return . PList $ map stripRP ps- -- we don't allow truly regular patterns unless the extension is enabled- else checkEnabled RegularPatterns >> return (PRPat $ map fixRPOpPrec ps)- where isStdPat :: RPat -> Bool- isStdPat (RPPat _) = True- isStdPat (RPAs _ p) = isStdPat p- isStdPat (RPParen p) = isStdPat p- isStdPat _ = False- stripRP :: RPat -> Pat- stripRP (RPPat p) = p- stripRP (RPAs n p) = PAsPat n (stripRP p)- stripRP (RPParen p) = PParen (stripRP p)- stripRP _ = error "cannot strip RP wrapper if not all patterns are base"-- Paren e -> do- p <- checkPat e []- return (PParen p)- AsPat n e -> do- p <- checkPat e []- return (PAsPat n p)- WildCard -> return PWildCard- IrrPat e -> do- p <- checkPat e []- return (PIrrPat p)- ViewPat e p -> do- e <- checkExpr e- p <- checkPat p []- return (PViewPat e p)- RecConstr c fs -> do- fs <- mapM checkPatField fs- return (PRec c fs)- NegApp (Lit l) -> return (PNeg (PLit l))- ExpTypeSig s e t -> do- -- patterns cannot have signatures unless ScopedTypeVariables is enabled.- checkEnabled ScopedTypeVariables- p <- checkPat e []- return (PatTypeSig s p t)-- -- Hsx- XTag s n attrs mattr cs -> do- pattrs <- mapM checkPAttr attrs- pcs <- mapM (\c -> checkPat c []) cs- mpattr <- maybe (return Nothing)- (\e -> do p <- checkPat e []- return $ Just p)- mattr- let cps = mkChildrenPat pcs- return $ PXTag s n pattrs mpattr cps- XETag s n attrs mattr -> do- pattrs <- mapM checkPAttr attrs- mpattr <- maybe (return Nothing)- (\e -> do p <- checkPat e []- return $ Just p)- mattr- return $ PXETag s n pattrs mpattr- XPcdata pcdata -> return $ PXPcdata pcdata- XExpTag e -> do- p <- checkPat e []- return $ PXPatTag p- XRPats es -> do- rps <- mapM checkRPattern es- return (PXRPats $ map fixRPOpPrec rps)-- -- Generics- ExplTypeArg qn t -> return $ PExplTypeArg qn t-- -- QuasiQuotation- QuasiQuote n q -> return $ PQuasiQuote n q-- -- BangPatterns- BangPat e -> do- p <- checkPat e []- return $ PBangPat p-- PreOp (QVarOp (UnQual (Symbol "!"))) e -> do- checkEnabled BangPatterns- p <- checkPat e []- return $ PBangPat p-- e -> patFail $ show e--checkPat e _ = patFail $ show e--splitBang :: PExp -> [PExp] -> (PExp, [PExp])-splitBang (App f x) es = splitBang f (x:es)-splitBang e es = (e, es)--checkPatField :: PFieldUpdate -> P PatField-checkPatField (FieldUpdate n e) = do- p <- checkPat e []- return (PFieldPat n p)-checkPatField (FieldPun n) = return (PFieldPun n)-checkPatField (FieldWildcard) = return PFieldWildcard--checkPAttr :: ParseXAttr -> P PXAttr-checkPAttr (XAttr n v) = do p <- checkPat v []- return $ PXAttr n p--patFail :: String -> P a-patFail s = fail $ "Parse error in pattern: " ++ s--checkRPattern :: PExp -> P RPat-checkRPattern e = case e of- SeqRP es -> do- rps <- mapM checkRPattern es- return $ RPSeq rps- PostOp e op -> do- rpop <- checkRPatOp op- rp <- checkRPattern e- return $ RPOp rp rpop- GuardRP e gs -> do- rp <- checkPattern e- return $ RPGuard rp gs- EitherRP e1 e2 -> do- rp1 <- checkRPattern e1- rp2 <- checkRPattern e2- return $ RPEither rp1 rp2- CAsRP n e -> do- rp <- checkRPattern e- return $ RPCAs n rp- AsPat n e -> do- rp <- checkRPattern e- return $ RPAs n rp- Paren e -> do- rp <- checkRPattern e- return $ RPParen rp- _ -> do- p <- checkPattern e- return $ RPPat p--checkRPatOp :: QOp -> P RPatOp-checkRPatOp o@(QVarOp (UnQual (Symbol sym))) =- case sym of- "*" -> return RPStar- "*!" -> return RPStarG- "+" -> return RPPlus- "+!" -> return RPPlusG- "?" -> return RPOpt- "?!" -> return RPOptG- _ -> rpOpFail o-checkRPatOp o = rpOpFail o--rpOpFail sym = fail $ "Unrecognized regular pattern operator: " ++ show sym--fixRPOpPrec :: RPat -> RPat-fixRPOpPrec rp = case rp of- RPOp rp rpop -> fPrecOp rp (flip RPOp rpop)- RPEither rp1 rp2 -> RPEither (fixRPOpPrec rp1) (fixRPOpPrec rp2)- RPSeq rps -> RPSeq $ map fixRPOpPrec rps- RPCAs n rp -> RPCAs n $ fixRPOpPrec rp- RPAs n rp -> RPAs n $ fixRPOpPrec rp- RPParen rp -> RPParen $ fixRPOpPrec rp- _ -> rp-- where fPrecOp :: RPat -> (RPat -> RPat) -> RPat- fPrecOp (RPOp rp rpop) f = fPrecOp rp (f . flip RPOp rpop)- fPrecOp (RPCAs n rp) f = fPrecAs rp f (RPCAs n)- fPrecOp (RPAs n rp) f = fPrecAs rp f (RPAs n)- fPrecOp rp f = f $ fixRPOpPrec rp- fPrecAs :: RPat -> (RPat -> RPat) -> (RPat -> RPat) -> RPat- fPrecAs (RPCAs n rp) f g = fPrecAs rp f (g . RPCAs n)- fPrecAs (RPAs n rp) f g = fPrecAs rp f (g . RPAs n)- fPrecAs rp f g = g . f $ fixRPOpPrec rp---mkChildrenPat :: [Pat] -> [Pat]-mkChildrenPat ps = mkCPAux ps []- where mkCPAux :: [Pat] -> [Pat] -> [Pat]- mkCPAux [] qs = reverse qs- mkCPAux (p:ps) qs = case p of- (PRPat rps) -> [mkCRP ps (reverse rps ++ map RPPat qs)]- _ -> mkCPAux ps (p:qs)-- mkCRP :: [Pat] -> [RPat] -> Pat- mkCRP [] rps = PXRPats $ reverse rps- mkCRP (p:ps) rps = case p of- (PXRPats rqs) -> mkCRP ps (reverse rqs ++ rps)- _ -> mkCRP ps (RPPat p : rps)---------------------------------------------------------------------------------- Check Expression Syntax--checkExpr :: PExp -> P S.Exp-checkExpr e = case e of- Var v -> return $ S.Var v- IPVar v -> return $ S.IPVar v- Con c -> return $ S.Con c- Lit l -> return $ S.Lit l- InfixApp e1 op e2 -> check2Exprs e1 e2 (flip S.InfixApp op)- App e1 e2 -> check2Exprs e1 e2 S.App- NegApp e -> check1Expr e S.NegApp- Lambda loc ps e -> check1Expr e (S.Lambda loc ps)- Let bs e -> check1Expr e (S.Let bs)- If e1 e2 e3 -> check3Exprs e1 e2 e3 S.If- Case e alts -> do- e <- checkExpr e- return (S.Case e alts)- Do stmts -> checkDo stmts >> return (S.Do stmts)- MDo stmts -> checkDo stmts >> return (S.MDo stmts)--- Tuple es -> checkManyExprs es S.Tuple- TupleSection mes -> if all ((/=) Nothing) mes- then checkManyExprs (map fromJust mes) S.Tuple- else do checkEnabled TupleSections- mes' <- mapM mCheckExpr mes- return $ S.TupleSection mes'-- List es -> checkManyExprs es S.List- -- Since we don't parse things as left sections, we need to mangle them into that.- Paren e -> case e of- PostOp e1 op -> check1Expr e1 (flip S.LeftSection op)- PreOp op e2 -> check1Expr e2 (S.RightSection op)- _ -> check1Expr e S.Paren--- RightSection op e -> check1Expr e (S.RightSection op)- RecConstr c fields -> do- fields <- mapM checkField fields- return (S.RecConstr c fields)- RecUpdate e fields -> do- fields <- mapM checkField fields- e <- checkExpr e- return (S.RecUpdate e fields)- EnumFrom e -> check1Expr e S.EnumFrom- EnumFromTo e1 e2 -> check2Exprs e1 e2 S.EnumFromTo- EnumFromThen e1 e2 -> check2Exprs e1 e2 S.EnumFromThen- EnumFromThenTo e1 e2 e3 -> check3Exprs e1 e2 e3 S.EnumFromThenTo- -- a parallel list comprehension, which could be just a simple one- ParComp e qualss -> do- e <- checkExpr e- case qualss of- [quals] -> return (S.ListComp e quals)- _ -> return (S.ParComp e qualss)- ExpTypeSig loc e ty -> do- e <- checkExpr e- return (S.ExpTypeSig loc e ty)-- --Template Haskell- BracketExp e -> return $ S.BracketExp e- SpliceExp e -> return $ S.SpliceExp e- TypQuote q -> return $ S.TypQuote q- VarQuote q -> return $ S.VarQuote q- QuasiQuote n q -> return $ S.QuasiQuote n q-- -- Hsx- XTag s n attrs mattr cs -> do attrs <- mapM checkAttr attrs- cs <- mapM checkExpr cs- mattr <- maybe (return Nothing)- (\e -> checkExpr e >>= return . Just)- mattr- return $ S.XTag s n attrs mattr cs- XETag s n attrs mattr -> do attrs <- mapM checkAttr attrs- mattr <- maybe (return Nothing)- (\e -> checkExpr e >>= return . Just)- mattr- return $ S.XETag s n attrs mattr- XPcdata p -> return $ S.XPcdata p- XExpTag e -> do e <- checkExpr e- return $ S.XExpTag e- -- Pragmas- CorePragma s e -> check1Expr e (S.CorePragma s)- SCCPragma s e -> check1Expr e (S.SCCPragma s)- GenPragma s xx yy e -> check1Expr e (S.GenPragma s xx yy)--- UnknownExpPragma n s -> return $ S.UnknownExpPragma n s-- -- Arrows- Proc p e -> do e <- checkExpr e- return $ S.Proc p e- LeftArrApp e1 e2 -> check2Exprs e1 e2 S.LeftArrApp- RightArrApp e1 e2 -> check2Exprs e1 e2 S.RightArrApp- LeftArrHighApp e1 e2 -> check2Exprs e1 e2 S.LeftArrHighApp- RightArrHighApp e1 e2 -> check2Exprs e1 e2 S.RightArrHighApp-- _ -> fail $ "Parse error in expression: " ++ show e--checkAttr :: ParseXAttr -> P S.XAttr-checkAttr (XAttr n v) = do v <- checkExpr v- return $ S.XAttr n v--checkDo [] = error "Parse error: Last statement in a do-block must be an expression"-checkDo [Qualifier _] = return ()-checkDo (_:xs) = checkDo xs---- type signature for polymorphic recursion!!-check1Expr :: PExp -> (S.Exp -> a) -> P a-check1Expr e1 f = do- e1 <- checkExpr e1- return (f e1)--check2Exprs :: PExp -> PExp -> (S.Exp -> S.Exp -> a) -> P a-check2Exprs e1 e2 f = do- e1 <- checkExpr e1- e2 <- checkExpr e2- return (f e1 e2)--check3Exprs :: PExp -> PExp -> PExp -> (S.Exp -> S.Exp -> S.Exp -> a) -> P a-check3Exprs e1 e2 e3 f = do- e1 <- checkExpr e1- e2 <- checkExpr e2- e3 <- checkExpr e3- return (f e1 e2 e3)--checkManyExprs :: [PExp] -> ([S.Exp] -> a) -> P a-checkManyExprs es f = do- es <- mapM checkExpr es- return (f es)--mCheckExpr :: Maybe PExp -> P (Maybe S.Exp)-mCheckExpr Nothing = return Nothing-mCheckExpr (Just e) = checkExpr e >>= return . Just--checkRuleExpr :: PExp -> P S.Exp-checkRuleExpr = checkExpr--readTool :: Maybe String -> Maybe Tool-readTool = fmap readC- where readC str = case str of- "GHC" -> GHC- "HUGS" -> HUGS- "NHC98" -> NHC98- "YHC" -> YHC- "HADDOCK" -> HADDOCK- _ -> UnknownTool str--{--checkAlt :: Alt -> P Alt-checkAlt (Alt loc p galts bs) = do- galts <- checkGAlts galts- return (Alt loc p galts bs)--checkGAlts :: GuardedAlts -> P GuardedAlts-checkGAlts (UnGuardedAlt e) = check1Expr e UnGuardedAlt-checkGAlts (GuardedAlts galts) = do- galts <- mapM checkGAlt galts- return (GuardedAlts galts)--checkGAlt :: GuardedAlt -> P GuardedAlt-checkGAlt (GuardedAlt loc g e) = check1Expr e (GuardedAlt loc g)--checkStmt :: Stmt -> P Stmt-checkStmt (Generator loc p e) = check1Expr e (Generator loc p)-checkStmt (Qualifier e) = check1Expr e Qualifier-checkStmt s@(LetStmt _) = return s--}-checkField :: PFieldUpdate -> P S.FieldUpdate-checkField (FieldUpdate n e) = check1Expr e (S.FieldUpdate n)-checkField (FieldPun n) = return $ S.FieldPun n-checkField (FieldWildcard) = return S.FieldWildcard--getGConName :: S.Exp -> P QName-getGConName (S.Con n) = return n-getGConName (S.List []) = return list_cons_name-getGConName _ = fail "Expression in reification is not a name"---------------------------------------------------------------------------------- Check Equation Syntax--checkValDef :: SrcLoc -> PExp -> Maybe S.Type -> Rhs -> Binds -> P Decl-checkValDef srcloc lhs optsig rhs whereBinds = do- mlhs <- isFunLhs lhs []- case mlhs of- Just (f,es) -> do- ps <- mapM checkPattern es- case optsig of -- only pattern bindings can have signatures- Nothing -> return (FunBind [Match srcloc f ps optsig rhs whereBinds])- Just _ -> fail "Cannot give an explicit type signature to a function binding"- Nothing -> do- lhs <- checkPattern lhs- return (PatBind srcloc lhs optsig rhs whereBinds)---- A variable binding is parsed as an PatBind.--isFunLhs :: PExp -> [PExp] -> P (Maybe (Name, [PExp]))-isFunLhs (InfixApp l (QVarOp (UnQual op)) r) es- | op == (Symbol "!") = do- exts <- getExtensions- if BangPatterns `elem` exts- then let (b,bs) = splitBang r []- in isFunLhs l (BangPat b : bs ++ es)- else return $ Just (op, l:r:es) -- It's actually a definition of the operator !- | otherwise = return $ Just (op, l:r:es)-isFunLhs (App (Var (UnQual f)) e) es = return $ Just (f, e:es)---isFunLhs (App (Paren f) e) es = isFunLhs f (e:es)-isFunLhs (App f e) es = isFunLhs f (e:es)-isFunLhs (Var (UnQual f)) es@(_:_) = return $ Just (f, es)-isFunLhs (Paren f) es@(_:_) = isFunLhs f es-isFunLhs _ _ = return Nothing---- Separating between signature declarations and value definitions in--- a post-processing step--checkSigVar :: PExp -> P Name-checkSigVar (Var (UnQual n)) = return n-checkSigVar e = fail $ "Left-hand side of type signature is not a variable: " ++ show e---------------------------------------------------------------------------------- In a class or instance body, a pattern binding must be of a variable.--checkClassBody :: [ClassDecl] -> P [ClassDecl]-checkClassBody decls = do- mapM_ checkClassMethodDef decls- return decls- where checkClassMethodDef (ClsDecl decl) = checkMethodDef decl- checkClassMethodDef _ = return ()--checkInstBody :: [InstDecl] -> P [InstDecl]-checkInstBody decls = do- mapM_ checkInstMethodDef decls- return decls- where checkInstMethodDef (InsDecl decl) = checkMethodDef decl- checkInstMethodDef _ = return ()--checkMethodDef :: Decl -> P ()-checkMethodDef (PatBind _ (PVar _) _ _ _) = return ()-checkMethodDef (PatBind loc _ _ _ _) =- fail "illegal method definition" `atSrcLoc` loc-checkMethodDef _ = return ()---------------------------------------------------------------------------------- Check that an identifier or symbol is unqualified.--- For occasions when doing this in the grammar would cause conflicts.--checkUnQual :: QName -> P Name-checkUnQual (Qual _ _) = fail "Illegal qualified name"-checkUnQual (UnQual n) = return n-checkUnQual (Special _) = fail "Illegal special name"---------------------------------------------------------------------------------- Check that two xml tag names are equal--- Could use Eq directly, but I am not sure whether <dom:name>...</name>--- would be valid, in that case Eq won't work. TODO--checkEqNames :: XName -> XName -> P XName-checkEqNames n@(XName n1) (XName n2)- | n1 == n2 = return n- | otherwise = fail "names in matching xml tags are not equal"-checkEqNames n@(XDomName d1 n1) (XDomName d2 n2)- | n1 == n2 && d1 == d2 = return n- | otherwise = fail "names in matching xml tags are not equal"-checkEqNames _ _ = fail "names in matching xml tags are not equal"----------------------------------------------------------------------------------- Miscellaneous utilities--checkPrec :: Integer -> P Int-checkPrec i | 0 <= i && i <= 9 = return (fromInteger i)-checkPrec i | otherwise = fail ("Illegal precedence " ++ show i)--mkRecConstrOrUpdate :: PExp -> [PFieldUpdate] -> P PExp-mkRecConstrOrUpdate (Con c) fs = return (RecConstr c fs)-mkRecConstrOrUpdate e fs@(_:_) = return (RecUpdate e fs)-mkRecConstrOrUpdate _ _ = fail "Empty record update"---------------------------------------------------------------------------------- Reverse a list of declarations, merging adjacent FunBinds of the--- same name and checking that their arities match.--checkRevDecls :: [Decl] -> P [Decl]-checkRevDecls = mergeFunBinds []- where- mergeFunBinds revDs [] = return revDs- mergeFunBinds revDs (FunBind ms1@(Match _ name ps _ _ _:_):ds1) =- mergeMatches ms1 ds1- where- arity = length ps- mergeMatches ms' (FunBind ms@(Match loc name' ps' _ _ _:_):ds)- | name' == name =- if length ps' /= arity- then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")- `atSrcLoc` loc- else mergeMatches (ms++ms') ds- mergeMatches ms' ds = mergeFunBinds (FunBind ms':revDs) ds- mergeFunBinds revDs (d:ds) = mergeFunBinds (d:revDs) ds--checkRevClsDecls :: [ClassDecl] -> P [ClassDecl]-checkRevClsDecls = mergeClsFunBinds []- where- mergeClsFunBinds revDs [] = return revDs- mergeClsFunBinds revDs (ClsDecl (FunBind ms1@(Match _ name ps _ _ _:_)):ds1) =- mergeMatches ms1 ds1- where- arity = length ps- mergeMatches ms' (ClsDecl (FunBind ms@(Match loc name' ps' _ _ _:_)):ds)- | name' == name =- if length ps' /= arity- then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")- `atSrcLoc` loc- else mergeMatches (ms++ms') ds- mergeMatches ms' ds = mergeClsFunBinds (ClsDecl (FunBind ms'):revDs) ds- mergeClsFunBinds revDs (d:ds) = mergeClsFunBinds (d:revDs) ds--checkRevInstDecls :: [InstDecl] -> P [InstDecl]-checkRevInstDecls = mergeInstFunBinds []- where- mergeInstFunBinds revDs [] = return revDs- mergeInstFunBinds revDs (InsDecl (FunBind ms1@(Match _ name ps _ _ _:_)):ds1) =- mergeMatches ms1 ds1- where- arity = length ps- mergeMatches ms' (InsDecl (FunBind ms@(Match loc name' ps' _ _ _:_)):ds)- | name' == name =- if length ps' /= arity- then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")- `atSrcLoc` loc- else mergeMatches (ms++ms') ds- mergeMatches ms' ds = mergeInstFunBinds (InsDecl (FunBind ms'):revDs) ds- mergeInstFunBinds revDs (d:ds) = mergeInstFunBinds (d:revDs) ds--------------------------------------------------------------------- Check that newtype declarations have--- the right number (1) of constructors--checkDataOrNew :: DataOrNew -> [a] -> P ()-checkDataOrNew NewType [x] = return ()-checkDataOrNew DataType _ = return ()-checkDataOrNew _ _ = fail "newtype declaration must have exactly one constructor."--checkSimpleType :: PType -> P (Name, [TyVarBind])-checkSimpleType t = checkSimple "test" t []-------------------------------------------- Check actual types--checkType :: PType -> P S.Type-checkType t = checkT t False--checkT :: PType -> Bool -> P S.Type-checkT t simple = case t of- TyForall tvs@Nothing cs pt -> do- when (simple) $ checkEnabled ExplicitForall- ctxt <- checkContext cs- check1Type pt (S.TyForall Nothing ctxt)- TyForall tvs cs pt -> do- checkEnabled ExplicitForall- ctxt <- checkContext cs- check1Type pt (S.TyForall tvs ctxt)- TyFun at rt -> check2Types at rt S.TyFun- TyTuple b pts -> checkTypes pts >>= return . S.TyTuple b- TyList pt -> check1Type pt S.TyList- TyApp ft at -> check2Types ft at S.TyApp- TyVar n -> return $ S.TyVar n- TyCon n -> do- when (isSymbol n) $ checkEnabled TypeOperators- return $ S.TyCon n- TyParen pt -> check1Type pt S.TyParen- -- TyPred cannot be a valid type- -- Here we know that t will be used as an actual type (and not a data constructor)- -- so we can check that TypeOperators are enabled.- TyInfix at op bt -> checkEnabled TypeOperators >> check2Types at bt (flip S.TyInfix op)- TyKind pt k -> check1Type pt (flip S.TyKind k)--check1Type :: PType -> (S.Type -> S.Type) -> P S.Type-check1Type pt f = checkT pt True >>= return . f--check2Types :: PType -> PType -> (S.Type -> S.Type -> S.Type) -> P S.Type-check2Types at bt f = checkT at True >>= \a -> checkT bt True >>= \b -> return (f a b)--checkTypes :: [PType] -> P [S.Type]-checkTypes = mapM (flip checkT True)-------------------------------------------- Converting a complete page--pageFun :: SrcLoc -> S.Exp -> Decl-pageFun loc e = PatBind loc namePat Nothing rhs (BDecls [])- where namePat = PVar $ Ident "page"- rhs = UnGuardedRhs e--mkPage :: Module -> SrcLoc -> S.Exp -> P Module-mkPage (Module src md os warn exps imps decls) loc xml = do- let page = pageFun loc xml- return $ Module src md os warn exps imps (decls ++ [page])--mkPageModule :: [OptionPragma] -> S.Exp -> P Module-mkPageModule os xml = do- do loc <- case xml of- S.XTag l _ _ _ _ -> return l- S.XETag l _ _ _ -> return l- _ -> fail "Will not happen since mkPageModule is only called on XML expressions"- mod <- getModuleName- return $ (Module- loc- (ModuleName mod)- os- Nothing- (Just [EVar $ UnQual $ Ident "page"])- []- [pageFun loc xml])-------------------------------------------- Handle dash-identifiers--mkDVar :: [String] -> String-mkDVar = concat . intersperse "-"--mkDVarExpr :: [String] -> PExp-mkDVarExpr = foldl1 (\x y -> InfixApp x (op $ sym "-") y) . map (Var . UnQual . name)-------------------------------------------- Combine adjacent for-alls.------ A valid type must have one for-all at the top of the type, or of the fn arg types--mkTyForall :: Maybe [TyVarBind] -> PContext -> PType -> PType-mkTyForall mtvs [] ty = mk_forall_ty mtvs ty-mkTyForall mtvs ctxt ty = TyForall mtvs ctxt ty---- mk_forall_ty makes a pure for-all type (no context)-mk_forall_ty (Just []) ty = ty -- Explicit for-all with no tyvars-mk_forall_ty mtvs1 (TyForall mtvs2 ctxt ty) = mkTyForall (mtvs1 `plus` mtvs2) ctxt ty-mk_forall_ty mtvs1 ty = TyForall mtvs1 [] ty--mtvs1 `plus` Nothing = mtvs1-Nothing `plus` mtvs2 = mtvs2-(Just tvs1) `plus` (Just tvs2) = Just (tvs1 ++ tvs2)-------------------------------------------- Expressions as we parse them (and patters, and regular patterns)--data PExp- = Var QName -- ^ variable- | IPVar IPName -- ^ implicit parameter variable- | Con QName -- ^ data constructor- | Lit Literal -- ^ literal constant- | InfixApp PExp QOp PExp -- ^ infix application- | App PExp PExp -- ^ ordinary application- | NegApp PExp -- ^ negation expression @-@ /exp/- | Lambda SrcLoc [Pat] PExp -- ^ lambda expression- | Let Binds PExp -- ^ local declarations with @let@- | If PExp PExp PExp -- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/- | Case PExp [Alt] -- ^ @case@ /exp/ @of@ /alts/- | Do [Stmt] -- ^ @do@-expression:- -- the last statement in the list- -- should be an expression.- | MDo [Stmt] -- ^ @mdo@-expression--- | Tuple [PExp] -- ^ tuple expression- | TupleSection [Maybe PExp] -- ^ tuple section expression, e.g. @(,,3)@- | List [PExp] -- ^ list expression- | Paren PExp -- ^ parenthesized expression--- RightSection QOp PExp -- ^ right section @(@/qop/ /exp/@)@- | RecConstr QName [PFieldUpdate]- -- ^ record construction expression- | RecUpdate PExp [PFieldUpdate]- -- ^ record update expression- | EnumFrom PExp -- ^ unbounded arithmetic sequence,- -- incrementing by 1- | EnumFromTo PExp PExp -- ^ bounded arithmetic sequence,- -- incrementing by 1- | EnumFromThen PExp PExp -- ^ unbounded arithmetic sequence,- -- with first two elements given- | EnumFromThenTo PExp PExp PExp- -- ^ bounded arithmetic sequence,- -- with first two elements given- | ParComp PExp [[QualStmt]] -- ^ parallel list comprehension- | ExpTypeSig SrcLoc PExp S.Type- -- ^ expression type signature- | AsPat Name PExp -- ^ patterns only- | WildCard -- ^ patterns only- | IrrPat PExp -- ^ patterns only---- Post-ops for parsing left sections and regular patterns. Not to be left in the final tree.- | PostOp PExp QOp -- ^ post-ops- | PreOp QOp PExp -- ^ pre-ops---- View patterns- | ViewPat PExp PExp -- ^ patterns only---- HaRP- | SeqRP [PExp] -- ^ regular patterns only- | GuardRP PExp [Stmt] -- ^ regular patterns only- | EitherRP PExp PExp -- ^ regular patterns only- | CAsRP Name PExp -- ^ regular patterns only---- Template Haskell- | VarQuote QName -- ^ 'x- | TypQuote QName -- ^ ''T- | BracketExp Bracket- | SpliceExp Splice- | QuasiQuote String String -- ^ [$...|...]---- Hsx- | XTag SrcLoc XName [ParseXAttr] (Maybe PExp) [PExp]- | XETag SrcLoc XName [ParseXAttr] (Maybe PExp)- | XPcdata String- | XExpTag PExp- | XRPats [PExp]---- Pragmas- | CorePragma String PExp- | SCCPragma String PExp- | GenPragma String (Int, Int) (Int, Int) PExp--- | UnknownExpPragma String String---- Generics- | ExplTypeArg QName S.Type -- ^ f {| Int |} x = ...---- Bang Patterns- | BangPat PExp -- ^ f !a = ...---- Arrows- | Proc Pat PExp- | LeftArrApp PExp PExp- | RightArrApp PExp PExp- | LeftArrHighApp PExp PExp- | RightArrHighApp PExp PExp- deriving (Eq,Show)--data PFieldUpdate- = FieldUpdate QName PExp- | FieldPun Name- | FieldWildcard- deriving (Eq,Show)--data ParseXAttr = XAttr XName PExp- deriving (Eq,Show)--p_unit_con :: PExp-p_unit_con = Con unit_con_name--p_tuple_con :: Boxed -> Int -> PExp-p_tuple_con b i = Con (tuple_con_name b i)--p_unboxed_singleton_con :: PExp-p_unboxed_singleton_con = Con unboxed_singleton_con_name--type PContext = [PAsst]--data PType- = TyForall- (Maybe [TyVarBind])- PContext- PType- | TyFun PType PType -- ^ function type- | TyTuple Boxed [PType] -- ^ tuple type, possibly boxed- | TyList PType -- ^ list syntax, e.g. [a], as opposed to [] a- | TyApp PType PType -- ^ application of a type constructor- | TyVar Name -- ^ type variable- | TyCon QName -- ^ named type or type constructor- | TyParen PType -- ^ type surrounded by parentheses- | TyPred PAsst -- ^ assertion of an implicit parameter- | TyInfix PType QName PType -- ^ infix type constructor- | TyKind PType Kind -- ^ type with explicit kind signature- deriving (Eq, Show)--data PAsst = ClassA QName [PType]- | InfixA PType QName PType- | IParam IPName PType- | EqualP PType PType- deriving (Eq, Show)--unit_tycon, fun_tycon, list_tycon, unboxed_singleton_tycon :: PType-unit_tycon = TyCon unit_tycon_name-fun_tycon = TyCon fun_tycon_name-list_tycon = TyCon list_tycon_name-unboxed_singleton_tycon = TyCon unboxed_singleton_tycon_name--tuple_tycon :: Boxed -> Int -> PType-tuple_tycon b i = TyCon (tuple_tycon_name b i)+-- Copyright : (c) Niklas Broberg 2004-2009,+-- (c) The GHC Team, 1997-2000+-- License : BSD-style (see the file LICENSE.txt)+--+-- Maintainer : Niklas Broberg, d00nibro@chalmers.se+-- Stability : stable+-- Portability : portable+--+-- Utilities for the Haskell-exts parser.+--+-----------------------------------------------------------------------------++module Language.Haskell.Exts.ParseUtils (+ splitTyConApp -- PType -> P (Name,[Type])+ , checkEnabled -- (Show e, Enabled e) => e -> P ()+ , checkPatternGuards -- [Stmt] -> P ()+ , mkRecConstrOrUpdate -- PExp -> [PFieldUpdate] -> P Exp+ , checkPrec -- Integer -> P Int+ , checkPContext -- PType -> P PContext+ , checkContext -- PContext -> P Context+ , checkAssertion -- PType -> P PAsst+ , checkDataHeader -- PType -> P (Context,Name,[TyVarBind])+ , checkClassHeader -- PType -> P (Context,Name,[TyVarBind])+ , checkInstHeader -- PType -> P (Context,QName,[Type])+ , checkDeriving -- [PType] -> P [Deriving]+ , checkPattern -- PExp -> P Pat+ , checkExpr -- PExp -> P Exp+ , checkType -- PType -> P Type+ , checkValDef -- SrcLoc -> PExp -> Maybe Type -> Rhs -> Binds -> P Decl+ , checkClassBody -- [ClassDecl] -> P [ClassDecl]+ , checkInstBody -- [InstDecl] -> P [InstDecl]+ , checkUnQual -- QName -> P Name+ , checkRevDecls -- [Decl] -> P [Decl]+ , checkRevClsDecls -- [ClassDecl] -> P [ClassDecl]+ , checkRevInstDecls -- [InstDecl] -> P [InstDecl]+ , checkDataOrNew -- DataOrNew -> [a] -> P ()+ , checkSimpleType -- PType -> P (Name, [TyVarBind])+ , checkSigVar -- PExp -> P Name+ , getGConName -- S.Exp -> P QName+ , mkTyForall -- Maybe [TyVarBind] -> PContext -> PType -> PType+ -- HaRP+ , checkRPattern -- PExp -> P RPat+ -- Hsx+ , checkEqNames -- XName -> XName -> P XName+ , checkPageModule+ , checkHybridModule+ , mkDVar -- [String] -> String+ -- Pragmas+ , checkRuleExpr -- PExp -> P Exp+ , readTool -- Maybe String -> Maybe Tool++ -- Parsed expressions and types+ , PExp(..), PFieldUpdate(..), ParseXAttr(..), PType(..), PContext, PAsst(..)+ , p_unit_con -- PExp+ , p_tuple_con -- Boxed -> Int -> PExp+ , p_unboxed_singleton_con -- PExp+ ) where++import Language.Haskell.Exts.Annotated.Syntax hiding ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) )+import qualified Language.Haskell.Exts.Annotated.Syntax as S ( Type(..), Asst(..), Exp(..), FieldUpdate(..), XAttr(..), Context(..) )+import Language.Haskell.Exts.Annotated.Build++import Language.Haskell.Exts.ParseSyntax+import Language.Haskell.Exts.ParseMonad+import Language.Haskell.Exts.Pretty+import Language.Haskell.Exts.SrcLoc+import Language.Haskell.Exts.Extension+import Language.Haskell.Exts.ExtScheme++import Data.List (intersperse)+import Data.Maybe (fromJust)+import Control.Monad (when,liftM)++--- import Debug.Trace (trace)++type L = SrcSpanInfo+type S = SrcSpan++splitTyConApp :: PType L -> P (Name L, [S.Type L])+splitTyConApp t0 = do+ (n, pts) <- split t0 []+ ts <- mapM checkType pts+ return (n,ts)+ where+ split :: PType L -> [PType L] -> P (Name L, [PType L])+ split (TyApp _ t u) ts = split t (u:ts)+ split (TyCon _ (UnQual _ t)) ts = return (t,ts)+ split (TyInfix l a op b) ts = split (TyCon l op) (a:b:ts)+ split _ _ = fail "Illegal data/newtype declaration"++-----------------------------------------------------------------------------+-- Checking for extensions++checkEnabled :: (Show e, Enabled e) => e -> P ()+checkEnabled e = do+ exts <- getExtensions+ if isEnabled e exts+ then return ()+ else fail $ show e ++ " is not enabled"++checkPatternGuards :: [Stmt L] -> P ()+checkPatternGuards [Qualifier _ _] = return ()+checkPatternGuards _ = checkEnabled PatternGuards++-----------------------------------------------------------------------------+-- Checking contexts++-- Check that a context is syntactically correct. Takes care of+-- checking for MPTCs, TypeOperators, TypeFamilies (for eq constraints)+-- and ImplicitParameters, but leaves checking of the class assertion+-- parameters for later.+checkPContext :: PType L -> P (PContext L)+checkPContext (TyTuple l Boxed ts) =+ mapM checkAssertion ts >>= return . CxTuple l+checkPContext (TyCon l (Special _ (UnitCon _))) =+ return $ CxEmpty l+checkPContext (TyParen l t) = do+ c <- checkPContext t+ return $ CxParen l c+checkPContext t = do+ c <- checkAssertion t+ return $ CxSingle (ann c) c++------------------------------------------------------------------------------------------------------------------- WORKING HERE++-- Check a single assertion according to the above, still leaving+-- the class assertion parameters for later.+checkAssertion :: PType L -> P (PAsst L)+-- We cannot even get here unless ImplicitParameters is enabled.+checkAssertion (TyPred _ p@(IParam _ _ _)) = return p+-- We cannot even get here unless TypeFamilies is enabled.+checkAssertion (TyPred _ p@(EqualP _ _ _)) = return p+checkAssertion t = checkAssertion' id [] t+ where -- class assertions must have at least one argument+ checkAssertion' fl ts@(_:xs) (TyCon l c) = do+ when (not $ null xs) $ checkEnabled MultiParamTypeClasses+ when (isSymbol c) $ checkEnabled TypeOperators+ return $ ClassA (fl l) c ts+ checkAssertion' fl ts (TyApp l a t) = do+ -- no check on t at this stage+ checkAssertion' (const (fl l)) (t:ts) a+ checkAssertion' fl ts (TyInfix l a op b) = do+ -- infix operators require TypeOperators+ checkEnabled TypeOperators+ return $ InfixA (fl l) a op b+ checkAssertion' fl ts (TyParen l t) =+ checkAssertion' (const (fl l)) ts t+ checkAssertion' _ _ _ = fail "Illegal class assertion"++isSymbol :: QName L -> Bool+isSymbol (UnQual _ (Symbol _ _)) = True+isSymbol (Qual _ _ (Symbol _ _)) = True+isSymbol _ = False+++-- Checks simple contexts for class and instance+-- headers. If FlexibleContexts is enabled then+-- anything goes, otherwise only tyvars are allowed.+checkSContext :: Maybe (PContext L) -> P (Maybe (S.Context L))+checkSContext (Just ctxt) = case ctxt of+ CxEmpty l -> return $ Just $ S.CxEmpty l+ CxSingle l a -> checkAsst True a >>= return . Just . S.CxSingle l+ CxTuple l as -> mapM (checkAsst True) as >>= return . Just . S.CxTuple l+ CxParen l cx -> checkSContext (Just cx) >>= return . fmap (S.CxParen l)+checkSContext _ = return Nothing++-- Checks ordinary contexts for sigtypes and data type+-- declarations. If FlexibleContexts is enabled then+-- anything goes, otherwise only tyvars OR tyvars+-- applied to types are allowed.+checkContext :: Maybe (PContext L) -> P (Maybe (S.Context L))+checkContext (Just ctxt) = case ctxt of+ CxEmpty l -> return $ Just $ S.CxEmpty l+ CxSingle l a -> checkAsst False a >>= return . Just . S.CxSingle l+ CxTuple l as -> mapM (checkAsst False) as >>= return . Just . S.CxTuple l+ CxParen l cx -> checkSContext (Just cx) >>= return . fmap (S.CxParen l)+checkContext _ = return Nothing++checkAsst :: Bool -> PAsst L -> P (S.Asst L)+checkAsst isSimple asst =+ case asst of+ ClassA l qn pts -> do+ ts <- mapM (checkAsstParam isSimple) pts+ return $ S.ClassA l qn ts+ InfixA l a op b -> do+ [a,b] <- mapM (checkAsstParam isSimple) [a,b]+ return $ S.InfixA l a op b+ IParam l ipn pt -> do+ t <- checkType pt+ return $ S.IParam l ipn t+ EqualP l pa pb -> do+ a <- checkType pa+ b <- checkType pb+ return $ S.EqualP l a b++checkAsstParam :: Bool -> PType L -> P (S.Type L)+checkAsstParam isSimple t = do+ exts <- getExtensions+ if FlexibleContexts `elem` exts+ then checkType t+ else case t of+ TyVar l n -> return $ S.TyVar l n+ TyApp l pf pt | not isSimple -> do+ f <- checkAsstParam isSimple pf+ t <- checkType pt+ return $ S.TyApp l f t+ _ -> fail "Malformed context: FlexibleContexts not enabled"++-----------------------------------------------------------------------------+-- Checking Headers+++checkDataHeader :: PType L -> P (Maybe (S.Context L), DeclHead L)+checkDataHeader (TyForall _ Nothing cs t) = do+ dh <- checkSimple "data/newtype" t []+ cs <- checkContext cs+ return (cs,dh)+checkDataHeader t = do+ dh <- checkSimple "data/newtype" t []+ return (Nothing,dh)++checkClassHeader :: PType L -> P (Maybe (S.Context L), DeclHead L)+checkClassHeader (TyForall _ Nothing cs t) = do+ dh <- checkSimple "class" t []+ cs <- checkSContext cs+ return (cs,dh)+checkClassHeader t = do+ dh <- checkSimple "class" t []+ return (Nothing,dh)++checkSimple :: String -> PType L -> [TyVarBind L] -> P (DeclHead L)+checkSimple kw (TyApp _ l t) xs | isTyVarBind t = checkSimple kw l (toTyVarBind t : xs)+checkSimple _ (TyInfix l t1 (UnQual _ t) t2) []+ | isTyVarBind t1 && isTyVarBind t2 =+ checkEnabled TypeOperators >> return (DHInfix l (toTyVarBind t1) t (toTyVarBind t2))+checkSimple _kw (TyCon l (UnQual _ t)) xs = do+ case t of+ Symbol _ _ -> checkEnabled TypeOperators+ _ -> return ()+ return (DHead l t xs)+checkSimple kw (TyParen l t) xs = do+ dh <- checkSimple kw t xs+ return (DHParen l dh)+checkSimple kw _ _ = fail ("Illegal " ++ kw ++ " declaration")++isTyVarBind :: PType L -> Bool+isTyVarBind (TyVar _ _) = True+isTyVarBind (TyKind _ (TyVar _ _) _) = True+isTyVarBind _ = False++toTyVarBind :: PType L -> TyVarBind L+toTyVarBind (TyVar l n) = UnkindedVar l n+toTyVarBind (TyKind l (TyVar _ n) k) = KindedVar l n k++checkInstHeader :: PType L -> P (Maybe (S.Context L), InstHead L)+checkInstHeader (TyForall _ Nothing cs t) = do+ ih <- checkInsts t []+ cs <- checkSContext cs+ return (cs, ih)+checkInstHeader t = do+ ih <- checkInsts t []+ return (Nothing, ih)+++checkInsts :: PType L -> [PType L] -> P (InstHead L)+checkInsts (TyApp _ l t) ts = checkInsts l (t:ts)+checkInsts (TyCon l c) ts = do+ when (isSymbol c) $ checkEnabled TypeOperators+ ts <- checkTypes ts+ return $ IHead l c ts+checkInsts (TyInfix l a op b) [] = do+ checkEnabled TypeOperators+ [ta,tb] <- checkTypes [a,b]+ return $ IHInfix l ta op tb+checkInsts (TyParen l t) [] = checkInsts t [] >>= return . IHParen l+checkInsts _ _ = fail "Illegal instance declaration"++checkDeriving :: [PType L] -> P [InstHead L]+checkDeriving = mapM (flip checkInsts [])++-----------------------------------------------------------------------------+-- Checking Patterns.++-- We parse patterns as expressions and check for valid patterns below,+-- converting the expression into a pattern at the same time.++checkPattern :: PExp L -> P (Pat L)+checkPattern e = checkPat e []++checkPat :: PExp L -> [Pat L] -> P (Pat L)+checkPat (Con l c) args = return (PApp l c args)+checkPat (App l f x) args = do+ x <- checkPat x []+ checkPat f (x:args)+checkPat (InfixApp _ l op r) args+ | op =~= (QVarOp () (UnQual () (Symbol () "!"))) = do+ -- We must have BangPatterns on+ checkEnabled BangPatterns+ let (e,es) = splitBang r []+ ps <- mapM checkPattern (BangPat (ann op) e:es)+ checkPat l (ps++args)+checkPat e [] = case e of+ Var l (UnQual _ x) -> return (PVar l x)+ Lit l lit -> return (PLit l lit)+ InfixApp loc l op r ->+ case op of+ QConOp _ c -> do+ l <- checkPat l []+ r <- checkPat r []+ return (PInfixApp loc l c r)+ QVarOp ppos (UnQual _ (Symbol _ "+")) -> do+ case (l,r) of+ (Var _ (UnQual _ n@(Ident _ _)), Lit _ (Int kpos k _)) -> do+ let pp = srcInfoSpan ppos+ kp = srcInfoSpan kpos+ return (PNPlusK (loc <** [pp,kp]) n k)+ _ -> patFail ""+ _ -> patFail ""+ TupleSection l mes ->+ if not (any ((=~=) Nothing) mes)+ then do ps <- mapM (\e -> checkPat e []) (map fromJust mes)+ return (PTuple l ps)+ else fail "Illegal tuple section in pattern"++ List l es -> do+ ps <- mapM checkRPattern es+ if all isStdPat ps+ then return . PList l $ map stripRP ps+ -- we don't allow truly regular patterns unless the extension is enabled+ else checkEnabled RegularPatterns >> return (PRPat l $ map fixRPOpPrec ps)+ where isStdPat :: RPat L -> Bool+ isStdPat (RPPat _ _) = True+ isStdPat (RPAs _ _ p) = isStdPat p+ isStdPat (RPParen _ p) = isStdPat p+ isStdPat _ = False+ stripRP :: RPat L -> Pat L+ stripRP (RPPat _ p) = p+ stripRP (RPAs l n p) = PAsPat l n (stripRP p)+ stripRP (RPParen l p) = PParen l (stripRP p)+ stripRP _ = error "cannot strip RP wrapper if not all patterns are base"++ Paren l e -> do+ p <- checkPat e []+ return (PParen l p)+ AsPat l n e -> do+ p <- checkPat e []+ return (PAsPat l n p)+ WildCard l -> return (PWildCard l)+ IrrPat l e -> do+ p <- checkPat e []+ return (PIrrPat l p)+ ViewPat l e p -> do+ e <- checkExpr e+ p <- checkPat p []+ return (PViewPat l e p)+ RecConstr l c fs -> do+ fs <- mapM checkPatField fs+ return (PRec l c fs)+ NegApp l1 (Lit l2 lit) -> return (PNeg l1 (PLit l2 lit))+ ExpTypeSig l e t -> do+ -- patterns cannot have signatures unless ScopedTypeVariables is enabled.+ checkEnabled ScopedTypeVariables+ p <- checkPat e []+ return (PatTypeSig l p t)++ -- Hsx+ XTag l n attrs mattr cs -> do+ pattrs <- mapM checkPAttr attrs+ pcs <- mapM (\c -> checkPat c []) cs+ mpattr <- maybe (return Nothing)+ (\e -> do p <- checkPat e []+ return $ Just p)+ mattr+ let cps = mkChildrenPat pcs+ return $ PXTag l n pattrs mpattr cps+ XETag l n attrs mattr -> do+ pattrs <- mapM checkPAttr attrs+ mpattr <- maybe (return Nothing)+ (\e -> do p <- checkPat e []+ return $ Just p)+ mattr+ return $ PXETag l n pattrs mpattr+ XPcdata l pcdata -> return $ PXPcdata l pcdata+ XExpTag l e -> do+ p <- checkPat e []+ return $ PXPatTag l p+ XRPats l es -> do+ rps <- mapM checkRPattern es+ return (PXRPats l $ map fixRPOpPrec rps)++ -- Generics+ ExplTypeArg l qn t -> return $ PExplTypeArg l qn t++ -- QuasiQuotation+ QuasiQuote l n q -> return $ PQuasiQuote l n q++ -- BangPatterns+ BangPat l e -> do+ p <- checkPat e []+ return $ PBangPat l p++ PreOp l (QVarOp _ (UnQual _ (Symbol _ "!"))) e -> do+ checkEnabled BangPatterns+ p <- checkPat e []+ return $ PBangPat l p++ e -> patFail $ prettyPrint e++checkPat e _ = patFail $ prettyPrint e++splitBang :: PExp L -> [PExp L] -> (PExp L, [PExp L])+splitBang (App _ f x) es = splitBang f (x:es)+splitBang e es = (e, es)++checkPatField :: PFieldUpdate L -> P (PatField L)+checkPatField (FieldUpdate l n e) = do+ p <- checkPat e []+ return (PFieldPat l n p)+checkPatField (FieldPun l n) = return (PFieldPun l n)+checkPatField (FieldWildcard l) = return (PFieldWildcard l)++checkPAttr :: ParseXAttr L -> P (PXAttr L)+checkPAttr (XAttr l n v) = do p <- checkPat v []+ return $ PXAttr l n p++patFail :: String -> P a+patFail s = fail $ "Parse error in pattern: " ++ s++checkRPattern :: PExp L -> P (RPat L)+checkRPattern e = case e of+ SeqRP l es -> do+ rps <- mapM checkRPattern es+ return $ RPSeq l rps+ PostOp l e op -> do+ rpop <- checkRPatOp op+ rp <- checkRPattern e+ return $ RPOp l rp rpop+ GuardRP l e gs -> do+ rp <- checkPattern e+ return $ RPGuard l rp gs+ EitherRP l e1 e2 -> do+ rp1 <- checkRPattern e1+ rp2 <- checkRPattern e2+ return $ RPEither l rp1 rp2+ CAsRP l n e -> do+ rp <- checkRPattern e+ return $ RPCAs l n rp+ AsPat l n e -> do+ rp <- checkRPattern e+ return $ RPAs l n rp+ Paren l e -> do+ rp <- checkRPattern e+ return $ RPParen l rp+ _ -> do+ p <- checkPattern e+ return $ RPPat (ann p) p++checkRPatOp :: QOp L -> P (RPatOp L)+checkRPatOp o@(QVarOp l (UnQual _ (Symbol _ sym))) =+ case sym of+ "*" -> return $ RPStar l+ "*!" -> return $ RPStarG l+ "+" -> return $ RPPlus l+ "+!" -> return $ RPPlusG l+ "?" -> return $ RPOpt l+ "?!" -> return $ RPOptG l+ _ -> rpOpFail o+checkRPatOp o = rpOpFail o++rpOpFail sym = fail $ "Unrecognized regular pattern operator: " ++ prettyPrint sym++fixRPOpPrec :: RPat L -> RPat L+fixRPOpPrec rp = case rp of+ RPOp l rp rpop -> fPrecOp rp (flip (RPOp l) rpop)+ RPEither l rp1 rp2 -> RPEither l (fixRPOpPrec rp1) (fixRPOpPrec rp2)+ RPSeq l rps -> RPSeq l $ map fixRPOpPrec rps+ RPCAs l n rp -> RPCAs l n $ fixRPOpPrec rp+ RPAs l n rp -> RPAs l n $ fixRPOpPrec rp+ RPParen l rp -> RPParen l $ fixRPOpPrec rp+ _ -> rp++ where fPrecOp :: RPat L -> (RPat L -> RPat L) -> RPat L+ fPrecOp (RPOp l rp rpop) f = fPrecOp rp (f . flip (RPOp l) rpop)+ fPrecOp (RPCAs l n rp) f = fPrecAs rp f (RPCAs l n)+ fPrecOp (RPAs l n rp) f = fPrecAs rp f (RPAs l n)+ fPrecOp rp f = f $ fixRPOpPrec rp+ fPrecAs :: RPat L -> (RPat L -> RPat L) -> (RPat L -> RPat L) -> RPat L+ fPrecAs (RPCAs l n rp) f g = fPrecAs rp f (g . RPCAs l n)+ fPrecAs (RPAs l n rp) f g = fPrecAs rp f (g . RPAs l n)+ fPrecAs rp f g = g . f $ fixRPOpPrec rp+++mkChildrenPat :: [Pat L] -> [Pat L]+mkChildrenPat ps = mkCPAux ps []+ where mkCPAux :: [Pat L] -> [Pat L] -> [Pat L]+ mkCPAux [] qs = reverse qs+ mkCPAux (p:ps) qs = case p of+ (PRPat l rps) -> [mkCRP l ps (reverse rps ++ map (\q -> RPPat (ann q) q) qs)]+ _ -> mkCPAux ps (p:qs)++ mkCRP :: L -> [Pat L] -> [RPat L] -> Pat L+ mkCRP l [] rps = PXRPats l $ reverse rps+ mkCRP _ (p:ps) rps = case p of+ (PXRPats l rqs) -> mkCRP l ps (reverse rqs ++ rps)+ _ -> mkCRP (ann p) ps (RPPat (ann p) p : rps)++-----------------------------------------------------------------------------+-- Check Expression Syntax++checkExpr :: PExp L -> P (S.Exp L)+checkExpr e = case e of+ Var l v -> return $ S.Var l v+ IPVar l v -> return $ S.IPVar l v+ Con l c -> return $ S.Con l c+ Lit l lit -> return $ S.Lit l lit+ InfixApp l e1 op e2 -> check2Exprs e1 e2 (flip (S.InfixApp l) op)+ App l e1 e2 -> check2Exprs e1 e2 (S.App l)+ NegApp l e -> check1Expr e (S.NegApp l)+ Lambda loc ps e -> check1Expr e (S.Lambda loc ps)+ Let l bs e -> check1Expr e (S.Let l bs)+ If l e1 e2 e3 -> check3Exprs e1 e2 e3 (S.If l)+ Case l e alts -> do+ e <- checkExpr e+ return (S.Case l e alts)+ Do l stmts -> checkDo stmts >> return (S.Do l stmts)+ MDo l stmts -> checkDo stmts >> return (S.MDo l stmts)+ TupleSection l mes -> if not (any ((=~=) Nothing) mes)+ then checkManyExprs (map fromJust mes) (S.Tuple l)+ else do checkEnabled TupleSections+ mes' <- mapM mCheckExpr mes+ return $ S.TupleSection l mes'+++ List l es -> checkManyExprs es (S.List l)+ -- Since we don't parse things as left or right sections, we need to mangle them into that.+ Paren l e -> case e of+ PostOp _ e1 op -> check1Expr e1 (flip (S.LeftSection l) op)+ PreOp _ op e2 -> check1Expr e2 (S.RightSection l op)+ _ -> check1Expr e (S.Paren l)+ RecConstr l c fields -> do+ fields <- mapM checkField fields+ return (S.RecConstr l c fields)+ RecUpdate l e fields -> do+ fields <- mapM checkField fields+ e <- checkExpr e+ return (S.RecUpdate l e fields)+ EnumFrom l e -> check1Expr e (S.EnumFrom l)+ EnumFromTo l e1 e2 -> check2Exprs e1 e2 (S.EnumFromTo l)+ EnumFromThen l e1 e2 -> check2Exprs e1 e2 (S.EnumFromThen l)+ EnumFromThenTo l e1 e2 e3 -> check3Exprs e1 e2 e3 (S.EnumFromThenTo l)+ -- a parallel list comprehension, which could be just a simple one+ ParComp l e qualss -> do+ e <- checkExpr e+ case qualss of+ [quals] -> return (S.ListComp l e quals)+ _ -> return (S.ParComp l e qualss)+ ExpTypeSig loc e ty -> do+ e <- checkExpr e+ return (S.ExpTypeSig loc e ty)++ --Template Haskell+ BracketExp l e -> return $ S.BracketExp l e+ SpliceExp l e -> return $ S.SpliceExp l e+ TypQuote l q -> return $ S.TypQuote l q+ VarQuote l q -> return $ S.VarQuote l q+ QuasiQuote l n q -> return $ S.QuasiQuote l n q++ -- Hsx+ XTag l n attrs mattr cs -> do attrs <- mapM checkAttr attrs+ cs <- mapM checkExpr cs+ mattr <- maybe (return Nothing)+ (\e -> checkExpr e >>= return . Just)+ mattr+ return $ S.XTag l n attrs mattr cs+ XETag l n attrs mattr -> do attrs <- mapM checkAttr attrs+ mattr <- maybe (return Nothing)+ (\e -> checkExpr e >>= return . Just)+ mattr+ return $ S.XETag l n attrs mattr+ XPcdata l p -> return $ S.XPcdata l p+ XExpTag l e -> do e <- checkExpr e+ return $ S.XExpTag l e+ -- Pragmas+ CorePragma l s e -> check1Expr e (S.CorePragma l s)+ SCCPragma l s e -> check1Expr e (S.SCCPragma l s)+ GenPragma l s xx yy e -> check1Expr e (S.GenPragma l s xx yy)+-- UnknownExpPragma n s -> return $ S.UnknownExpPragma n s++ -- Arrows+ Proc l p e -> do e <- checkExpr e+ return $ S.Proc l p e+ LeftArrApp l e1 e2 -> check2Exprs e1 e2 (S.LeftArrApp l)+ RightArrApp l e1 e2 -> check2Exprs e1 e2 (S.RightArrApp l)+ LeftArrHighApp l e1 e2 -> check2Exprs e1 e2 (S.LeftArrHighApp l)+ RightArrHighApp l e1 e2 -> check2Exprs e1 e2 (S.RightArrHighApp l)++ _ -> fail $ "Parse error in expression: " ++ prettyPrint e++checkAttr :: ParseXAttr L -> P (S.XAttr L)+checkAttr (XAttr l n v) = do v <- checkExpr v+ return $ S.XAttr l n v++checkDo [] = fail "Parse error: Last statement in a do-block must be an expression"+checkDo [Qualifier _ _] = return ()+checkDo (_:xs) = checkDo xs++-- type signature for polymorphic recursion!!+check1Expr :: PExp L -> (S.Exp L -> a) -> P a+check1Expr e1 f = do+ e1 <- checkExpr e1+ return (f e1)++check2Exprs :: PExp L -> PExp L -> (S.Exp L -> S.Exp L -> a) -> P a+check2Exprs e1 e2 f = do+ e1 <- checkExpr e1+ e2 <- checkExpr e2+ return (f e1 e2)++check3Exprs :: PExp L -> PExp L -> PExp L -> (S.Exp L -> S.Exp L -> S.Exp L -> a) -> P a+check3Exprs e1 e2 e3 f = do+ e1 <- checkExpr e1+ e2 <- checkExpr e2+ e3 <- checkExpr e3+ return (f e1 e2 e3)++checkManyExprs :: [PExp L] -> ([S.Exp L] -> a) -> P a+checkManyExprs es f = do+ es <- mapM checkExpr es+ return (f es)++mCheckExpr :: Maybe (PExp L) -> P (Maybe (S.Exp L))+mCheckExpr Nothing = return Nothing+mCheckExpr (Just e) = checkExpr e >>= return . Just++checkRuleExpr :: PExp L -> P (S.Exp L)+checkRuleExpr = checkExpr++readTool :: Maybe String -> Maybe Tool+readTool = fmap readC+ where readC str = case str of+ "GHC" -> GHC+ "HUGS" -> HUGS+ "NHC98" -> NHC98+ "YHC" -> YHC+ "HADDOCK" -> HADDOCK+ _ -> UnknownTool str++checkField :: PFieldUpdate L -> P (S.FieldUpdate L)+checkField (FieldUpdate l n e) = check1Expr e (S.FieldUpdate l n)+checkField (FieldPun l n) = return $ S.FieldPun l n+checkField (FieldWildcard l) = return $ S.FieldWildcard l++getGConName :: S.Exp L -> P (QName L)+getGConName (S.Con _ n) = return n+getGConName (S.List l []) = return (list_cons_name l)+getGConName _ = fail "Expression in reification is not a name"++-----------------------------------------------------------------------------+-- Check Equation Syntax++checkValDef :: L -> PExp L -> Maybe (S.Type L) -> Rhs L -> Maybe (Binds L) -> P (Decl L)+checkValDef l lhs optsig rhs whereBinds = do+ mlhs <- isFunLhs lhs []+ case mlhs of+ Just (f,es,b) -> do+ ps <- mapM checkPattern es+ case optsig of -- only pattern bindings can have signatures+ Nothing -> return (FunBind l $+ if b then [Match l f ps rhs whereBinds]+ else let [a,b] = ps in [InfixMatch l a f b rhs whereBinds])+ Just _ -> fail "Cannot give an explicit type signature to a function binding"+ Nothing -> do+ lhs <- checkPattern lhs+ return (PatBind l lhs optsig rhs whereBinds)++-- A variable binding is parsed as a PatBind.++isFunLhs :: PExp L -> [PExp L] -> P (Maybe (Name L, [PExp L], Bool))+isFunLhs (InfixApp _ l (QVarOp loc (UnQual _ op)) r) es+ | op =~= (Symbol () "!") = do+ exts <- getExtensions+ if BangPatterns `elem` exts+ then let (b,bs) = splitBang r []+ in isFunLhs l (BangPat loc b : bs ++ es)+ else return $ Just (op, l:r:es, False) -- It's actually a definition of the operator !+ | otherwise = return $ Just (op, l:r:es, False)+isFunLhs (App _ (Var _ (UnQual _ f)) e) es = return $ Just (f, e:es, True)+isFunLhs (App _ f e) es = isFunLhs f (e:es)+isFunLhs (Var _ (UnQual _ f)) es@(_:_) = return $ Just (f, es, True)+isFunLhs (Paren _ f) es@(_:_) = isFunLhs f es+isFunLhs _ _ = return Nothing++-- Separating between signature declarations and value definitions in+-- a post-processing step++checkSigVar :: PExp L -> P (Name L)+checkSigVar (Var _ (UnQual _ n)) = return n+checkSigVar e = fail $ "Left-hand side of type signature is not a variable: " ++ prettyPrint e++-----------------------------------------------------------------------------+-- In a class or instance body, a pattern binding must be of a variable.++checkClassBody :: [ClassDecl L] -> P [ClassDecl L]+checkClassBody decls = do+ mapM_ checkClassMethodDef decls+ return decls+ where checkClassMethodDef (ClsDecl _ decl) = checkMethodDef decl+ checkClassMethodDef _ = return ()++checkInstBody :: [InstDecl L] -> P [InstDecl L]+checkInstBody decls = do+ mapM_ checkInstMethodDef decls+ return decls+ where checkInstMethodDef (InsDecl _ decl) = checkMethodDef decl+ checkInstMethodDef _ = return ()++checkMethodDef :: Decl L -> P ()+checkMethodDef (PatBind _ (PVar _ _) _ _ _) = return ()+checkMethodDef (PatBind loc _ _ _ _) =+ fail "illegal method definition" -- `atSrcLoc` loc+checkMethodDef _ = return ()++-----------------------------------------------------------------------------+-- Check that an identifier or symbol is unqualified.+-- For occasions when doing this in the grammar would cause conflicts.++checkUnQual :: QName L -> P (Name L)+checkUnQual (Qual _ _ _) = fail "Illegal qualified name"+checkUnQual (UnQual _ n) = return n+checkUnQual (Special _ _) = fail "Illegal special name"++-----------------------------------------------------------------------------+-- Check that two xml tag names are equal+-- Could use Eq directly, but I am not sure whether <dom:name>...</name>+-- would be valid, in that case Eq won't work. TODO++checkEqNames :: XName L -> XName L -> P (XName L)+checkEqNames n@(XName _ n1) (XName _ n2)+ | n1 == n2 = return n+ | otherwise = fail "names in matching xml tags are not equal"+checkEqNames n@(XDomName _ d1 n1) (XDomName _ d2 n2)+ | n1 == n2 && d1 == d2 = return n+ | otherwise = fail "names in matching xml tags are not equal"+checkEqNames _ _ = fail "names in matching xml tags are not equal"+++-----------------------------------------------------------------------------+-- Miscellaneous utilities++checkPrec :: Integer -> P Int+checkPrec i | 0 <= i && i <= 9 = return (fromInteger i)+checkPrec i | otherwise = fail ("Illegal precedence " ++ show i)++mkRecConstrOrUpdate :: PExp L -> [PFieldUpdate L] -> P (PExp L)+mkRecConstrOrUpdate (Con l c) fs = return (RecConstr l c fs)+mkRecConstrOrUpdate e fs@(_:_) = return (RecUpdate (ann e) e fs)+mkRecConstrOrUpdate _ _ = fail "Empty record update"++-----------------------------------------------------------------------------+-- Reverse a list of declarations, merging adjacent FunBinds of the+-- same name and checking that their arities match.++checkRevDecls :: [Decl L] -> P [Decl L]+checkRevDecls = mergeFunBinds []+ where+ mergeFunBinds revDs [] = return revDs+ mergeFunBinds revDs (FunBind l ms1@(Match _ name ps _ _:_):ds1) =+ mergeMatches ms1 ds1 l+ where+ arity = length ps+ mergeMatches ms' (FunBind _ ms@(Match loc name' ps' _ _:_):ds) l+ | name' =~= name =+ if length ps' /= arity+ then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")+ -- `atSrcLoc` loc+ else mergeMatches (ms++ms') ds (loc <++> l)+ mergeMatches ms' ds l = mergeFunBinds (FunBind l ms':revDs) ds+ mergeFunBinds revDs (d:ds) = mergeFunBinds (d:revDs) ds++checkRevClsDecls :: [ClassDecl L] -> P [ClassDecl L]+checkRevClsDecls = mergeClsFunBinds []+ where+ mergeClsFunBinds revDs [] = return revDs+ mergeClsFunBinds revDs (ClsDecl l (FunBind _ ms1@(Match _ name ps _ _:_)):ds1) =+ mergeMatches ms1 ds1 l+ where+ arity = length ps+ mergeMatches ms' (ClsDecl _ (FunBind _ ms@(Match loc name' ps' _ _:_)):ds) l+ | name' =~= name =+ if length ps' /= arity+ then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")+ -- `atSrcLoc` loc+ else mergeMatches (ms++ms') ds (loc <++> l)+ mergeMatches ms' ds l = mergeClsFunBinds (ClsDecl l (FunBind l ms'):revDs) ds+ mergeClsFunBinds revDs (d:ds) = mergeClsFunBinds (d:revDs) ds++checkRevInstDecls :: [InstDecl L] -> P [InstDecl L]+checkRevInstDecls = mergeInstFunBinds []+ where+ mergeInstFunBinds :: [InstDecl L] -> [InstDecl L] -> P [InstDecl L]+ mergeInstFunBinds revDs [] = return revDs+ mergeInstFunBinds revDs (InsDecl l (FunBind _ ms1@(Match _ name ps _ _:_)):ds1) =+ mergeMatches ms1 ds1 l+ where+ arity = length ps+ mergeMatches ms' (InsDecl _ (FunBind _ ms@(Match loc name' ps' _ _:_)):ds) l+ | name' =~= name =+ if length ps' /= arity+ then fail ("arity mismatch for '" ++ prettyPrint name ++ "'")+ -- `atSrcLoc` loc+ else mergeMatches (ms++ms') ds (loc <++> l)+ mergeMatches ms' ds l = mergeInstFunBinds (InsDecl l (FunBind l ms'):revDs) ds+ mergeInstFunBinds revDs (d:ds) = mergeInstFunBinds (d:revDs) ds++----------------------------------------------------------------+-- Check that newtype declarations have+-- the right number (1) of constructors++checkDataOrNew :: DataOrNew L -> [a] -> P ()+checkDataOrNew (NewType _) [x] = return ()+checkDataOrNew (DataType _) _ = return ()+checkDataOrNew _ _ = fail "newtype declaration must have exactly one constructor."++checkSimpleType :: PType L -> P (DeclHead L)+checkSimpleType t = checkSimple "test" t []++---------------------------------------+-- Check actual types++checkType :: PType L -> P (S.Type L)+checkType t = checkT t False++checkT :: PType L -> Bool -> P (S.Type L)+checkT t simple = case t of+ TyForall l tvs@Nothing cs pt -> do+ when (simple) $ checkEnabled ExplicitForall+ ctxt <- checkContext cs+ check1Type pt (S.TyForall l Nothing ctxt)+ TyForall l tvs cs pt -> do+ checkEnabled ExplicitForall+ ctxt <- checkContext cs+ check1Type pt (S.TyForall l tvs ctxt)+ TyFun l at rt -> check2Types at rt (S.TyFun l)+ TyTuple l b pts -> checkTypes pts >>= return . S.TyTuple l b+ TyList l pt -> check1Type pt (S.TyList l)+ TyApp l ft at -> check2Types ft at (S.TyApp l)+ TyVar l n -> return $ S.TyVar l n+ TyCon l n -> do+ when (isSymbol n) $ checkEnabled TypeOperators+ return $ S.TyCon l n+ TyParen l pt -> check1Type pt (S.TyParen l)+ -- Here we know that t will be used as an actual type (and not a data constructor)+ -- so we can check that TypeOperators are enabled.+ TyInfix l at op bt -> checkEnabled TypeOperators >> check2Types at bt (flip (S.TyInfix l) op)+ TyKind l pt k -> check1Type pt (flip (S.TyKind l) k)++ -- TyPred cannot be a valid type+ _ -> fail $ "Parse error in type: " ++ prettyPrint t++check1Type :: PType L -> (S.Type L -> S.Type L) -> P (S.Type L)+check1Type pt f = checkT pt True >>= return . f++check2Types :: PType L -> PType L -> (S.Type L -> S.Type L -> S.Type L) -> P (S.Type L)+check2Types at bt f = checkT at True >>= \a -> checkT bt True >>= \b -> return (f a b)++checkTypes :: [PType L] -> P [S.Type L]+checkTypes = mapM (flip checkT True)++---------------------------------------+-- Converting a complete page++checkPageModule :: PExp L -> ([OptionPragma L],[S],L) -> P (Module L)+checkPageModule xml (os,ss,inf) = do+ mod <- getModuleName+ xml <- checkExpr xml+ case xml of+ S.XTag l xn ats mattr cs -> return $ XmlPage (inf<++>l<**(srcInfoPoints l ++ ss)) (ModuleName l mod) os xn ats mattr cs+ S.XETag l xn ats mattr -> return $ XmlPage (inf<++>l<**(srcInfoPoints l ++ ss)) (ModuleName l mod) os xn ats mattr []++checkHybridModule :: PExp L -> Module L -> S -> S -> P (Module L)+checkHybridModule xml (Module inf mh os is ds) s1 s2 = do+ xml <- checkExpr xml+ case xml of+ S.XTag l xn ats mattr cs -> return $ XmlHybrid (inf<++>l<**(s1 : srcInfoPoints inf ++ s2 : srcInfoPoints l))+ mh os is ds xn ats mattr cs+ S.XETag l xn ats mattr -> return $ XmlHybrid (inf<++>l<**(s1 : srcInfoPoints inf ++ s2 : srcInfoPoints l))+ mh os is ds xn ats mattr []++{-+pageFun :: L -> S.Exp L -> Decl L+pageFun loc e = PatBind loc namePat Nothing rhs Nothing+ where namePat = PVar loc $ Ident loc "page"+ rhs = UnGuardedRhs (ann e) e++mkPage :: Module L -> L -> S.Exp L -> P (Module L)+mkPage (Module src mmh os imps decls) loc xml = do+ let page = pageFun loc xml+ return $ Module src mmh os imps (decls ++ [page])++mkPageModule :: [OptionPragma L] -> S.Exp L -> P (Module L)+mkPageModule os xml = do+ do loc <- case xml of+ S.XTag l _ _ _ _ -> return l+ S.XETag l _ _ _ -> return l+ _ -> fail "Will not happen since mkPageModule is only called on XML expressions"+ mod <- getModuleName+ return $ (Module+ loc+ (ModuleName loc mod)+ os+ Nothing+ (Just (ExportSpecList loc [EVar loc $ UnQual loc $ Ident loc "page"]))+ []+ [pageFun loc xml])+-}+---------------------------------------+-- Handle dash-identifiers++mkDVar :: [String] -> String+mkDVar = concat . intersperse "-"++--mkDVarExpr :: L -> [String] -> PExp L+--mkDVarExpr l = foldl1 (\x y -> InfixApp l x (op $ sym "-") y) . map (Var l . UnQual l . name)++---------------------------------------+-- Combine adjacent for-alls. NO!+--+-- A valid type must have one for-all at the top of the type, or of the fn arg types++mkTyForall :: L -> Maybe [TyVarBind L] -> Maybe (PContext L) -> PType L -> PType L+--mkTyForall l mtvs (PContext _ []) ty = mk_forall_ty l mtvs ty+mkTyForall l mtvs ctxt ty = TyForall l mtvs ctxt ty++{-- mk_forall_ty makes a pure for-all type (no context)+mk_forall_ty l (Just []) ty = ty -- Explicit for-all with no tyvars+mk_forall_ty l mtvs1 (TyForall _ mtvs2 ctxt ty) = mkTyForall l (mtvs1 `plus` mtvs2) ctxt ty+mk_forall_ty l mtvs1 ty = TyForall l mtvs1 (PContext l []) ty++mtvs1 `plus` Nothing = mtvs1+Nothing `plus` mtvs2 = mtvs2+(Just tvs1) `plus` (Just tvs2) = Just (tvs1 ++ tvs2)+-}+---------------------------------------+{-- Expressions as we parse them (and patters, and regular patterns)++data PExp l+ = Var l (QName l) -- ^ variable+ | IPVar l (IPName l) -- ^ implicit parameter variable+ | Con l (QName l) -- ^ data constructor+ | Lit l (Literal l) -- ^ literal constant+ | InfixApp l (PExp l) (QOp l) (PExp l) -- ^ infix application+ | App l (PExp l) (PExp l) -- ^ ordinary application+ | NegApp l (PExp l) -- ^ negation expression @-@ /exp/+ | Lambda l [Pat l] (PExp l) -- ^ lambda expression+ | Let l (Binds l) (PExp l) -- ^ local declarations with @let@+ | If l (PExp l) (PExp l) (PExp l) -- ^ @if@ /exp/ @then@ /exp/ @else@ /exp/+ | Case l (PExp l) [Alt l] -- ^ @case@ /exp/ @of@ /alts/+ | Do l [Stmt l] -- ^ @do@-expression:+ -- the last statement in the list+ -- should be an expression.+ | MDo l [Stmt l] -- ^ @mdo@-expression+-- | Tuple [PExp] -- ^ tuple expression+ | TupleSection l [Maybe (PExp l)] -- ^ tuple section expression, e.g. @(,,3)@+ | List l [PExp l] -- ^ list expression+ | Paren l (PExp l) -- ^ parenthesized expression+-- RightSection QOp PExp -- ^ right section @(@/qop/ /exp/@)@+ | RecConstr l (QName l) [PFieldUpdate l]+ -- ^ record construction expression+ | RecUpdate l (PExp l) [PFieldUpdate l]+ -- ^ record update expression+ | EnumFrom l (PExp l) -- ^ unbounded arithmetic sequence,+ -- incrementing by 1+ | EnumFromTo l (PExp l) (PExp l) -- ^ bounded arithmetic sequence,+ -- incrementing by 1+ | EnumFromThen l (PExp l) (PExp l) -- ^ unbounded arithmetic sequence,+ -- with first two elements given+ | EnumFromThenTo l (PExp l) (PExp l) (PExp l)+ -- ^ bounded arithmetic sequence,+ -- with first two elements given+ | ParComp l (PExp l) [[QualStmt l]] -- ^ parallel list comprehension+ | ExpTypeSig l (PExp l) (S.Type l)+ -- ^ expression type signature+ | AsPat l (Name l) (PExp l) -- ^ patterns only+ | WildCard l -- ^ patterns only+ | IrrPat l (PExp l) -- ^ patterns only++-- Post-ops for parsing left sections and regular patterns. Not to be left in the final tree.+ | PostOp l (PExp l) (QOp l) -- ^ post-ops+ | PreOp l (QOp l) (PExp l) -- ^ pre-ops++-- View patterns+ | ViewPat l (PExp l) (PExp l) -- ^ patterns only++-- HaRP+ | SeqRP l [PExp l] -- ^ regular patterns only+ | GuardRP l (PExp l) [Stmt l] -- ^ regular patterns only+ | EitherRP l (PExp l) (PExp l) -- ^ regular patterns only+ | CAsRP l (Name l) (PExp l) -- ^ regular patterns only++-- Template Haskell+ | VarQuote l (QName l) -- ^ 'x+ | TypQuote l (QName l) -- ^ ''T+ | BracketExp l (Bracket l)+ | SpliceExp l (Splice l)+ | QuasiQuote l String String -- ^ [$...|...]++-- Hsx+ | XTag l (XName l) [ParseXAttr l] (Maybe (PExp l)) [PExp l]+ | XETag l (XName l) [ParseXAttr l] (Maybe (PExp l))+ | XPcdata l String+ | XExpTag l (PExp l)+ | XRPats l [PExp l]++-- Pragmas+ | CorePragma l String (PExp l)+ | SCCPragma l String (PExp l)+ | GenPragma l String (Int, Int) (Int, Int) (PExp l)+-- | UnknownExpPragma String String++-- Generics+ | ExplTypeArg l (QName l) (S.Type l) -- ^ f {| Int |} x = ...++-- Bang Patterns+ | BangPat l (PExp l) -- ^ f !a = ...++-- Arrows+ | Proc l (Pat l) (PExp l)+ | LeftArrApp l (PExp l) (PExp l)+ | RightArrApp l (PExp l) (PExp l)+ | LeftArrHighApp l (PExp l) (PExp l)+ | RightArrHighApp l (PExp l) (PExp l)+ deriving (Eq,Show)++data PFieldUpdate l+ = FieldUpdate l (QName l) (PExp l)+ | FieldPun l (Name l)+ | FieldWildcard l+ deriving (Eq,Show)++data ParseXAttr l = XAttr l (XName l) (PExp l)+ deriving (Eq,Show)++instance Annotated PExp where+ ann e = case e of+ Var l qn -> l+ IPVar l ipn -> l+ Con l qn -> l+ Lit l lit -> l+ InfixApp l e1 qop e2 -> l+ App l e1 e2 -> l+ NegApp l e -> l+ Lambda l ps e -> l+ Let l bs e -> l+ If l ec et ee -> l+ Case l e alts -> l+ Do l ss -> l+ MDo l ss -> l+ TupleSection l mes -> l+ List l es -> l+ Paren l e -> l+ RecConstr l qn fups -> l+ RecUpdate l e fups -> l+ EnumFrom l e -> l+ EnumFromTo l ef et -> l+ EnumFromThen l ef et -> l+ EnumFromThenTo l ef eth eto -> l+ ParComp l e qsss -> l+ ExpTypeSig l e t -> l+ AsPat l n e -> l+ WildCard l -> l+ IrrPat l e -> l+ PostOp l e op -> l+ PreOp l op e -> l+ ViewPat l e1 e2 -> l+ SeqRP l es -> l+ GuardRP l e ss -> l+ EitherRP l e1 e2 -> l+ CAsRP l n e -> l++ VarQuote l qn -> l+ TypQuote l qn -> l+ BracketExp l br -> l+ SpliceExp l sp -> l+ QuasiQuote l sn se -> l++ XTag l xn xas me es -> l+ XETag l xn xas me -> l+ XPcdata l s -> l+ XExpTag l e -> l+ XRPats l es -> l++ CorePragma l s e -> l+ SCCPragma l s e -> l+ GenPragma l s n12 n34 e -> l++ ExplTypeArg l qn t -> l+ BangPat l e -> l++ Proc l p e -> l+ LeftArrApp l e1 e2 -> l+ RightArrApp l e1 e2 -> l+ LeftArrHighApp l e1 e2 -> l+ RightArrHighApp l e1 e2 -> l++ amap f e = case e of+ Var l qn -> Var (f l) qn+ IPVar l ipn -> IPVar (f l) ipn+ Con l qn -> Con (f l) qn+ Lit l lit -> Lit (f l) lit+ InfixApp l e1 qop e2 -> InfixApp (f l) e1 qop e2+ App l e1 e2 -> App (f l) e1 e2+ NegApp l e -> NegApp (f l) e+ Lambda l ps e -> Lambda (f l) ps e+ Let l bs e -> Let (f l) bs e+ If l ec et ee -> If (f l) ec et ee+ Case l e alts -> Case (f l) e alts+ Do l ss -> Do (f l) ss+ MDo l ss -> MDo (f l) ss+ TupleSection l mes -> TupleSection (f l) mes+ List l es -> List (f l) es+ Paren l e -> Paren (f l) e+ RecConstr l qn fups -> RecConstr (f l) qn fups+ RecUpdate l e fups -> RecUpdate (f l) e fups+ EnumFrom l e -> EnumFrom (f l) e+ EnumFromTo l ef et -> EnumFromTo (f l) ef et+ EnumFromThen l ef et -> EnumFromThen (f l) ef et+ EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) ef eth eto+ ParComp l e qsss -> ParComp (f l) e qsss+ ExpTypeSig l e t -> ExpTypeSig (f l) e t++ AsPat l n e -> AsPat (f l) n e+ WildCard l -> WildCard (f l)+ IrrPat l e -> IrrPat (f l) e+ PostOp l e op -> PostOp (f l) e op+ PreOp l op e -> PreOp (f l) op e+ ViewPat l e1 e2 -> ViewPat (f l) e1 e2+ SeqRP l es -> SeqRP (f l) es+ GuardRP l e ss -> GuardRP (f l) e ss+ EitherRP l e1 e2 -> EitherRP (f l) e1 e2+ CAsRP l n e -> CAsRP (f l) n e+ ExplTypeArg l n t -> ExplTypeArg (f l) n t+ BangPat l e -> BangPat (f l) e++ VarQuote l qn -> VarQuote (f l) qn+ TypQuote l qn -> TypQuote (f l) qn+ BracketExp l br -> BracketExp (f l) br+ SpliceExp l sp -> SpliceExp (f l) sp+ QuasiQuote l sn se -> QuasiQuote (f l) sn se++ XTag l xn xas me es -> XTag (f l) xn xas me es+ XETag l xn xas me -> XETag (f l) xn xas me+ XPcdata l s -> XPcdata (f l) s+ XExpTag l e -> XExpTag (f l) e++ CorePragma l s e -> CorePragma (f l) s e+ SCCPragma l s e -> SCCPragma (f l) s e+ GenPragma l s n12 n34 e -> GenPragma (f l) s n12 n34 e++ Proc l p e -> Proc (f l) p e+ LeftArrApp l e1 e2 -> LeftArrApp (f l) e1 e2+ RightArrApp l e1 e2 -> RightArrApp (f l) e1 e2+ LeftArrHighApp l e1 e2 -> LeftArrHighApp (f l) e1 e2+ RightArrHighApp l e1 e2 -> RightArrHighApp (f l) e1 e2++instance Functor PExp where+ fmap f e = case e of+ Var l qn -> Var (f l) (fmap f qn)+ IPVar l ipn -> IPVar (f l) (fmap f ipn)+ Con l qn -> Con (f l) (fmap f qn)+ Lit l lit -> Lit (f l) (fmap f lit)+ InfixApp l e1 qop e2 -> InfixApp (f l) (fmap f e1) (fmap f qop) (fmap f e2)+ App l e1 e2 -> App (f l) (fmap f e1) (fmap f e2)+ NegApp l e -> NegApp (f l) (fmap f e)+ Lambda l ps e -> Lambda (f l) (map (fmap f) ps) (fmap f e)+ Let l bs e -> Let (f l) (fmap f bs) (fmap f e)+ If l ec et ee -> If (f l) (fmap f ec) (fmap f et) (fmap f ee)+ Case l e alts -> Case (f l) (fmap f e) (map (fmap f) alts)+ Do l ss -> Do (f l) (map (fmap f) ss)+ MDo l ss -> MDo (f l) (map (fmap f) ss)+ TupleSection l mes -> TupleSection (f l) (map (fmap (fmap f)) mes)+ List l es -> List (f l) (map (fmap f) es)+ Paren l e -> Paren (f l) (fmap f e)+ RecConstr l qn fups -> RecConstr (f l) (fmap f qn) (map (fmap f) fups)+ RecUpdate l e fups -> RecUpdate (f l) (fmap f e) (map (fmap f) fups)+ EnumFrom l e -> EnumFrom (f l) (fmap f e)+ EnumFromTo l ef et -> EnumFromTo (f l) (fmap f ef) (fmap f et)+ EnumFromThen l ef et -> EnumFromThen (f l) (fmap f ef) (fmap f et)+ EnumFromThenTo l ef eth eto -> EnumFromThenTo (f l) (fmap f ef) (fmap f eth) (fmap f eto)+ ParComp l e qsss -> ParComp (f l) (fmap f e) (map (map (fmap f)) qsss)+ ExpTypeSig l e t -> ExpTypeSig (f l) (fmap f e) (fmap f t)++ AsPat l n e -> AsPat (f l) (fmap f n) (fmap f e)+ WildCard l -> WildCard (f l)+ IrrPat l e -> IrrPat (f l) (fmap f e)+ PostOp l e op -> PostOp (f l) (fmap f e) (fmap f op)+ PreOp l op e -> PreOp (f l) (fmap f op) (fmap f e)+ ViewPat l e1 e2 -> ViewPat (f l) (fmap f e1) (fmap f e2)+ SeqRP l es -> SeqRP (f l) (map (fmap f) es)+ GuardRP l e ss -> GuardRP (f l) (fmap f e) (map (fmap f) ss)+ EitherRP l e1 e2 -> EitherRP (f l) (fmap f e1) (fmap f e2)+ CAsRP l n e -> CAsRP (f l) (fmap f n) (fmap f e)+ ExplTypeArg l n t -> ExplTypeArg (f l) (fmap f n) (fmap f t)+ BangPat l e -> BangPat (f l) (fmap f e)++ VarQuote l qn -> VarQuote (f l) (fmap f qn)+ TypQuote l qn -> TypQuote (f l) (fmap f qn)+ BracketExp l br -> BracketExp (f l) (fmap f br)+ SpliceExp l sp -> SpliceExp (f l) (fmap f sp)+ QuasiQuote l sn se -> QuasiQuote (f l) sn se++ XTag l xn xas me es -> XTag (f l) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me) (map (fmap f) es)+ XETag l xn xas me -> XETag (f l) (fmap f xn) (map (fmap f) xas) (fmap (fmap f) me)+ XPcdata l s -> XPcdata (f l) s+ XExpTag l e -> XExpTag (f l) (fmap f e)++ CorePragma l s e -> CorePragma (f l) s (fmap f e)+ SCCPragma l s e -> SCCPragma (f l) s (fmap f e)+ GenPragma l s n12 n34 e -> GenPragma (f l) s n12 n34 (fmap f e)++ Proc l p e -> Proc (f l) (fmap f p) (fmap f e)+ LeftArrApp l e1 e2 -> LeftArrApp (f l) (fmap f e1) (fmap f e2)+ RightArrApp l e1 e2 -> RightArrApp (f l) (fmap f e1) (fmap f e2)+ LeftArrHighApp l e1 e2 -> LeftArrHighApp (f l) (fmap f e1) (fmap f e2)+ RightArrHighApp l e1 e2 -> RightArrHighApp (f l) (fmap f e1) (fmap f e2)++++instance Functor PFieldUpdate where+ fmap f (FieldUpdate l qn e) = FieldUpdate (f l) (fmap f qn) (fmap f e)+ fmap f (FieldPun l n) = FieldPun (f l) (fmap f n)+ fmap f (FieldWildcard l) = FieldWildcard (f l)++instance Annotated PFieldUpdate where+ ann (FieldUpdate l qn e) = l+ ann (FieldPun l n) = l+ ann (FieldWildcard l) = l+ amap f (FieldUpdate l qn e) = FieldUpdate (f l) qn e+ amap f (FieldPun l n) = FieldPun (f l) n+ amap f (FieldWildcard l) = FieldWildcard (f l)++instance Functor ParseXAttr where+ fmap f (XAttr l xn e) = XAttr (f l) (fmap f xn) (fmap f e)++instance Annotated ParseXAttr where+ ann (XAttr l _ _) = l+ amap f (XAttr l xn e) = XAttr (f l) xn e++p_unit_con :: l -> PExp l+p_unit_con l = Con l (unit_con_name l)++p_tuple_con :: l -> Boxed -> Int -> PExp l+p_tuple_con l b i = Con l (tuple_con_name l b i)++p_unboxed_singleton_con :: l -> PExp l+p_unboxed_singleton_con l = Con l (unboxed_singleton_con_name l)++data PContext l+ = CxSingle l (PAsst l)+ | CxTuple l [PAsst l]+ | CxParen l (PContext l)+ | CxEmpty l+ deriving (Eq, Show)++instance Functor PContext where+ fmap f (CxSingle l asst) = CxSingle (f l) (fmap f asst)+ fmap f (CxTuple l assts) = CxTuple (f l) (map (fmap f) assts)+ fmap f (CxParen l ctxt) = CxParen (f l) (fmap f ctxt)+ fmap f (CxEmpty l) = CxEmpty (f l)++instance Annotated PContext where+ ann (CxSingle l asst ) = l+ ann (CxTuple l assts) = l+ ann (CxParen l ctxt ) = l+ ann (CxEmpty l) = l+ amap f (CxSingle l asst ) = CxSingle (f l) asst+ amap f (CxTuple l assts) = CxTuple (f l) assts+ amap f (CxParen l ctxt ) = CxParen (f l) ctxt+ amap f (CxEmpty l) = CxEmpty (f l)++data PType l+ = TyForall l+ (Maybe [TyVarBind l])+ (Maybe (PContext l))+ (PType l)+ | TyFun l (PType l) (PType l) -- ^ function type+ | TyTuple l Boxed [PType l] -- ^ tuple type, possibly boxed+ | TyList l (PType l) -- ^ list syntax, e.g. [a], as opposed to [] a+ | TyApp l (PType l) (PType l) -- ^ application of a type constructor+ | TyVar l (Name l) -- ^ type variable+ | TyCon l (QName l) -- ^ named type or type constructor+ | TyParen l (PType l) -- ^ type surrounded by parentheses+ | TyPred l (PAsst l) -- ^ assertion of an implicit parameter+ | TyInfix l (PType l) (QName l) (PType l) -- ^ infix type constructor+ | TyKind l (PType l) (Kind l) -- ^ type with explicit kind signature+ deriving (Eq, Show)++instance Functor PType where+ fmap f t = case t of+ TyForall l mtvs mcx t -> TyForall (f l) (fmap (map (fmap f)) mtvs) (fmap (fmap f) mcx) (fmap f t)+ TyFun l t1 t2 -> TyFun (f l) (fmap f t1) (fmap f t2)+ TyTuple l b ts -> TyTuple (f l) b (map (fmap f) ts)+ TyList l t -> TyList (f l) (fmap f t)+ TyApp l t1 t2 -> TyApp (f l) (fmap f t1) (fmap f t2)+ TyVar l n -> TyVar (f l) (fmap f n)+ TyCon l qn -> TyCon (f l) (fmap f qn)+ TyParen l t -> TyParen (f l) (fmap f t)+ TyPred l asst -> TyPred (f l) (fmap f asst)+ TyInfix l ta qn tb -> TyInfix (f l) (fmap f ta) (fmap f qn) (fmap f tb)+ TyKind l t k -> TyKind (f l) (fmap f t) (fmap f k)++instance Annotated PType where+ ann t = case t of+ TyForall l mtvs cx t -> l+ TyFun l t1 t2 -> l+ TyTuple l b ts -> l+ TyList l t -> l+ TyApp l t1 t2 -> l+ TyVar l n -> l+ TyCon l qn -> l+ TyParen l t -> l+ TyInfix l ta qn tb -> l+ TyKind l t k -> l+ amap f t = case t of+ TyForall l mtvs mcx t -> TyForall (f l) mtvs mcx t+ TyFun l t1 t2 -> TyFun (f l) t1 t2+ TyTuple l b ts -> TyTuple (f l) b ts+ TyList l t -> TyList (f l) t+ TyApp l t1 t2 -> TyApp (f l) t1 t2+ TyVar l n -> TyVar (f l) n+ TyCon l qn -> TyCon (f l) qn+ TyParen l t -> TyParen (f l) t+ TyInfix l ta qn tb -> TyInfix (f l) ta qn tb+ TyKind l t k -> TyKind (f l) t k++data PAsst l+ = ClassA l (QName l) [PType l]+ | InfixA l (PType l) (QName l) (PType l)+ | IParam l (IPName l) (PType l)+ | EqualP l (PType l) (PType l)+ deriving (Eq, Show)++instance Functor PAsst where+ fmap f asst = case asst of+ ClassA l qn ts -> ClassA (f l) (fmap f qn) (map (fmap f) ts)+ InfixA l ta qn tb -> InfixA (f l) (fmap f ta) (fmap f qn) (fmap f tb)+ IParam l ipn t -> IParam (f l) (fmap f ipn) (fmap f t)+ EqualP l t1 t2 -> EqualP (f l) (fmap f t1) (fmap f t2)++instance Annotated PAsst where+ ann asst = case asst of+ ClassA l qn ts -> l+ InfixA l ta qn tb -> l+ IParam l ipn t -> l+ EqualP l t1 t2 -> l+ amap f asst = case asst of+ ClassA l qn ts -> ClassA (f l) qn ts+ InfixA l ta qn tb -> InfixA (f l) ta qn tb+ IParam l ipn t -> IParam (f l) ipn t+ EqualP l t1 t2 -> EqualP (f l) t1 t2+++unit_tycon, fun_tycon, list_tycon, unboxed_singleton_tycon :: l -> PType l+unit_tycon l = TyCon l (unit_tycon_name l)+fun_tycon l = TyCon l (fun_tycon_name l)+list_tycon l = TyCon l (list_tycon_name l)+unboxed_singleton_tycon l = TyCon l (unboxed_singleton_tycon_name l)++tuple_tycon :: l -> Boxed -> Int -> PType l+tuple_tycon l b i = TyCon l (tuple_tycon_name l b i)+-}
+ src/Language/Haskell/Exts/Parser.hs view
@@ -0,0 +1,154 @@+module Language.Haskell.Exts.Parser + ( + -- * General parsing + Parseable(..), + ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult, + -- * Parsing of specific AST elements + -- ** Modules + parseModule, parseModuleWithMode, parseModuleWithComments, + -- ** Expressions + parseExp, parseExpWithMode, parseExpWithComments, + -- ** Patterns + parsePat, parsePatWithMode, parsePatWithComments, + -- ** Declarations + parseDecl, parseDeclWithMode, parseDeclWithComments, + -- ** Types + parseType, parseTypeWithMode, parseTypeWithComments, + -- ** Option pragmas + getTopPragmas + ) where + + +import Language.Haskell.Exts.InternalParser ( ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult ) +import qualified Language.Haskell.Exts.InternalParser as P + +import Language.Haskell.Exts.Annotated.Syntax +import qualified Language.Haskell.Exts.Syntax as S +import Language.Haskell.Exts.Annotated.Simplify + +import Language.Haskell.Exts.SrcLoc +import Language.Haskell.Exts.Comments + +getTopPragmas :: String -> ParseResult [S.OptionPragma] +getTopPragmas = fmap (map sOptionPragma) . P.getTopPragmas + +-- | Class to reuse the parse function at many different types. +class Parseable ast where + -- | Parse a string with default mode. + parse :: String -> ParseResult ast + -- | Parse a string with an explicit mode. + parseWithMode :: ParseMode -> String -> ParseResult ast + -- | Parse a string with an explicit mode, returning all comments along the AST + parseWithComments :: ParseMode -> String -> ParseResult (ast, [Comment]) + + +instance SrcInfo loc => Parseable (Module loc) where + parse = fmap (fmap fromSrcInfo) . P.parseModule + parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parseModuleWithMode + parseWithComments md s = P.parseModuleWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) + +instance SrcInfo loc => Parseable (Exp loc) where + parse = fmap (fmap fromSrcInfo) . P.parseExp + parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parseExpWithMode + parseWithComments md s = P.parseExpWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) + +instance SrcInfo loc => Parseable (Pat loc) where + parse = fmap (fmap fromSrcInfo) . P.parsePat + parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parsePatWithMode + parseWithComments md s = P.parsePatWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) + +instance SrcInfo loc => Parseable (Decl loc) where + parse = fmap (fmap fromSrcInfo) . P.parseDecl + parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parseDeclWithMode + parseWithComments md s = P.parseDeclWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) + +instance SrcInfo loc => Parseable (Type loc) where + parse = fmap (fmap fromSrcInfo) . P.parseType + parseWithMode = (fmap (fmap fromSrcInfo) .) . P.parseTypeWithMode + parseWithComments md s = P.parseTypeWithComments md s >>= \(r, cs) -> return (fmap fromSrcInfo r, cs) + + +-- | Parse of a string, which should contain a complete Haskell module. +parseModule :: String -> ParseResult S.Module +parseModule = fmap sModule . P.parseModule + +-- | Parse of a string containing a complete Haskell module, using an explicit mode. +parseModuleWithMode :: ParseMode -> String -> ParseResult S.Module +parseModuleWithMode = (fmap sModule .) . P.parseModuleWithMode + +-- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. +parseModuleWithComments :: ParseMode -> String -> ParseResult (S.Module, [Comment]) +parseModuleWithComments = (fmap (\(mod, cs) -> (sModule mod, cs)) .) . P.parseModuleWithComments + +-- | Parse of a string containing a Haskell expression. +parseExp :: String -> ParseResult S.Exp +parseExp = fmap sExp . P.parseExp + +-- | Parse of a string containing a Haskell expression, using an explicit mode. +parseExpWithMode :: ParseMode -> String -> ParseResult S.Exp +parseExpWithMode = (fmap sExp .) . P.parseExpWithMode + +-- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. +parseExpWithComments :: ParseMode -> String -> ParseResult (S.Exp, [Comment]) +parseExpWithComments = (fmap (\(e, cs) -> (sExp e, cs)) .) . P.parseExpWithComments + +-- | Parse of a string containing a Haskell pattern. +parsePat :: String -> ParseResult S.Pat +parsePat = fmap sPat . P.parsePat + +-- | Parse of a string containing a Haskell pattern, using an explicit mode. +parsePatWithMode :: ParseMode -> String -> ParseResult S.Pat +parsePatWithMode = (fmap sPat .) . P.parsePatWithMode + +-- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. +parsePatWithComments :: ParseMode -> String -> ParseResult (S.Pat, [Comment]) +parsePatWithComments = (fmap (\(p, cs) -> (sPat p, cs)) .) . P.parsePatWithComments + +-- | Parse of a string containing a Haskell top-level declaration. +parseDecl :: String -> ParseResult S.Decl +parseDecl = fmap sDecl . P.parseDecl + +-- | Parse of a string containing a Haskell top-level declaration, using an explicit mode. +parseDeclWithMode :: ParseMode -> String -> ParseResult S.Decl +parseDeclWithMode = (fmap sDecl .) . P.parseDeclWithMode + +-- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. +parseDeclWithComments :: ParseMode -> String -> ParseResult (S.Decl, [Comment]) +parseDeclWithComments = (fmap (\(decl, cs) -> (sDecl decl, cs)) .) . P.parseDeclWithComments + +-- | Parse of a string containing a Haskell type. +parseType :: String -> ParseResult S.Type +parseType = fmap sType . P.parseType + +-- | Parse of a string containing a Haskell type, using an explicit mode. +parseTypeWithMode :: ParseMode -> String -> ParseResult S.Type +parseTypeWithMode = (fmap sType .) . P.parseTypeWithMode + +-- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments. +parseTypeWithComments :: ParseMode -> String -> ParseResult (S.Type, [Comment]) +parseTypeWithComments = (fmap (\(t, cs) -> (sType t, cs)) .) . P.parseTypeWithComments + +instance Parseable S.Module where + parse = parseModule + parseWithMode = parseModuleWithMode + parseWithComments = parseModuleWithComments + +instance Parseable S.Exp where + parse = parseExp + parseWithMode = parseExpWithMode + parseWithComments = parseExpWithComments + +instance Parseable S.Pat where + parse = parsePat + parseWithMode = parsePatWithMode + parseWithComments = parsePatWithComments + +instance Parseable S.Decl where + parse = parseDecl + parseWithMode = parseDeclWithMode + parseWithComments = parseDeclWithComments + +instance Parseable S.Type where + parse = parseType + parseWithMode = parseTypeWithMode + parseWithComments = parseTypeWithComments
− src/Language/Haskell/Exts/Parser.ly
@@ -1,1743 +0,0 @@-> {-> ------------------------------------------------------------------------------> -- |-> -- Module : Language.Haskell.Exts.Parser-> -- Copyright : (c) Niklas Broberg 2004-2009,-> -- Original (c) Simon Marlow, Sven Panne 1997-2000-> -- License : BSD-style (see the file LICENSE.txt)-> ---> -- Maintainer : Niklas Broberg, d00nibro@chalmers.se-> -- Stability : stable-> -- Portability : portable-> ---> ---> ------------------------------------------------------------------------------>-> module Language.Haskell.Exts.Parser (-> -- * General parsing-> Parseable(..),-> ParseMode(..), defaultParseMode, ParseResult(..), fromParseResult,-> -- * Parsing of specific AST elements-> -- ** Modules-> parseModule, parseModuleWithMode, parseModuleWithComments,-> -- ** Expressions-> parseExp, parseExpWithMode, parseExpWithComments,-> -- ** Patterns-> parsePat, parsePatWithMode, parsePatWithComments,-> -- ** Declarations-> parseDecl, parseDeclWithMode, parseDeclWithComments,-> -- ** Types-> parseType, parseTypeWithMode, parseTypeWithComments,-> -- ** Option pragmas-> getTopPragmas-> ) where->-> import Language.Haskell.Exts.Syntax hiding ( Type(..), Exp(..), Asst(..), XAttr(..), FieldUpdate(..) )-> import Language.Haskell.Exts.Syntax ( Type, Exp, Asst )-> import Language.Haskell.Exts.ParseMonad-> import Language.Haskell.Exts.Lexer-> import Language.Haskell.Exts.ParseUtils-> import Language.Haskell.Exts.Extension-> import Language.Haskell.Exts.Fixity-> import Language.Haskell.Exts.Comments ( Comment )--import Debug.Trace (trace)-> }--------------------------------------------------------------------------------This module comprises a parser for Haskell 98 with the following extensions--* Multi-parameter type classes with functional dependencies-* Implicit parameters-* Pattern guards-* Mdo notation-* FFI-* HaRP-* HSP--Most of the code is blatantly stolen from the GHC module Language.Haskell.Parser.-Some of the code for extensions is greatly influenced by GHC's internal parser-library, ghc/compiler/parser/Parser.y.-------------------------------------------------------------------------------Conflicts: 6 shift/reduce--2 for ambiguity in 'case x of y | let z = y in z :: Bool -> b' [State 12, 244]- (don't know whether to reduce 'Bool' as a btype or shift the '->'.- Similarly lambda and if. The default resolution in favour of the- shift means that a guard can never end with a type signature.- In mitigation: it's a rare case and no Haskell implementation- allows these, because it would require unbounded lookahead.)- There are 2 conflicts rather than one because contexts are parsed- as btypes (cf ctype).--1 for ambiguity in 'let ?x ...' [State 712]- the parser can't tell whether the ?x is the lhs of a normal binding or- an implicit binding. Fortunately resolving as shift gives it the only- sensible meaning, namely the lhs of an implicit binding.--1 for ambiguity using hybrid modules [State 116]- For HSP pages that start with a <% %> block, the parser cannot tell whether- to reduce a srcloc or shift the starting <%. Since any other body could not- start with <%, shifting is the only sensible thing to do.--1 for ambiguity using toplevel xml modules [State 119]- For HSP xml pages starting with a <, the parser cannot tell whether to shift- that < or reduce an implicit 'open'. Since no other body could possibly start- with <, shifting is the only sensible thing to do.--1 for ambiguity in '{-# RULES "name" [ ... #-}' [State 318]- we don't know whether the '[' starts the activation or not: it- might be the start of the declaration with the activation being- empty. Resolving with shift means the declaration cannot start with '['.---------------------------------------------------------------------------------> %token-> VARID { VarId $$ }-> QVARID { QVarId $$ }-> IDUPID { IDupVarId $$ } -- duplicable implicit parameter ?x-> ILINID { ILinVarId $$ } -- linear implicit parameter %x-> CONID { ConId $$ }-> QCONID { QConId $$ }-> DVARID { DVarId $$ } -- VARID containing dashes-> VARSYM { VarSym $$ }-> CONSYM { ConSym $$ }-> QVARSYM { QVarSym $$ }-> QCONSYM { QConSym $$ }-> INT { IntTok $$ }-> RATIONAL { FloatTok $$ }-> CHAR { Character $$ }-> STRING { StringTok $$ }--> PRIMINT { IntTokHash $$ }-> PRIMWORD { WordTokHash $$ }-> PRIMFLOAT { FloatTokHash $$ }-> PRIMDOUBLE { DoubleTokHash $$ }-> PRIMCHAR { CharacterHash $$ }-> PRIMSTRING { StringHash $$ }--Symbols--> '(' { LeftParen }-> ')' { RightParen }-> '(#' { LeftHashParen }-> '#)' { RightHashParen }-> '{|' { LeftCurlyBar }-> '|}' { RightCurlyBar }-> ';' { SemiColon }-> '{' { LeftCurly }-> '}' { RightCurly }-> vccurly { VRightCurly } -- a virtual close brace-> '[' { LeftSquare }-> ']' { RightSquare }-> ',' { Comma }-> '_' { Underscore }-> '`' { BackQuote }--Reserved operators--> '.' { Dot }-> '..' { DotDot }-> ':' { Colon }-> '::' { DoubleColon }-> '=' { Equals }-> '\\' { Backslash }-> '|' { Bar }-> '<-' { LeftArrow }-> '->' { RightArrow }-> '@' { At }-> '~' { Tilde }-> '=>' { DoubleArrow }-> '-' { Minus }-> '!' { Exclamation }-> '*' { Star }--Arrows--> '-<' { LeftArrowTail }-> '>-' { RightArrowTail }-> '-<<' { LeftDblArrowTail }-> '>>-' { RightDblArrowTail }--Harp--> '(|' { RPGuardOpen }-> '|)' { RPGuardClose }-> '@:' { RPCAt }--Template Haskell--> IDSPLICE { THIdEscape $$ } -- $x-> '$(' { THParenEscape }-> '[|' { THExpQuote }-> '[p|' { THPatQuote }-> '[t|' { THTypQuote }-> '[d|' { THDecQuote }-> '|]' { THCloseQuote }-> VARQUOTE { THVarQuote } -- 'x-> TYPQUOTE { THTyQuote } -- ''T-> QUASIQUOTE { THQuasiQuote $$ }--Hsx--> PCDATA { XPCDATA $$ }-> '<' { XStdTagOpen }-> '</' { XCloseTagOpen }-> '<%' { XCodeTagOpen }-> '>' { XStdTagClose }-> '/>' { XEmptyTagClose }-> '%>' { XCodeTagClose }-> '<[' { XRPatOpen }-> ']>' { XRPatClose }--FFI--> 'foreign' { KW_Foreign }-> 'export' { KW_Export }-> 'safe' { KW_Safe }-> 'unsafe' { KW_Unsafe }-> 'threadsafe' { KW_Threadsafe }-> 'stdcall' { KW_StdCall }-> 'ccall' { KW_CCall }--Reserved Ids--> 'as' { KW_As }-> 'by' { KW_By } -- transform list comprehensions-> 'case' { KW_Case }-> 'class' { KW_Class }-> 'data' { KW_Data }-> 'default' { KW_Default }-> 'deriving' { KW_Deriving }-> 'do' { KW_Do }-> 'else' { KW_Else }-> 'family' { KW_Family } -- indexed type families-> 'forall' { KW_Forall } -- universal/existential qualification-> 'group' { KW_Group } -- transform list comprehensions-> 'hiding' { KW_Hiding }-> 'if' { KW_If }-> 'import' { KW_Import }-> 'in' { KW_In }-> 'infix' { KW_Infix }-> 'infixl' { KW_InfixL }-> 'infixr' { KW_InfixR }-> 'instance' { KW_Instance }-> 'let' { KW_Let }-> 'mdo' { KW_MDo }-> 'module' { KW_Module }-> 'newtype' { KW_NewType }-> 'of' { KW_Of }-> 'proc' { KW_Proc } -- arrows-> 'rec' { KW_Rec } -- arrows-> 'then' { KW_Then }-> 'type' { KW_Type }-> 'using' { KW_Using } -- transform list comprehensions-> 'where' { KW_Where }-> 'qualified' { KW_Qualified }--Pragmas--> '{-# INLINE' { INLINE $$ }-> '{-# SPECIALISE' { SPECIALISE }-> '{-# SPECIALISE_INLINE' { SPECIALISE_INLINE $$ }-> '{-# SOURCE' { SOURCE }-> '{-# RULES' { RULES }-> '{-# CORE' { CORE }-> '{-# SCC' { SCC }-> '{-# GENERATED' { GENERATED }-> '{-# DEPRECATED' { DEPRECATED }-> '{-# WARNING' { WARNING }-> '{-# UNPACK' { UNPACK }-> '{-# OPTIONS' { OPTIONS $$ }-> '{-# CFILES' { CFILES $$ }-> '{-# INCLUDE' { INCLUDE $$ }-> '{-# LANGUAGE' { LANGUAGE }- '{-# unknown' { PragmaUnknown $$ }-> '#-}' { PragmaEnd }---> %monad { P }-> %lexer { lexer } { EOF }-> %error { parseError }-> %name mparseModule page-> %name mparseExp trueexp-> %name mparsePat pat-> %name mparseDecl topdecl-> %name mparseType truectype-> %partial mfindOptPragmas toppragmas-> %tokentype { Token }-> %expect 6-> %%--------------------------------------------------------------------------------HSP Pages--Any HSP-specific parts requiring the XmlSyntax extension enabled will-be governed by the lexing, since all productions require at least one-special lexeme.--> page :: { Module }-> : toppragmas topxml {% checkExpr $2 >>= mkPageModule $1 }-> | toppragmas '<%' module '%>' srcloc topxml {% checkExpr $6 >>= \x -> mkPage ($3 $1) $5 x }-> | toppragmas module { $2 $1 }--> topxml :: { PExp }-> : srcloc '<' name attrs mattr '>' children '</' name '>' {% do { n <- checkEqNames $3 $9;-> let { cn = reverse $7;-> as = reverse $4; };-> return $ XTag $1 n as $5 cn } }-> | srcloc '<' name attrs mattr '/>' { XETag $1 $3 (reverse $4) $5 }---> toppragmas :: { [OptionPragma] }-> : open toppragmasaux close { $2 }--> toppragmasaux :: { [OptionPragma] }-> : toppragma ';' toppragmasaux { $1 : $3 }-> | {- nothing -} { [] }--> toppragma :: { OptionPragma }-> : srcloc '{-# LANGUAGE' conids optsemis '#-}' { LanguagePragma $1 $3 }-> | srcloc '{-# INCLUDE' optsemis '#-}' { IncludePragma $1 $2 }-> | srcloc '{-# OPTIONS' optsemis '#-}' { let (mc, s) = $2 in OptionsPragma $1 (readTool mc) s }-> | srcloc '{-# CFILES' optsemis '#-}' { CFilesPragma $1 $2 }- | srcloc '{-# unknown' '#-}' { let (n, s) = $2 in UnknownTopPragma $1 n s }--> conids :: { [Name] }-> : conid ',' conids { $1 : $3 }-> | conid { [$1] }--------------------------------------------------------------------------------Module Header--> module :: { [OptionPragma] -> Module }-> : srcloc 'module' modid maybemodwarning maybeexports 'where' body-> { \os -> Module $1 $3 os $4 $5 (fst $7) (snd $7) }-> | srcloc body-> { \os -> Module $1 main_mod os Nothing (Just [EVar (UnQual main_name)])-> (fst $2) (snd $2) }--> maybemodwarning :: { Maybe WarningText }-> : '{-# DEPRECATED' STRING '#-}' { Just $ DeprText $2 }-> | '{-# WARNING' STRING '#-}' { Just $ WarnText $2 }-> | {- empty -} { Nothing }--> body :: { ([ImportDecl],[Decl]) }-> : '{' bodyaux '}' { $2 }-> | open bodyaux close { $2 }--> bodyaux :: { ([ImportDecl],[Decl]) }-> : optsemis impdecls semis topdecls { (reverse $2, $4) }-> | optsemis topdecls { ([], $2) }-> | optsemis impdecls optsemis { (reverse $2, []) }-> | optsemis { ([], []) }--> semis :: { () }-> : optsemis ';' { () }--> optsemis :: { () }-> : semis { () }-> | {- empty -} { () }--------------------------------------------------------------------------------The Export List--> maybeexports :: { Maybe [ExportSpec] }-> : exports { Just $1 }-> | {- empty -} { Nothing }--> exports :: { [ExportSpec] }-> : '(' exportlist optcomma ')' { reverse $2 }-> | '(' optcomma ')' { [] }--> optcomma :: { () }-> : ',' { () }-> | {- empty -} { () }--> exportlist :: { [ExportSpec] }-> : exportlist ',' export { $3 : $1 }-> | export { [$1] }--> export :: { ExportSpec }-> : qvar { EVar $1 }-> | qtyconorcls { EAbs $1 }-> | qtyconorcls '(' '..' ')' { EThingAll $1 }-> | qtyconorcls '(' ')' { EThingWith $1 [] }-> | qtyconorcls '(' cnames ')' { EThingWith $1 (reverse $3) }-> | 'module' modid { EModuleContents $2 }--------------------------------------------------------------------------------Import Declarations--> impdecls :: { [ImportDecl] }-> : impdecls semis impdecl { $3 : $1 }-> | impdecl { [$1] }--> impdecl :: { ImportDecl }-> : srcloc 'import' optsrc optqualified maybepkg modid maybeas maybeimpspec-> { ImportDecl $1 $6 $4 $3 $5 $7 $8 }--> optsrc :: { Bool }-> : '{-# SOURCE' '#-}' { True }-> | {- empty -} { False }--> optqualified :: { Bool }-> : 'qualified' { True }-> | {- empty -} { False }--Requires the PackageImports extension enabled.-> maybepkg :: { Maybe String }-> : STRING {% do { checkEnabled PackageImports ;-> return $ Just $1 } }-> | {- empty -} { Nothing }--> maybeas :: { Maybe ModuleName }-> : 'as' modid { Just $2 }-> | {- empty -} { Nothing }---> maybeimpspec :: { Maybe (Bool, [ImportSpec]) }-> : impspec { Just $1 }-> | {- empty -} { Nothing }--> impspec :: { (Bool, [ImportSpec]) }-> : opthiding '(' importlist optcomma ')' { ($1, reverse $3) }-> | opthiding '(' optcomma ')' { ($1, []) }--> opthiding :: { Bool }-> : 'hiding' { True }-> | {- empty -} { False }--> importlist :: { [ImportSpec] }-> : importlist ',' importspec { $3 : $1 }-> | importspec { [$1] }--> importspec :: { ImportSpec }-> : var { IVar $1 }-> | tyconorcls { IAbs $1 }-> | tyconorcls '(' '..' ')' { IThingAll $1 }-> | tyconorcls '(' ')' { IThingWith $1 [] }-> | tyconorcls '(' cnames ')' { IThingWith $1 (reverse $3) }--> cnames :: { [CName] }-> : cnames ',' cname { $3 : $1 }-> | cname { [$1] }--> cname :: { CName }-> : var { VarName $1 }-> | con { ConName $1 }--------------------------------------------------------------------------------Fixity Declarations--> fixdecl :: { Decl }-> : srcloc infix prec ops { InfixDecl $1 $2 $3 (reverse $4) }--> prec :: { Int }-> : {- empty -} { 9 }-> | INT {% checkPrec $1 }--> infix :: { Assoc }-> : 'infix' { AssocNone }-> | 'infixl' { AssocLeft }-> | 'infixr' { AssocRight }--> ops :: { [Op] }-> : ops ',' op { $3 : $1 }-> | op { [$1] }--------------------------------------------------------------------------------Top-Level Declarations--Note: The report allows topdecls to be empty. This would result in another-shift/reduce-conflict, so we don't handle this case here, but in bodyaux.--> topdecls :: { [Decl] }-> : topdecls1 optsemis {% checkRevDecls $1 }--> topdecls1 :: { [Decl] }-> : topdecls1 semis topdecl { $3 : $1 }-> | topdecl { [$1] }--> topdecl :: { Decl }-> : srcloc 'type' dtype '=' truectype-> {% do { (c,ts) <- checkSimpleType $3;-> return (TypeDecl $1 c ts $5) } }--Requires the TypeFamilies extension enabled, but the lexer will handle-that through the 'family' keyword.-> | srcloc 'type' 'family' type optkind-> {% do { (c,ts) <- checkSimpleType $4;-> return (TypeFamDecl $1 c ts $5) } }--Here there is no special keyword so we must do the check.-> | srcloc 'type' 'instance' truedtype '=' truectype-> {% do { -- no checkSimpleType $4 since dtype may contain type patterns-> checkEnabled TypeFamilies ;-> return (TypeInsDecl $1 $4 $6) } }-> | srcloc data_or_newtype ctype constrs0 deriving-> {% do { (cs,c,t) <- checkDataHeader $3;-> checkDataOrNew $2 $4;-> return (DataDecl $1 $2 cs c t (reverse $4) $5) } }--Requires the GADTs extension enabled, handled in gadtlist.-> | srcloc data_or_newtype ctype optkind 'where' gadtlist deriving-> {% do { (cs,c,t) <- checkDataHeader $3;-> checkDataOrNew $2 $6;-> return (GDataDecl $1 $2 cs c t $4 (reverse $6) $7) } }--Same as above, lexer will handle it through the 'family' keyword.-> | srcloc 'data' 'family' ctype optkind-> {% do { (cs,c,t) <- checkDataHeader $4;-> return (DataFamDecl $1 cs c t $5) } }--Here we must check for TypeFamilies.-> | srcloc data_or_newtype 'instance' truectype constrs0 deriving-> {% do { -- (cs,c,t) <- checkDataHeader $4;-> checkEnabled TypeFamilies ;-> checkDataOrNew $2 $5;-> return (DataInsDecl $1 $2 $4 (reverse $5) $6) } }--This style requires both TypeFamilies and GADTs, the latter is handled in gadtlist.-> | srcloc data_or_newtype 'instance' truectype optkind 'where' gadtlist deriving-> {% do { -- (cs,c,t) <- checkDataHeader $4;-> checkEnabled TypeFamilies ;-> checkDataOrNew $2 $7;-> return (GDataInsDecl $1 $2 $4 $5 (reverse $7) $8) } }-> | srcloc 'class' ctype fds optcbody-> {% do { (cs,c,vs) <- checkClassHeader $3;-> return (ClassDecl $1 cs c vs $4 $5) } }-> | srcloc 'instance' ctype optvaldefs-> {% do { (cs,c,ts) <- checkInstHeader $3;-> return (InstDecl $1 cs c ts $4) } }--Requires the StandaloneDeriving extension enabled.-> | srcloc 'deriving' 'instance' ctype-> {% do { checkEnabled StandaloneDeriving ;-> (cs, c, ts) <- checkInstHeader $4;-> return (DerivDecl $1 cs c ts) } }-> | srcloc 'default' '(' typelist ')'-> { DefaultDecl $1 $4 }--Requires the TemplateHaskell extension, but the lexer will handle that-through the '$(' lexeme.-> | srcloc '$(' trueexp ')'-> { SpliceDecl $1 $ ParenSplice $3 }--These require the ForeignFunctionInterface extension, handled by the-lexer through the 'foreign' (and 'export') keyword.-> | srcloc 'foreign' 'import' callconv safety fspec-> { let (s,n,t) = $6 in ForImp $1 $4 $5 s n t }-> | srcloc 'foreign' 'export' callconv fspec-> { let (s,n,t) = $5 in ForExp $1 $4 s n t }--> | srcloc '{-# RULES' rules '#-}' { RulePragmaDecl $1 $ reverse $3 }-> | srcloc '{-# DEPRECATED' warndeprs '#-}' { DeprPragmaDecl $1 $ reverse $3 }-> | srcloc '{-# WARNING' warndeprs '#-}' { WarnPragmaDecl $1 $ reverse $3 }- | srcloc '{-# unknown' '#-}' { let (n, s) = $2 in UnknownDeclPragma $1 n s }-> | decl { $1 }--> data_or_newtype :: { DataOrNew }-> : 'data' { DataType }-> | 'newtype' { NewType }--> typelist :: { [Type] }-> : types {% do { ts <- mapM checkType $1;-> return $ reverse ts } }-> | truetype { [$1] }-> | {- empty -} { [] }--> decls :: { [Decl] }-> : optsemis decls1 optsemis {% checkRevDecls $2 }-> | optsemis { [] }--> decls1 :: { [Decl] }-> : decls1 semis decl { $3 : $1 }-> | decl { [$1] }--> decl :: { Decl }-> : signdecl { $1 }-> | fixdecl { $1 }-> | valdef { $1 }--> decllist :: { [Decl] }-> : '{' decls '}' { $2 }-> | open decls close { $2 }--> signdecl :: { Decl }-> : srcloc exp0b '::' truectype {% do { v <- checkSigVar $2;-> return $ TypeSig $1 [v] $4 } }-> | srcloc exp0b ',' vars '::' truectype {% do { v <- checkSigVar $2;-> return $ TypeSig $1 (v : reverse $4) $6 } }-> | srcloc '{-# INLINE' activation qvar '#-}' { InlineSig $1 $2 $3 $4 }-> | srcloc '{-# SPECIALISE' qvar '::' sigtypes '#-}' { SpecSig $1 $3 $5 }-> | srcloc '{-# SPECIALISE_INLINE' activation qvar '::' sigtypes '#-}'-> { SpecInlineSig $1 $2 $3 $4 $6 }-> | srcloc '{-# SPECIALISE' 'instance' ctype '#-}' {% do { (cs,c,ts) <- checkInstHeader $4;-> return $ InstSig $1 cs c ts } }--> sigtypes :: { [Type] }-> : sigtype { [ $1 ] }-> | sigtype ',' sigtypes { $1 : $3 }--> sigtype :: { Type }-> : ctype {% checkType $ mkTyForall Nothing [] $1 }--Binding can be either of implicit parameters, or it can be a normal sequence-of declarations. The two kinds cannot be mixed within the same block of-binding.--> binds :: { Binds }-> : decllist { BDecls $1 }-> | '{' ipbinds '}' { IPBinds $2 }-> | open ipbinds close { IPBinds $2 }--ATTENTION: Dirty Hackery Ahead! If the second alternative of vars is var-instead of qvar, we get another shift/reduce-conflict. Consider the-following programs:-- { (+) :: ... } only var- { (+) x y = ... } could (incorrectly) be qvar--We re-use expressions for patterns, so a qvar would be allowed in patterns-instead of a var only (which would be correct). But deciding what the + is,-would require more lookahead. So let's check for ourselves...--> vars :: { [Name] }-> : vars ',' var { $3 : $1 }-> | qvar {% do { n <- checkUnQual $1;-> return [n] } }--------------------------------------------------------------------------------FFI--These will only be called on in the presence of a 'foreign' keyword,-so no need to check for extensions.--> callconv :: { CallConv }-> : 'stdcall' { StdCall }-> | 'ccall' { CCall }--> safety :: { Safety }-> : 'safe' { PlaySafe False }-> | 'unsafe' { PlayRisky }-> | 'threadsafe' { PlaySafe True }-> | {- empty -} { PlaySafe False }--> fspec :: { (String, Name, Type) }-> : STRING var_no_safety '::' truedtype { ($1, $2, $4) }-> | var_no_safety '::' truedtype { ("", $1, $3) }--------------------------------------------------------------------------------Pragmas--> rules :: { [Rule] }-> : rules ';'rule { $3 : $1 }-> | rules ';' { $1 }-> | rule { [$1] }-> | {- empty -} { [] }--> rule :: { Rule }-> : STRING activation ruleforall exp0 '=' trueexp {% do { e <- checkRuleExpr $4;-> return $ Rule $1 $2 $3 e $6 } }--> activation :: { Activation }-> : {- empty -} { AlwaysActive }-> | '[' INT ']' { ActiveFrom (fromInteger $2) }-> | '[' '~' INT ']' { ActiveUntil (fromInteger $3) }--> ruleforall :: { Maybe [RuleVar] }-> : {- empty -} { Nothing }-> | 'forall' rulevars '.' { Just $2 }--> rulevars :: { [RuleVar] }-> : rulevar { [$1] }-> | rulevar rulevars { $1 : $2 }--> rulevar :: { RuleVar }-> : varid { RuleVar $1 }-> | '(' varid '::' truectype ')' { TypedRuleVar $2 $4 }--> warndeprs :: { [([Name],String)] }-> : warndeprs ';' warndepr { $3 : $1 }-> | warndeprs ';' { $1 }-> | warndepr { [$1] }-> | {- empty -} { [] }--> warndepr :: { ([Name], String) }-> : namevars STRING { ($1,$2) }--> namevars :: { [Name] }-> : namevar { [$1] }-> | namevar ',' namevars { $1 : $3 }--> namevar :: { Name }-> : con { $1 }-> | var { $1 }--------------------------------------------------------------------------------Types--Type equality contraints need the TypeFamilies extension.--> truedtype :: { Type }-> : dtype {% checkType $1 }--> dtype :: { PType }-> : btype { $1 }-> | btype qtyconop dtype { TyInfix $1 $2 $3 }-> | btype qtyvarop dtype { TyInfix $1 $2 $3 } -- FIXME-> | btype '->' ctype { TyFun $1 $3 }-> | btype '~' btype {% do { checkEnabled TypeFamilies ;-> return $ TyPred $ EqualP $1 $3 } }--Implicit parameters can occur in normal types, as well as in contexts.--> truetype :: { Type }-> : type {% checkType $1 }--> type :: { PType }-> : ivar '::' dtype { TyPred $ IParam $1 $3 }-> | dtype { $1 }--> truebtype :: { Type }-> : btype {% checkType $1 }--> btype :: { PType }-> : btype atype { TyApp $1 $2 }-> | atype { $1 }--UnboxedTuples requires the extension, but that will be handled through-the (# and #) lexemes. Kinds will be handled at the kind rule.--> trueatype :: { Type }-> : atype {% checkType $1 }--> atype :: { PType }-> : gtycon { TyCon $1 }-> | tyvar { TyVar $1 }-> | '(' types ')' { TyTuple Boxed (reverse $2) }-> | '(#' types1 '#)' { TyTuple Unboxed (reverse $2) }-> | '[' type ']' { TyApp (TyCon list_tycon_name) $2 }-> | '(' ctype ')' { TyParen $2 }-> | '(' ctype '::' kind ')' { TyKind $2 $4 }--> gtycon :: { QName }-> : otycon { $1 }-> | '(' ')' { unit_tycon_name }-> | '(' '->' ')' { fun_tycon_name }-> | '[' ']' { list_tycon_name }-> | '(' commas ')' { tuple_tycon_name Boxed $2 }-> | '(#' '#)' { unboxed_singleton_tycon_name }-> | '(#' commas '#)' { tuple_tycon_name Unboxed $2 }--> otycon :: { QName }-> : qconid { $1 }-> | '(' gconsym ')' { $2 }--These are for infix types--> qtyconop :: { QName }-> : qconop { $1 }---(Slightly edited) Comment from GHC's hsparser.y:-"context => type" vs "type" is a problem, because you can't distinguish between-- foo :: (Baz a, Baz a)- bar :: (Baz a, Baz a) => [a] -> [a] -> [a]--with one token of lookahead. The HACK is to parse the context as a btype-(more specifically as a tuple type), then check that it has the right form-C a, or (C1 a, C2 b, ... Cn z) and convert it into a context. Blaach!--Forall-quantified types require some extension to enable them, which-is any of the keyword-enabling ones, except ExistentialQuantification.--> truectype :: { Type }-> : ctype {% checkType $1 }--> ctype :: { PType }-> : 'forall' ktyvars '.' ctype { mkTyForall (Just $2) [] $4 }-> | context '=>' ctype { mkTyForall Nothing $1 $3 }-> | type { $1 }--Equality constraints require the TypeFamilies extension.--> context :: { PContext }-> : btype {% checkPContext $1 }-> | btype '~' btype {% checkEnabled TypeFamilies >> checkPContext (TyPred $ EqualP $1 $3) }--> types :: { [PType] }-> : types1 ',' ctype { $3 : $1 }--> types1 :: { [PType] }-> : ctype { [$1] }-> | types1 ',' ctype { $3 : $1 }--> ktyvars :: { [TyVarBind] }-> : ktyvars ktyvar { $2 : $1 }-> | {- empty -} { [] }--> ktyvar :: { TyVarBind }-> : tyvar { UnkindedVar $1 }-> | '(' tyvar '::' kind ')' { KindedVar $2 $4 }--> tyvars :: { [Name] }-> : tyvars tyvar { $2 : $1 }-> | {- empty -} { [] }---------------------------------------------------------------------------------Functional Dependencies--These require the FunctionalDependencies extension to be enabled.--> fds :: { [FunDep] }-> : {- empty -} { [] }-> | '|' fds1 {% checkEnabled FunctionalDependencies >> return (reverse $2) }--> fds1 :: { [FunDep] }-> : fds1 ',' fd { $3 : $1 }-> | fd { [$1] }--> fd :: { FunDep }-> : tyvars '->' tyvars { FunDep (reverse $1) (reverse $3) }--------------------------------------------------------------------------------Datatype declarations--GADTs - require the GADTs extension enabled, but we handle that at the calling site.--> gadtlist :: { [GadtDecl] }-> : gadtlist1 {% checkEnabled GADTs >> return $1 }--> gadtlist1 :: { [GadtDecl] }-> : '{' gadtconstrs1 '}' { $2 }-> | open gadtconstrs1 close { $2 }--> gadtconstrs1 :: { [GadtDecl] }-> : optsemis gadtconstrs optsemis { $2 }--> gadtconstrs :: { [GadtDecl] }-> : gadtconstrs semis gadtconstr { $3 : $1 }-> | gadtconstr { [$1] }--> gadtconstr :: { GadtDecl }-> : srcloc qcon '::' truectype {% do { c <- checkUnQual $2;-> return $ GadtDecl $1 c $4 } }--To allow the empty case we need the EmptyDataDecls extension.-> constrs0 :: { [QualConDecl] }-> : {- empty -} {% checkEnabled EmptyDataDecls >> return [] }-> | '=' constrs { $2 }--> constrs :: { [QualConDecl] }-> : constrs '|' constr { $3 : $1 }-> | constr { [$1] }--> constr :: { QualConDecl }-> : srcloc forall context '=>' constr1 {% do { checkEnabled ExistentialQuantification ;-> ctxt <- checkContext $3 ;-> return $ QualConDecl $1 $2 ctxt $5 } }-> | srcloc forall constr1 { QualConDecl $1 $2 [] $3 }--> forall :: { [TyVarBind] }-> : 'forall' ktyvars '.' {% checkEnabled ExistentialQuantification >> return $2 }-> | {- empty -} { [] }--To avoid conflicts when introducing type operators, we need to parse record constructors-as qcon and then check separately that they are truly unqualified.--> constr1 :: { ConDecl }-> : scontype { ConDecl (fst $1) (snd $1) }-> | sbtype conop sbtype { InfixConDecl $1 $2 $3 }-> | qcon '{' '}' {% do { c <- checkUnQual $1; return $ RecDecl c [] } }-> | qcon '{' fielddecls '}' {% do { c <- checkUnQual $1; return $ RecDecl c (reverse $3) } }--> scontype :: { (Name, [BangType]) }-> : btype {% do { (c,ts) <- splitTyConApp $1;-> return (c,map UnBangedTy ts) } }-> | scontype1 { $1 }--> scontype1 :: { (Name, [BangType]) }-> : btype '!' trueatype {% do { (c,ts) <- splitTyConApp $1;-> return (c,map UnBangedTy ts++-> [BangedTy $3]) } }-> | btype '{-# UNPACK' '#-}' '!' trueatype {% do { (c,ts) <- splitTyConApp $1;-> return (c,map UnBangedTy ts++-> [UnpackedTy $5]) } }-> | scontype1 satype { (fst $1, snd $1 ++ [$2] ) }--> satype :: { BangType }-> : trueatype { UnBangedTy $1 }-> | '!' trueatype { BangedTy $2 }-> | '{-# UNPACK' '#-}' '!' trueatype { UnpackedTy $4 }--> sbtype :: { BangType }-> : truebtype { UnBangedTy $1 }-> | '!' trueatype { BangedTy $2 }-> | '{-# UNPACK' '#-}' '!' trueatype { UnpackedTy $4 }--> fielddecls :: { [([Name],BangType)] }-> : fielddecls ',' fielddecl { $3 : $1 }-> | fielddecl { [$1] }--> fielddecl :: { ([Name],BangType) }-> : vars '::' stype { (reverse $1, $3) }--> stype :: { BangType }-> : truectype { UnBangedTy $1 }-> | '!' trueatype { BangedTy $2 }-> | '{-# UNPACK' '#-}' '!' trueatype { UnpackedTy $4 }--> deriving :: { [Deriving] }-> : {- empty -} { [] }-> | 'deriving' qtycls1 { [($2, [])] }-> | 'deriving' '(' ')' { [] }-> | 'deriving' '(' dclasses ')' { reverse $3 }--> dclasses :: { [Deriving] }-> : types1 {% checkDeriving $1 }--> qtycls1 :: { QName }-> : qconid { $1 }---------------------------------------------------------------------------------Kinds--> kind :: { Kind }-> : kind1 {% checkEnabled KindSignatures >> return $1 }--> kind1 :: { Kind }-> : akind { $1 }-> | akind '->' kind1 { KindFn $1 $3 }--> akind :: { Kind }-> : '*' { KindStar }-> | '!' { KindBang }-> | '(' kind1 ')' { $2 }--> optkind :: { Maybe Kind }-> : {-empty-} { Nothing }-> | '::' kind { Just $2 }-------------------------------------------------------------------------------Class declarations--No implicit parameters in the where clause of a class declaration.-> optcbody :: { [ClassDecl] }-> : 'where' cldecllist {% checkClassBody $2 }-> | {- empty -} { [] }--> cldecllist :: { [ClassDecl] }-> : '{' cldecls '}' { $2 }-> | open cldecls close { $2 }--> cldecls :: { [ClassDecl] }-> : optsemis cldecls1 optsemis {% checkRevClsDecls $2 }-> | optsemis { [] }--> cldecls1 :: { [ClassDecl] }-> : cldecls1 semis cldecl { $3 : $1 }-> | cldecl { [$1] }--Associated types require the TypeFamilies extension.--> cldecl :: { ClassDecl }-> : decl { ClsDecl $1 }-> | atdecl {% checkEnabled TypeFamilies >> return $1 }--> atdecl :: { ClassDecl }-> : srcloc 'type' type optkind-> {% do { (c,ts) <- checkSimpleType $3;-> return (ClsTyFam $1 c ts $4) } }-> | srcloc 'type' truedtype '=' truectype-> { ClsTyDef $1 $3 $5 }-> | srcloc 'data' ctype optkind-> {% do { (cs,c,t) <- checkDataHeader $3;-> return (ClsDataFam $1 cs c t $4) } }--------------------------------------------------------------------------------Instance declarations--> optvaldefs :: { [InstDecl] }-> : 'where' '{' valdefs '}' {% checkInstBody $3 }-> | 'where' open valdefs close {% checkInstBody $3 }-> | {- empty -} { [] }--> valdefs :: { [InstDecl] }-> : optsemis valdefs1 optsemis {% checkRevInstDecls $2 }-> | optsemis { [] }--> valdefs1 :: { [InstDecl] }-> : valdefs1 semis insvaldef { $3 : $1 }-> | insvaldef { [$1] }--Associated types require the TypeFamilies extension enabled.--> insvaldef :: { InstDecl }-> : valdef { InsDecl $1 }-> | atinst {% checkEnabled TypeFamilies >> return $1 }-> | inlinst { $1 }--> inlinst :: { InstDecl }-> : srcloc '{-# INLINE' activation qvar '#-}' { InsInline $1 $2 $3 $4 }--> atinst :: { InstDecl }-> : srcloc 'type' truedtype '=' truectype-> {% do { -- no checkSimpleType $4 since dtype may contain type patterns-> return (InsType $1 $3 $5) } }-> | srcloc data_or_newtype truectype constrs0 deriving-> {% do { -- (cs,c,t) <- checkDataHeader $4;-> checkDataOrNew $2 $4;-> return (InsData $1 $2 $3 (reverse $4) $5) } }-> | srcloc data_or_newtype truectype optkind 'where' gadtlist deriving-> {% do { -- (cs,c,t) <- checkDataHeader $4;-> checkDataOrNew $2 $6;-> return (InsGData $1 $2 $3 $4 (reverse $6) $7) } }--------------------------------------------------------------------------------Value definitions--> valdef :: { Decl }-> : srcloc exp0b optsig rhs optwhere {% checkValDef $1 $2 $3 $4 $5 }-> | srcloc '!' aexp rhs optwhere {% do { checkEnabled BangPatterns ;-> p <- checkPattern $3;-> return $ PatBind $1 p Nothing $4 $5 } }--May bind implicit parameters-> optwhere :: { Binds }-> : 'where' binds { $2 }-> | {- empty -} { BDecls [] }--Type signatures on value definitions require ScopedTypeVariables (or PatternSignatures, which is deprecated).--> optsig :: { Maybe Type }-> : '::' truectype {% checkEnabled ScopedTypeVariables >> return (Just $2) }-> | {- empty -} { Nothing }--> rhs :: { Rhs }-> : '=' trueexp { UnGuardedRhs $2 }-> | gdrhs { GuardedRhss (reverse $1) }--> gdrhs :: { [GuardedRhs] }-> : gdrhs gdrh { $2 : $1 }-> | gdrh { [$1] }--Guards may contain patterns if PatternGuards is enabled, hence quals instead of exp.-> gdrh :: { GuardedRhs }-> : srcloc '|' quals '=' trueexp {% checkPatternGuards $3 >> return (GuardedRhs $1 (reverse $3) $5) }--------------------------------------------------------------------------------Expressions--Note: The Report specifies a meta-rule for lambda, let and if expressions-(the exp's that end with a subordinate exp): they extend as far to-the right as possible. That means they cannot be followed by a type-signature or infix application. To implement this without shift/reduce-conflicts, we split exp10 into these expressions (exp10a) and the others-(exp10b). That also means that only an exp0 ending in an exp10b (an exp0b)-can followed by a type signature or infix application. So we duplicate-the exp0 productions to distinguish these from the others (exp0a).--Ugly: We need non-parenthesized post-operators for HaRP, and to parse both-these and normal left sections, we parse both as PostOp and let the post pass-mangle them into the correct form depending on context.--> trueexp :: { Exp }-> : exp {% checkExpr $1 }--> exp :: { PExp }-> : exp0b '::' srcloc truectype { ExpTypeSig $3 $1 $4 }-> | exp0 { $1 }-> | exp0b qop { PostOp $1 $2 }-> | exp0b '-<' exp { LeftArrApp $1 $3 }-> | exp0b '>-' exp { RightArrApp $1 $3 }-> | exp0b '-<<' exp { LeftArrHighApp $1 $3 }-> | exp0b '>>-' exp { RightArrHighApp $1 $3 }--> exp0 :: { PExp }-> : exp0a { $1 }-> | exp0b { $1 }--> exp0a :: { PExp }-> : exp0b qop exp10a { InfixApp $1 $2 $3 }-> | exp10a { $1 }--Hyphenated identifiers require XmlSyntax to be enabled, handled in the lexer.--> exp0b :: { PExp }-> : exp0b qop exp10b { InfixApp $1 $2 $3 }-> | dvarexp { $1 }-> | exp10b { $1 }--> exp10a :: { PExp }-> : '\\' srcloc apats '->' exp { Lambda $2 (reverse $3) $5 }-A let may bind implicit parameters-> | 'let' binds 'in' exp { Let $2 $4 }-> | 'if' exp 'then' exp 'else' exp { If $2 $4 $6 }-> | 'proc' apat '->' exp { Proc $2 $4 }-> | exppragma { $1 }--mdo blocks require the RecursiveDo extension enabled, but the lexer handles that.--> exp10b :: { PExp }-> : 'case' exp 'of' altslist { Case $2 $4 }-> | '-' fexp { NegApp $2 }-> | 'do' stmtlist { Do $2 }-> | 'mdo' stmtlist { MDo $2 }-> | fexp { $1 }--> exppragma :: { PExp }-> : '{-# CORE' STRING '#-}' exp { CorePragma $2 $4 }-> | '{-# SCC' STRING '#-}' exp { SCCPragma $2 $4 }-> | '{-# GENERATED' STRING INT ':' INT '-' INT ':' INT '#-}' exp-> { GenPragma $2 (fromInteger $3, fromInteger $5)-> (fromInteger $7, fromInteger $9) $11 }- | '{-# unknown' '#-}' { let (n, s) = $1 in UnknownExpPragma n s }--> fexp :: { PExp }-> : fexp aexp { App $1 $2 }-> | aexp { $1 }--> apats :: { [Pat] }-> : apats apat { $2 : $1 }-> | apat { [$1] }--> apat :: { Pat }-> : aexp {% checkPattern $1 }-> | '!' aexp {% checkPattern (BangPat $2) }--UGLY: Because patterns and expressions are mixed, aexp has to be split into-two rules: One right-recursive and one left-recursive. Otherwise we get two-reduce/reduce-errors (for as-patterns and irrefutable patters).--Even though the variable in an as-pattern cannot be qualified, we use-qvar here to avoid a shift/reduce conflict, and then check it ourselves-(as for vars above).--Non-linear name binding, @:, requires RegularPatterns, but the lexer handles that.--> aexp :: { PExp }-> : qvar '@' aexp {% do { n <- checkUnQual $1;-> return (AsPat n $3) } }-> | qvar '@:' aexp {% do { n <- checkUnQual $1;-> return (CAsRP n $3) } }-> | '~' aexp { IrrPat $2 }-> | aexp1 { $1 }--Note: The first two alternatives of aexp1 are not necessarily record-updates: they could be labeled constructions.-Generics-style explicit type arguments need the Generics extension, but-we check that in the lexer.--> aexp1 :: { PExp }-> : aexp1 '{' '}' {% mkRecConstrOrUpdate $1 [] }-> | aexp1 '{' fbinds '}' {% mkRecConstrOrUpdate $1 (reverse $3) }-> | qvar '{|' truetype '|}' { ExplTypeArg $1 $3 }-> | aexp2 { $1 }--According to the Report, the left section (e op) is legal iff (e op x)-parses equivalently to ((e) op x). Thus e must be an exp0b.-An implicit parameter can be used as an expression, enabled by the lexer.-Extensions using banana brackets are also enabled by the lexer. The only-thing we need to look at here is the erpats that use no non-standard lexemes.--> aexp2 :: { PExp }-> : ivar { IPVar $1 }-> | qvar { Var $1 }-> | gcon { $1 }-> | literal { Lit $1 }-> | '(' texp ')' { Paren $2 }-> | '(' texp tsectend { TupleSection (Just $2 : $3) }-> | '(' commas texp ')' { TupleSection $ replicate ($2 - 1) Nothing ++ [Just $3] }-> | '(' commas texp tsectend { TupleSection $ replicate ($2 - 1) Nothing ++ Just $3 : $4 }-> | '[' list ']' { $2 }-We parse left sections as PostOp instead, and post-mangle them, see above- | '(' exp0b rqop ')' { LeftSection $2 $3 } -- this line is commented out-We parse right sections as PreOp, since we need to check for bang patterns.- | '(' qopm exp0 ')' { RightSection $2 $3 }-> | '_' { WildCard }-> | '(' erpats ')' {% checkEnabled RegularPatterns >> return $2 }-> | '(|' sexps '|)' { SeqRP $ reverse $2 }-> | '(|' exp '|' quals '|)' { GuardRP $2 $ reverse $4 }-> | xml { $1 }--Template Haskell - all this is enabled in the lexer.-> | IDSPLICE { SpliceExp $ IdSplice $1 }-> | '$(' trueexp ')' { SpliceExp $ ParenSplice $2 }-> | '[|' trueexp '|]' { BracketExp $ ExpBracket $2 }-> | '[p|' exp0 '|]' {% do { p <- checkPattern $2;-> return $ BracketExp $ PatBracket p } }-> | '[t|' truectype '|]' { BracketExp $ TypeBracket $2 }-> | '[d|' open topdecls close '|]' { BracketExp $ DeclBracket $3 }-> | VARQUOTE qvar { VarQuote $2 }-> | VARQUOTE qcon { VarQuote $2 }-> | TYPQUOTE tyvar { TypQuote (UnQual $2) }-> | TYPQUOTE gtycon { TypQuote $2 }-> | QUASIQUOTE { let (n,q) = $1 in QuasiQuote n q }-End Template Haskell--> commas :: { Int }-> : commas ',' { $1 + 1 }-> | ',' { 1 }-- texps :: { [PExp] }- : texps ',' texp { $3 : $1 }- | texp { [$1] }--> texp :: { PExp }-> : exp { $1 }-> | qopm exp0 { PreOp $1 $2 }-> | exp '->' exp {% checkEnabled ViewPatterns >> return (ViewPat $1 $3) }--> tsectend :: { [Maybe PExp] }-> : commas texp tsectend { replicate ($1 - 1) Nothing ++ Just $2 : $3 }-> | commas texp ')' { replicate ($1 - 1) Nothing ++ [Just $2] }-> | commas ')' { replicate $1 Nothing }--------------------------------------------------------------------------------Harp Extensions--> sexps :: { [PExp] }-> : sexps ',' exp { $3 : $1 }-> | exp { [$1] }--Either patterns are left associative-> erpats :: { PExp }-> : exp '|' erpats { EitherRP $1 $3 }-> | exp '|' exp { EitherRP $1 $3 }--------------------------------------------------------------------------------Hsx Extensions - requires XmlSyntax, but the lexer handles all that.--> xml :: { PExp }-> : srcloc '<' name attrs mattr '>' children '</' name '>' {% do { n <- checkEqNames $3 $9;-> let { cn = reverse $7;-> as = reverse $4; };-> return $ XTag $1 n as $5 cn } }-> | srcloc '<' name attrs mattr '/>' { XETag $1 $3 (reverse $4) $5 }-> | '<%' exp '%>' { XExpTag $2 }--> children :: { [PExp] }-> : children child { $2 : $1 }-> | {- empty -} { [] }--> child :: { PExp }-> : PCDATA { XPcdata $1 }-> | '<[' sexps ']>' { XRPats $ reverse $2 }-> | xml { $1 }--> name :: { XName }-> : xmlname ':' xmlname { XDomName $1 $3 }-> | xmlname { XName $1 }--> xmlname :: { String }-> : VARID { $1 }-> | CONID { $1 }-> | DVARID { mkDVar $1 }-> | xmlkeyword { $1 }--> xmlkeyword :: { String }-> : 'type' { "type" }-> | 'class' { "class" }-> | 'data' { "data" }-> | 'foreign' { "foreign" }-> | 'export' { "export" }-> | 'safe' { "safe" }-> | 'unsafe' { "unsafe" }-> | 'threadsafe' { "threadsafe" }-> | 'stdcall' { "stdcall" }-> | 'ccall' { "ccall" }-> | 'as' { "as" }-> | 'by' { "by" }-> | 'case' { "case" }-> | 'default' { "default" }-> | 'deriving' { "deriving" }-> | 'do' { "do" }-> | 'else' { "else" }-> | 'family' { "family" }-> | 'forall' { "forall" }-> | 'group' { "group" }-> | 'hiding' { "hiding" }-> | 'if' { "if" }-> | 'import' { "import" }-> | 'in' { "in" }-> | 'infix' { "infix" }-> | 'infixl' { "infixl" }-> | 'infixr' { "infixr" }-> | 'instance' { "instance" }-> | 'let' { "let" }-> | 'mdo' { "mdo" }-> | 'module' { "module" }-> | 'newtype' { "newtype" }-> | 'of' { "of" }-> | 'proc' { "proc" }-> | 'rec' { "rec" }-> | 'then' { "then" }-> | 'using' { "using" }-> | 'where' { "where" }-> | 'qualified' { "qualified" }---> attrs :: { [ParseXAttr] }-> : attrs attr { $2 : $1 }-> | {- empty -} { [] }--> attr :: { ParseXAttr }-> : name '=' aexp { XAttr $1 $3 }--> mattr :: { Maybe PExp }-> : aexp { Just $1 }-> | {-empty-} { Nothing }--Turning dash variables into infix expressions with '-'-> dvarexp :: { PExp }-> : DVARID { mkDVarExpr $1 }--------------------------------------------------------------------------------List expressions--The rules below are little bit contorted to keep lexps left-recursive while-avoiding another shift/reduce-conflict.--> list :: { PExp }-> : texp { List [$1] }-> | lexps { List (reverse $1) }-> | texp '..' { EnumFrom $1 }-> | texp ',' exp '..' { EnumFromThen $1 $3 }-> | texp '..' exp { EnumFromTo $1 $3 }-> | texp ',' exp '..' exp { EnumFromThenTo $1 $3 $5 }-> | texp '|' pqualstmts { ParComp $1 (reverse $3) }--> lexps :: { [PExp] }-> : lexps ',' texp { $3 : $1 }-> | texp ',' texp { [$3,$1] }--------------------------------------------------------------------------------List comprehensions--> pqualstmts :: { [[QualStmt]] }-> : pqualstmts '|' qualstmts { reverse $3 : $1 }-> | qualstmts { [reverse $1] }--> qualstmts :: { [QualStmt] }-> : qualstmts ',' qualstmt { $3 : $1 }-> | qualstmt { [$1] }--> qualstmt :: { QualStmt }-> : transformqual { $1 }-> | qual { QualStmt $1 }--> transformqual :: { QualStmt }-> : 'then' trueexp { ThenTrans $2 }-> | 'then' trueexp 'by' trueexp { ThenBy $2 $4 }-> | 'then' 'group' 'by' trueexp { GroupBy $4 }-> | 'then' 'group' 'using' trueexp { GroupUsing $4 }-> | 'then' 'group' 'by' trueexp 'using' trueexp { GroupByUsing $4 $6 }--> quals :: { [Stmt] }-> : quals ',' qual { $3 : $1 }-> | qual { [$1] }--> qual :: { Stmt }-> : pat srcloc '<-' trueexp { Generator $2 $1 $4 }-> | trueexp { Qualifier $1 }-> | 'let' binds { LetStmt $2 }---------------------------------------------------------------------------------Case alternatives--> altslist :: { [Alt] }-> : '{' alts '}' { $2 }-> | open alts close { $2 }--> alts :: { [Alt] }-> : optsemis alts1 optsemis { reverse $2 }--> alts1 :: { [Alt] }-> : alts1 semis alt { $3 : $1 }-> | alt { [$1] }--> alt :: { Alt }-> : srcloc pat ralt optwhere { Alt $1 $2 $3 $4 }--> ralt :: { GuardedAlts }-> : '->' trueexp { UnGuardedAlt $2 }-> | gdpats { GuardedAlts (reverse $1) }--> gdpats :: { [GuardedAlt] }-> : gdpats gdpat { $2 : $1 }-> | gdpat { [$1] }--A guard can be a pattern guard if PatternGuards is enabled, hence quals instead of exp0.-> gdpat :: { GuardedAlt }-> : srcloc '|' quals '->' trueexp {% do { checkPatternGuards $3;-> return (GuardedAlt $1 (reverse $3) $5) } }--> pat :: { Pat }-> : exp {% checkPattern $1 }-> | '!' aexp {% checkPattern (BangPat $2) }-------------------------------------------------------------------------------Statement sequences--As per the Report, but with stmt expanded to simplify building the list-without introducing conflicts. This also ensures that the last stmt is-an expression.--> stmtlist :: { [Stmt] }-> : '{' stmts '}' { $2 }-> | open stmts close { $2 }--A let statement may bind implicit parameters.-> stmts :: { [Stmt] }-> : stmt stmts1 { $1 : $2 }-> | ';' stmts { $2 }-> | {- empty -} { [] }--> stmts1 :: { [Stmt] }-> : ';' stmts { $2 }-> | {- empty -} { [] }--> stmt :: { Stmt }-> : 'let' binds { LetStmt $2 }-> | pat srcloc '<-' trueexp { Generator $2 $1 $4 }-> | trueexp { Qualifier $1 }-> | 'rec' stmtlist { RecStmt $2 }--------------------------------------------------------------------------------Record Field Update/Construction--> fbinds :: { [PFieldUpdate] }-> : fbinds ',' fbind { $3 : $1 }-> | fbind { [$1] }--Puns and wild cards need the respective extensions enabled.--> fbind :: { PFieldUpdate }-> : qvar '=' exp { FieldUpdate $1 $3 }-> | qvar {% checkEnabled NamedFieldPuns >> checkUnQual $1 >>= return . FieldPun }-> | '..' {% checkEnabled RecordWildCards >> return FieldWildcard }--------------------------------------------------------------------------------Implicit parameter bindings - need the ImplicitParameter extension enabled, but the lexer handles that.--> ipbinds :: { [IPBind] }-> : optsemis ipbinds1 optsemis { reverse $2 }--> ipbinds1 :: { [IPBind] }-> : ipbinds1 semis ipbind { $3 : $1 }-> | ipbind { [$1] }--> ipbind :: { IPBind }-> : srcloc ivar '=' trueexp { IPBind $1 $2 $4 }--------------------------------------------------------------------------------Variables, Constructors and Operators.--> gcon :: { PExp }-> : '(' ')' { p_unit_con }-> | '[' ']' { List [] }-> | '(' commas ')' { p_tuple_con Boxed $2 }-> | '(#' '#)' { p_unboxed_singleton_con }-> | '(#' commas '#)' { p_tuple_con Unboxed $2 }-> | qcon { Con $1 }--> var :: { Name }-> : varid { $1 }-> | '(' varsym ')' { $2 }--> var_no_safety :: { Name }-> : varid_no_safety { $1 }-> | '(' varsym ')' { $2 }--> qvar :: { QName }-> : qvarid { $1 }-> | '(' qvarsym ')' { $2 }--Implicit parameter-> ivar :: { IPName }-> : ivarid { $1 }--> con :: { Name }-> : conid { $1 }-> | '(' consym ')' { $2 }--> qcon :: { QName }-> : qconid { $1 }-> | '(' gconsym ')' { $2 }--> varop :: { Name }-> : varsym { $1 }-> | '`' varid '`' { $2 }--> qvarop :: { QName }-> : qvarsym { $1 }-> | '`' qvarid '`' { $2 }--> qvaropm :: { QName }-> : qvarsymm { $1 }-> | '`' qvarid '`' { $2 }--> conop :: { Name }-> : consym { $1 }-> | '`' conid '`' { $2 }--> qconop :: { QName }-> : gconsym { $1 }-> | '`' qconid '`' { $2 }--> op :: { Op }-> : varop { VarOp $1 }-> | conop { ConOp $1 }--> qop :: { QOp }-> : qvarop { QVarOp $1 }-> | qconop { QConOp $1 }--> qopm :: { QOp }-> : qvaropm { QVarOp $1 }-> | qconop { QConOp $1 }--> gconsym :: { QName }-> : ':' { list_cons_name }-> | qconsym { $1 }--------------------------------------------------------------------------------Identifiers and Symbols--> qvarid :: { QName }-> : varid { UnQual $1 }-> | QVARID { Qual (ModuleName (fst $1)) (Ident (snd $1)) }--> varid_no_safety :: { Name }-> : VARID { Ident $1 }-> | 'as' { as_name }-> | 'qualified' { qualified_name }-> | 'hiding' { hiding_name }-> | 'export' { export_name }-> | 'stdcall' { stdcall_name }-> | 'ccall' { ccall_name }--> varid :: { Name }-> : varid_no_safety { $1 }-> | 'safe' { safe_name }-> | 'unsafe' { unsafe_name }-> | 'threadsafe' { threadsafe_name }---Implicit parameter-> ivarid :: { IPName }-> : IDUPID { IPDup $1 }-> | ILINID { IPLin $1 }--> qconid :: { QName }-> : conid { UnQual $1 }-> | QCONID { Qual (ModuleName (fst $1)) (Ident (snd $1)) }--> conid :: { Name }-> : CONID { Ident $1 }--> qconsym :: { QName }-> : consym { UnQual $1 }-> | QCONSYM { Qual (ModuleName (fst $1)) (Symbol (snd $1)) }--> consym :: { Name }-> : CONSYM { Symbol $1 }--> qvarsym :: { QName }-> : varsym { UnQual $1 }-> | qvarsym1 { $1 }--> qvarsymm :: { QName }-> : varsymm { UnQual $1 }-> | qvarsym1 { $1 }--> varsym :: { Name }-> : VARSYM { Symbol $1 }-> | '-' { minus_name }-> | '!' { bang_name }-> | '.' { dot_name }-> | '*' { star_name }--> varsymm :: { Name } -- varsym not including '-'-> : VARSYM { Symbol $1 }-> | '!' { bang_name }-> | '.' { dot_name }-> | '*' { star_name }--> qvarsym1 :: { QName }-> : QVARSYM { Qual (ModuleName (fst $1)) (Symbol (snd $1)) }--> literal :: { Literal }-> : INT { Int $1 }-> | CHAR { Char $1 }-> | RATIONAL { Frac $1 }-> | STRING { String $1 }-> | PRIMINT { PrimInt $1 }-> | PRIMWORD { PrimWord $1 }-> | PRIMFLOAT { PrimFloat $1 }-> | PRIMDOUBLE { PrimDouble $1 }-> | PRIMCHAR { PrimChar $1 }-> | PRIMSTRING { PrimString $1 }---> srcloc :: { SrcLoc } : {% getSrcLoc }--------------------------------------------------------------------------------Layout--> open :: { () } : {% pushCurrentContext {- >>= \x -> trace (show x) (return x) -} }--> close :: { () }-> : vccurly {% return () {- >>= \x -> trace (show x ++ show x ++ show x) (return x) -} } -- context popped in lexer.-> | error {% popContext {- >>= \x -> trace (show x ++ show x) (return x) -} }--------------------------------------------------------------------------------Miscellaneous (mostly renamings)--> modid :: { ModuleName }-> : CONID { ModuleName $1 }-> | QCONID { ModuleName (fst $1 ++ '.':snd $1) }--> tyconorcls :: { Name }-> : con { $1 }-- tycon :: { Name }- : conid { $1 }--> qtyconorcls :: { QName }-> : qcon { $1 }--> tyvar :: { Name }-> : varid { $1 }--> qtyvarop :: { QName }-> qtyvarop : '`' tyvar '`' { UnQual $2 }-> | tyvarsym { UnQual $1 }--> tyvarsym :: { Name }-> tyvarsym : VARSYM { Symbol $1 }---------------------------------------------------------------------------------> {- happyError :: P a- happyError = fail "Parse error"--> parseError :: Token -> P a-> parseError t = fail $ "Parse error: " ++ show t--> -- | Class to reuse the parse function at many different types.-> class Parseable ast where-> -- | Parse a string with default mode.-> parse :: String -> ParseResult ast-> -- | Parse a string with an explicit mode.-> parseWithMode :: ParseMode -> String -> ParseResult ast-> -- | Parse a string with an explicit mode, returning all comments along the AST-> parseWithComments :: ParseMode -> String -> ParseResult (ast, [Comment])->-> instance Parseable Module where-> parse = parseModule-> parseWithMode = parseModuleWithMode-> parseWithComments = parseModuleWithComments->-> instance Parseable Exp where-> parse = parseExp-> parseWithMode = parseExpWithMode-> parseWithComments = parseExpWithComments->-> instance Parseable Pat where-> parse = parsePat-> parseWithMode = parsePatWithMode-> parseWithComments = parsePatWithComments->-> instance Parseable Decl where-> parse = parseDecl-> parseWithMode = parseDeclWithMode-> parseWithComments = parseDeclWithComments->-> instance Parseable Type where-> parse = parseType-> parseWithMode = parseTypeWithMode-> parseWithComments = parseTypeWithComments->--> -- | Parse of a string, which should contain a complete Haskell module.-> parseModule :: String -> ParseResult Module-> parseModule = simpleParse mparseModule--> -- | Parse of a string containing a complete Haskell module, using an explicit mode.-> parseModuleWithMode :: ParseMode -> String -> ParseResult Module-> parseModuleWithMode = modeParse mparseModule--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseModuleWithComments :: ParseMode -> String -> ParseResult (Module, [Comment])-> parseModuleWithComments = commentParse mparseModule--> -- | Parse of a string containing a Haskell expression.-> parseExp :: String -> ParseResult Exp-> parseExp = simpleParse mparseExp--> -- | Parse of a string containing a Haskell expression, using an explicit mode.-> parseExpWithMode :: ParseMode -> String -> ParseResult Exp-> parseExpWithMode = modeParse mparseExp--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseExpWithComments :: ParseMode -> String -> ParseResult (Exp, [Comment])-> parseExpWithComments = commentParse mparseExp--> -- | Parse of a string containing a Haskell pattern.-> parsePat :: String -> ParseResult Pat-> parsePat = simpleParse mparsePat--> -- | Parse of a string containing a Haskell pattern, using an explicit mode.-> parsePatWithMode :: ParseMode -> String -> ParseResult Pat-> parsePatWithMode = modeParse mparsePat--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parsePatWithComments :: ParseMode -> String -> ParseResult (Pat, [Comment])-> parsePatWithComments = commentParse mparsePat--> -- | Parse of a string containing a Haskell top-level declaration.-> parseDecl :: String -> ParseResult Decl-> parseDecl = simpleParse mparseDecl--> -- | Parse of a string containing a Haskell top-level declaration, using an explicit mode.-> parseDeclWithMode :: ParseMode -> String -> ParseResult Decl-> parseDeclWithMode = modeParse mparseDecl--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseDeclWithComments :: ParseMode -> String -> ParseResult (Decl, [Comment])-> parseDeclWithComments = commentParse mparseDecl--> -- | Parse of a string containing a Haskell type.-> parseType :: String -> ParseResult Type-> parseType = runParser mparseType--> -- | Parse of a string containing a Haskell type, using an explicit mode.-> parseTypeWithMode :: ParseMode -> String -> ParseResult Type-> parseTypeWithMode mode = runParserWithMode mode mparseType--> -- | Parse of a string containing a complete Haskell module, using an explicit mode, retaining comments.-> parseTypeWithComments :: ParseMode -> String -> ParseResult (Type, [Comment])-> parseTypeWithComments mode str = runParserWithModeComments mode mparseType str---> simpleParse :: AppFixity a => P a -> String -> ParseResult a-> simpleParse p = fmap (applyFixities preludeFixities) . runParser p--> modeParse :: AppFixity a => P a -> ParseMode -> String -> ParseResult a-> modeParse p mode = fmap (applyFixities (fixities mode)) . runParserWithMode mode p--> commentParse :: AppFixity a => P a -> ParseMode -> String -> ParseResult (a, [Comment])-> commentParse p mode str = runParserWithModeComments mode p str-> >>= \(ast, cs) -> return (applyFixities (fixities mode) ast, cs)--> -- | Partial parse of a string starting with a series of top-level option pragmas.-> getTopPragmas :: String -> ParseResult [OptionPragma]-> getTopPragmas = runParser mfindOptPragmas--> }
src/Language/Haskell/Exts/Pretty.hs view
@@ -23,7 +23,12 @@ PPHsMode(..), Indent, PPLayout(..), defaultMode) where import Language.Haskell.Exts.Syntax+import qualified Language.Haskell.Exts.Annotated.Syntax as A+import Language.Haskell.Exts.Annotated.Simplify+import qualified Language.Haskell.Exts.ParseSyntax as P +import Language.Haskell.Exts.SrcLoc+ import qualified Text.PrettyPrint as P import Data.List (intersperse) @@ -707,9 +712,11 @@ ---------------------------- Kinds ---------------------------- instance Pretty Kind where- pretty KindStar = text "*"- pretty KindBang = text "!"- pretty (KindFn a b) = myFsep [pretty a, text "->", pretty b]+ pretty KindStar = text "*"+ pretty KindBang = text "!"+ pretty (KindFn a b) = myFsep [pretty a, text "->", pretty b]+ pretty (KindParen k) = parens $ pretty k+ pretty (KindVar n) = pretty n ppOptKind :: Maybe Kind -> [Doc] ppOptKind Nothing = []@@ -832,8 +839,6 @@ myFsep $ [text "{-# GENERATED", text $ show s, int a, char ':', int b, char '-', int c, char ':', int d, text "#-}", pretty e]-{- pretty (UnknownExpPragma n s) =- myFsep $ [text "{-#", text n, text s, text "#-}"] -} -- Arrows pretty (Proc p e) = myFsep $ [text "proc", pretty p, text "->", pretty e] pretty (LeftArrApp l r) = myFsep $ [pretty l, text "-<", pretty r]@@ -1090,6 +1095,299 @@ pretty (IParam i t) = myFsep $ [pretty i, text "::", pretty t] pretty (EqualP t1 t2) = myFsep $ [pretty t1, text "~", pretty t2] +-- Pretty print a source location, useful for printing out error messages+instance Pretty SrcLoc where+ pretty srcLoc =+ return $ P.hsep [ colonFollow (P.text $ srcFilename srcLoc)+ , colonFollow (P.int $ srcLine srcLoc)+ , P.int $ srcColumn srcLoc+ ]++colonFollow p = P.hcat [ p, P.colon ]+++instance Pretty SrcSpan where+ pretty srcSpan =+ return $ P.hsep [ colonFollow (P.text $ srcSpanFilename srcSpan)+ , P.hcat [ P.text "("+ , P.int $ srcSpanStartLine srcSpan+ , P.colon+ , P.int $ srcSpanStartColumn srcSpan+ , P.text ")"+ ]+ , P.text "-"+ , P.hcat [ P.text "("+ , P.int $ srcSpanEndLine srcSpan+ , P.colon+ , P.int $ srcSpanEndColumn srcSpan+ , P.text ")"+ ]+ ]++---------------------------------------------------------------------+-- Annotated version++------------------------- Pretty-Print a Module --------------------+instance SrcInfo pos => Pretty (A.Module pos) where+ pretty (A.Module pos mbHead os imp decls) =+ markLine pos $+ myVcat $ map pretty os +++ (case mbHead of+ Nothing -> id+ Just h -> \x -> [topLevel (pretty h) x])+ (map pretty imp ++ map pretty decls)+ pretty (A.XmlPage pos _mn os n attrs mattr cs) =+ markLine pos $+ myVcat $ map pretty os +++ [let ax = maybe [] (return . pretty) mattr+ in hcat $+ (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):+ map pretty cs ++ [myFsep $ [text "</" <> pretty n, char '>']]]+ pretty (A.XmlHybrid pos mbHead os imp decls n attrs mattr cs) =+ markLine pos $+ myVcat $ map pretty os ++ [text "<%"] +++ (case mbHead of+ Nothing -> id+ Just h -> \x -> [topLevel (pretty h) x])+ (map pretty imp ++ map pretty decls +++ [let ax = maybe [] (return . pretty) mattr+ in hcat $+ (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):+ map pretty cs ++ [myFsep $ [text "</" <> pretty n, char '>']]])++++-------------------------- Module Header ------------------------------+instance Pretty (A.ModuleHead l) where+ pretty (A.ModuleHead _ m mbWarn mbExportList) = mySep [+ text "module",+ pretty m,+ maybePP pretty mbWarn,+ maybePP pretty mbExportList,+ text "where"]++instance Pretty (A.WarningText l) where+ pretty = ppWarnTxt. sWarningText++instance Pretty (A.ModuleName l) where+ pretty = pretty . sModuleName++instance Pretty (A.ExportSpecList l) where+ pretty (A.ExportSpecList _ especs) = parenList $ map pretty especs++instance Pretty (A.ExportSpec l) where+ pretty = pretty . sExportSpec++instance SrcInfo pos => Pretty (A.ImportDecl pos) where+ pretty = pretty . sImportDecl++instance Pretty (A.ImportSpecList l) where+ pretty (A.ImportSpecList _ b ispecs) =+ (if b then text "hiding" else empty)+ <+> parenList (map pretty ispecs)++instance Pretty (A.ImportSpec l) where+ pretty = pretty . sImportSpec++------------------------- Declarations ------------------------------+instance SrcInfo pos => Pretty (A.Decl pos) where+ pretty = pretty . sDecl++instance Pretty (A.DeclHead l) where+ pretty (A.DHead l n tvs) = mySep (pretty n : map pretty tvs)+ pretty (A.DHInfix l tva n tvb) = mySep [pretty tva, pretty n, pretty tvb]+ pretty (A.DHParen l dh) = parens (pretty dh)++instance Pretty (A.InstHead l) where+ pretty (A.IHead l qn ts) = mySep (pretty qn : map pretty ts)+ pretty (A.IHInfix l ta qn tb) = mySep [pretty ta, pretty qn, pretty tb]+ pretty (A.IHParen l ih) = parens (pretty ih)++instance Pretty (A.DataOrNew l) where+ pretty = pretty . sDataOrNew++instance Pretty (A.Assoc l) where+ pretty = pretty . sAssoc++instance SrcInfo pos => Pretty (A.Match pos) where+ pretty = pretty . sMatch++instance SrcInfo loc => Pretty (A.ClassDecl loc) where+ pretty = pretty . sClassDecl++instance SrcInfo loc => Pretty (A.InstDecl loc) where+ pretty = pretty . sInstDecl++------------------------- FFI stuff -------------------------------------+instance Pretty (A.Safety l) where+ pretty = pretty . sSafety++instance Pretty (A.CallConv l) where+ pretty = pretty . sCallConv++------------------------- Pragmas ---------------------------------------+instance SrcInfo loc => Pretty (A.Rule loc) where+ pretty = pretty . sRule++instance Pretty (A.Activation l) where+ pretty = pretty . sActivation++instance Pretty (A.RuleVar l) where+ pretty = pretty . sRuleVar++instance Pretty (A.OptionPragma l) where+ pretty (A.LanguagePragma _ ns) =+ myFsep $ text "{-# LANGUAGE" : punctuate (char ',') (map pretty ns) ++ [text "#-}"]+ pretty (A.IncludePragma _ s) =+ myFsep $ [text "{-# INCLUDE", text s, text "#-}"]+ pretty (A.CFilesPragma _ s) =+ myFsep $ [text "{-# CFILES", text s, text "#-}"]+ pretty (A.OptionsPragma _ (Just tool) s) =+ myFsep $ [text "{-# OPTIONS_" <> pretty tool, text s, text "#-}"]+ pretty (A.OptionsPragma _ _ s) =+ myFsep $ [text "{-# OPTIONS", text s, text "#-}"]++------------------------- Data & Newtype Bodies -------------------------+instance Pretty (A.QualConDecl l) where+ pretty (A.QualConDecl _pos mtvs ctxt con) =+ myFsep [ppForall (fmap (map sTyVarBind) mtvs), ppContext $ maybe [] sContext ctxt, pretty con]++instance Pretty (A.GadtDecl l) where+ pretty (A.GadtDecl _pos name ty) =+ myFsep [pretty name, text "::", pretty ty]++instance Pretty (A.ConDecl l) where+ pretty = pretty . sConDecl++instance Pretty (A.FieldDecl l) where+ pretty (A.FieldDecl _ names ty) =+ myFsepSimple $ (punctuate comma . map pretty $ names) +++ [text "::", pretty ty]+++instance Pretty (A.BangType l) where+ pretty = pretty . sBangType++instance Pretty (A.Deriving l) where+ pretty (A.Deriving _ []) = text "deriving" <+> parenList []+ pretty (A.Deriving _ [A.IHead _ d []]) = text "deriving" <+> pretty d+ pretty (A.Deriving _ ihs) = text "deriving" <+> parenList (map pretty ihs)++------------------------- Types -------------------------+instance Pretty (A.Type l) where+ pretty = pretty . sType++instance Pretty (A.TyVarBind l) where+ pretty = pretty . sTyVarBind++---------------------------- Kinds ----------------------------++instance Pretty (A.Kind l) where+ pretty = pretty . sKind++------------------- Functional Dependencies -------------------+instance Pretty (A.FunDep l) where+ pretty = pretty . sFunDep++------------------------- Expressions -------------------------+instance SrcInfo loc => Pretty (A.Rhs loc) where+ pretty = pretty . sRhs++instance SrcInfo loc => Pretty (A.GuardedRhs loc) where+ pretty = pretty . sGuardedRhs++instance Pretty (A.Literal l) where+ pretty = pretty . sLiteral++instance SrcInfo loc => Pretty (A.Exp loc) where+ pretty = pretty . sExp++instance SrcInfo loc => Pretty (A.XAttr loc) where+ pretty = pretty . sXAttr++instance Pretty (A.XName l) where+ pretty = pretty . sXName++--------------------- Template Haskell -------------------------++instance SrcInfo loc => Pretty (A.Bracket loc) where+ pretty = pretty . sBracket++instance SrcInfo loc => Pretty (A.Splice loc) where+ pretty = pretty . sSplice++------------------------- Patterns -----------------------------++instance SrcInfo loc => Pretty (A.Pat loc) where+ pretty = pretty . sPat++instance SrcInfo loc => Pretty (A.PXAttr loc) where+ pretty = pretty . sPXAttr++instance SrcInfo loc => Pretty (A.PatField loc) where+ pretty = pretty . sPatField++--------------------- Regular Patterns -------------------------++instance SrcInfo loc => Pretty (A.RPat loc) where+ pretty = pretty . sRPat++instance Pretty (A.RPatOp l) where+ pretty = pretty . sRPatOp++------------------------- Case bodies -------------------------+instance SrcInfo loc => Pretty (A.Alt loc) where+ pretty = pretty . sAlt++instance SrcInfo loc => Pretty (A.GuardedAlts loc) where+ pretty = pretty . sGuardedAlts++instance SrcInfo loc => Pretty (A.GuardedAlt loc) where+ pretty = pretty . sGuardedAlt++------------------------- Statements in monads, guards & list comprehensions -----+instance SrcInfo loc => Pretty (A.Stmt loc) where+ pretty = pretty . sStmt++instance SrcInfo loc => Pretty (A.QualStmt loc) where+ pretty = pretty . sQualStmt++------------------------- Record updates+instance SrcInfo loc => Pretty (A.FieldUpdate loc) where+ pretty = pretty . sFieldUpdate++------------------------- Names -------------------------+instance Pretty (A.QOp l) where+ pretty = pretty . sQOp++instance Pretty (A.QName l) where+ pretty = pretty . sQName++instance Pretty (A.Op l) where+ pretty = pretty . sOp++instance Pretty (A.Name l) where+ pretty = pretty . sName++instance Pretty (A.IPName l) where+ pretty = pretty . sIPName++instance SrcInfo loc => Pretty (A.IPBind loc) where+ pretty = pretty . sIPBind++instance Pretty (A.CName l) where+ pretty = pretty . sCName++instance Pretty (A.Context l) where+ pretty (A.CxEmpty _) = mySep [text "()", text "=>"]+ pretty (A.CxSingle _ asst) = mySep [pretty asst, text "=>"]+ pretty (A.CxTuple _ assts) = myFsep $ [parenList (map pretty assts), text "=>"]+ pretty (A.CxParen _ asst) = parens (pretty asst)++-- hacked for multi-parameter type classes+instance Pretty (A.Asst l) where+ pretty = pretty . sAsst+ ------------------------- pp utils ------------------------- maybePP :: (a -> Doc) -> Maybe a -> Doc maybePP pp Nothing = empty@@ -1181,21 +1479,156 @@ -- that the following line is line n. But if there's no newline before -- the line we're talking about, we need to compensate by adding 1. -markLine :: SrcLoc -> Doc -> Doc+markLine :: SrcInfo s => s -> Doc -> Doc markLine loc doc = do e <- getPPEnv- let y = srcLine loc+ let y = startLine loc let line l =- text ("{-# LINE " ++ show l ++ " \"" ++ srcFilename loc ++ "\" #-}")+ text ("{-# LINE " ++ show l ++ " \"" ++ fileName loc ++ "\" #-}") if linePragmas e then layoutChoice (line y $$) (line (y+1) <+>) doc else doc --- Pretty print a source location, useful for printing out error messages-instance Pretty SrcLoc where- pretty srcLoc =- return $ P.hsep [ colonFollow (P.text $ srcFilename srcLoc)- , colonFollow (P.int $ srcLine srcLoc)- , P.int $ srcColumn srcLoc- ]- where- colonFollow p = P.hcat [ p, P.colon ]+--------------------------------------------------------------------------------+-- Pretty-printing of internal constructs, for error messages while parsing++instance SrcInfo loc => Pretty (P.PExp loc) where+ pretty (P.Lit _ l) = pretty l+ pretty (P.InfixApp _ a op b) = myFsep [pretty a, pretty op, pretty b]+ pretty (P.NegApp _ e) = myFsep [char '-', pretty e]+ pretty (P.App _ a b) = myFsep [pretty a, pretty b]+ pretty (P.Lambda _loc expList ppBody) = myFsep $+ char '\\' : map pretty expList ++ [text "->", pretty ppBody]+ pretty (P.Let _ (A.BDecls _ declList) letBody) =+ ppLetExp declList letBody+ pretty (P.Let _ (A.IPBinds _ bindList) letBody) =+ ppLetExp bindList letBody+ pretty (P.If _ cond thenexp elsexp) =+ myFsep [text "if", pretty cond,+ text "then", pretty thenexp,+ text "else", pretty elsexp]+ pretty (P.Case _ cond altList) =+ myFsep [text "case", pretty cond, text "of"]+ $$$ ppBody caseIndent (map pretty altList)+ pretty (P.Do _ stmtList) =+ text "do" $$$ ppBody doIndent (map pretty stmtList)+ pretty (P.MDo _ stmtList) =+ text "mdo" $$$ ppBody doIndent (map pretty stmtList)+ pretty (P.Var _ name) = pretty name+ pretty (P.IPVar _ ipname) = pretty ipname+ pretty (P.Con _ name) = pretty name+ pretty (P.TupleSection _ mExpList) = parenList . map (maybePP pretty) $ mExpList+ pretty (P.Paren _ e) = parens . pretty $ e+ pretty (P.RecConstr _ c fieldList) =+ pretty c <> (braceList . map pretty $ fieldList)+ pretty (P.RecUpdate _ e fieldList) =+ pretty e <> (braceList . map pretty $ fieldList)+ pretty (P.List _ list) =+ bracketList . punctuate comma . map pretty $ list+ pretty (P.EnumFrom _ e) =+ bracketList [pretty e, text ".."]+ pretty (P.EnumFromTo _ from to) =+ bracketList [pretty from, text "..", pretty to]+ pretty (P.EnumFromThen _ from thenE) =+ bracketList [pretty from <> comma, pretty thenE, text ".."]+ pretty (P.EnumFromThenTo _ from thenE to) =+ bracketList [pretty from <> comma, pretty thenE,+ text "..", pretty to]+ pretty (P.ParComp _ e qualLists) =+ bracketList (intersperse (char '|') $+ pretty e : (punctuate comma . concatMap (map pretty) $ qualLists))+ pretty (P.ExpTypeSig _pos e ty) =+ myFsep [pretty e, text "::", pretty ty]+ pretty (P.BracketExp _ b) = pretty b+ pretty (P.SpliceExp _ s) = pretty s+ pretty (P.TypQuote _ t) = text "\'\'" <> pretty t+ pretty (P.VarQuote _ x) = text "\'" <> pretty x+ pretty (P.QuasiQuote _ n qt) = text ("[$" ++ n ++ "|" ++ qt ++ "|]")+ pretty (P.XTag _ n attrs mattr cs) =+ let ax = maybe [] (return . pretty) mattr+ in hcat $+ (myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [char '>']):+ map pretty cs ++ [myFsep $ [text "</" <> pretty n, char '>']]+ pretty (P.XETag _ n attrs mattr) =+ let ax = maybe [] (return . pretty) mattr+ in myFsep $ (char '<' <> pretty n): map pretty attrs ++ ax ++ [text "/>"]+ pretty (P.XPcdata _ s) = text s+ pretty (P.XExpTag _ e) =+ myFsep $ [text "<%", pretty e, text "%>"]+ pretty (P.CorePragma _ s e) = myFsep $ map text ["{-# CORE", show s, "#-}"] ++ [pretty e]+ pretty (P.SCCPragma _ s e) = myFsep $ map text ["{-# SCC", show s, "#-}"] ++ [pretty e]+ pretty (P.GenPragma _ s (a,b) (c,d) e) =+ myFsep $ [text "{-# GENERATED", text $ show s,+ int a, char ':', int b, char '-',+ int c, char ':', int d, text "#-}", pretty e]+ pretty (P.Proc _ p e) = myFsep $ [text "proc", pretty p, text "->", pretty e]+ pretty (P.LeftArrApp _ l r) = myFsep $ [pretty l, text "-<", pretty r]+ pretty (P.RightArrApp _ l r) = myFsep $ [pretty l, text ">-", pretty r]+ pretty (P.LeftArrHighApp _ l r) = myFsep $ [pretty l, text "-<<", pretty r]+ pretty (P.RightArrHighApp _ l r) = myFsep $ [pretty l, text ">>-", pretty r]+ pretty (P.AsPat _ name (P.IrrPat _ pat)) =+ myFsep [pretty name <> char '@', char '~' <> pretty pat]+ pretty (P.AsPat _ name pat) =+ hcat [pretty name, char '@', pretty pat]+ pretty (P.WildCard _) = char '_'+ pretty (P.IrrPat _ pat) = char '~' <> pretty pat+ pretty (P.PostOp _ e op) = pretty e <+> pretty op+ pretty (P.PreOp _ op e) = pretty op <+> pretty e+ pretty (P.ViewPat _ e p) =+ myFsep [pretty e, text "->", pretty p]+ pretty (P.SeqRP _ rs) = myFsep $ text "(/" : map pretty rs ++ [text "/)"]+ pretty (P.GuardRP _ r gs) =+ myFsep $ text "(|" : pretty r : char '|' : map pretty gs ++ [text "|)"]+ pretty (P.EitherRP _ r1 r2) = parens . myFsep $ [pretty r1, char '|', pretty r2]+ pretty (P.CAsRP _ n (P.IrrPat _ e)) =+ myFsep [pretty n <> text "@:", char '~' <> pretty e]+ pretty (P.CAsRP _ n r) = hcat [pretty n, text "@:", pretty r]+ pretty (P.XRPats _ ps) =+ myFsep $ text "<[" : map pretty ps ++ [text "%>"]+ pretty (P.ExplTypeArg _ qn t) =+ myFsep [pretty qn, text "{|", pretty t, text "|}"]+ pretty (P.BangPat _ e) = text "!" <> pretty e++instance SrcInfo loc => Pretty (P.PFieldUpdate loc) where+ pretty (P.FieldUpdate _ name e) =+ myFsep [pretty name, equals, pretty e]+ pretty (P.FieldPun _ name) = pretty name+ pretty (P.FieldWildcard _) = text ".."++instance SrcInfo loc => Pretty (P.ParseXAttr loc) where+ pretty (P.XAttr _ n v) =+ myFsep [pretty n, char '=', pretty v]++instance SrcInfo loc => Pretty (P.PContext loc) where+ pretty (P.CxEmpty _) = mySep [text "()", text "=>"]+ pretty (P.CxSingle _ asst) = mySep [pretty asst, text "=>"]+ pretty (P.CxTuple _ assts) = myFsep $ [parenList (map pretty assts), text "=>"]+ pretty (P.CxParen _ asst) = parens (pretty asst)++instance SrcInfo loc => Pretty (P.PAsst loc) where+ pretty (P.ClassA _ a ts) = myFsep $ ppQName (sQName a) : map (prettyPrec prec_atype) ts+ pretty (P.InfixA _ a op b) = myFsep $ [pretty a, ppQNameInfix (sQName op), pretty b]+ pretty (P.IParam _ i t) = myFsep $ [pretty i, text "::", pretty t]+ pretty (P.EqualP _ t1 t2) = myFsep $ [pretty t1, text "~", pretty t2]++instance SrcInfo loc => Pretty (P.PType loc) where+ prettyPrec p (P.TyForall _ mtvs ctxt htype) = parensIf (p > 0) $+ myFsep [ppForall (fmap (map sTyVarBind) mtvs), maybePP pretty ctxt, pretty htype]+ prettyPrec p (P.TyFun _ a b) = parensIf (p > 0) $+ myFsep [prettyPrec prec_btype a, text "->", pretty b]+ prettyPrec _ (P.TyTuple _ bxd l) =+ let ds = map pretty l+ in case bxd of+ Boxed -> parenList ds+ Unboxed -> hashParenList ds+ prettyPrec _ (P.TyList _ t) = brackets $ pretty t+ prettyPrec p (P.TyApp _ a b) =+ {-+ | a == list_tycon = brackets $ pretty b -- special case+ | otherwise = -} parensIf (p > prec_btype) $+ myFsep [pretty a, prettyPrec prec_atype b]+ prettyPrec _ (P.TyVar _ name) = pretty name+ prettyPrec _ (P.TyCon _ name) = pretty name+ prettyPrec _ (P.TyParen _ t) = parens (pretty t)+ prettyPrec _ (P.TyPred _ asst) = pretty asst+ prettyPrec _ (P.TyInfix _ a op b) = myFsep [pretty a, ppQNameInfix (sQName op), pretty b]+ prettyPrec _ (P.TyKind _ t k) = parens (myFsep [pretty t, text "::", pretty k])
+ src/Language/Haskell/Exts/SrcLoc.hs view
@@ -0,0 +1,146 @@+{-# LANGUAGE CPP, DeriveDataTypeable #-} +----------------------------------------------------------------------------- +-- | +-- Module : Language.Haskell.Exts.SrcLoc +-- Copyright : (c) Niklas Broberg 2009 +-- License : BSD-style (see the file LICENSE.txt) +-- +-- Maintainer : Niklas Broberg, d00nibro@chalmers.se +-- Stability : stable +-- Portability : portable +-- +-- This module defines various data types representing source location +-- information, of varying degree of preciseness. +-- +----------------------------------------------------------------------------- +module Language.Haskell.Exts.SrcLoc where + +#ifdef __GLASGOW_HASKELL__ +#ifdef BASE4 +import Data.Data +#else +import Data.Generics (Data(..),Typeable(..)) +#endif +#endif + +-- | A single position in the source. +data SrcLoc = SrcLoc + { srcFilename :: String + , srcLine :: Int + , srcColumn :: Int + } +#ifdef __GLASGOW_HASKELL__ + deriving (Eq,Ord,Show,Typeable,Data) +#else + deriving (Eq,Ord,Show) +#endif + + +-- | A portion of the source, spanning one or more lines and zero or more columns. +data SrcSpan = SrcSpan + { srcSpanFilename :: String + , srcSpanStartLine :: Int + , srcSpanStartColumn :: Int + , srcSpanEndLine :: Int + , srcSpanEndColumn :: Int + } +#ifdef __GLASGOW_HASKELL__ + deriving (Eq,Ord,Show,Typeable,Data) +#else + deriving (Eq,Ord,Show) +#endif + +-- | Combine two locations in the source to denote a span. +mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan +mkSrcSpan (SrcLoc fn sl sc) (SrcLoc _ el ec) = SrcSpan fn sl sc el ec + +-- | Merge two source spans into a single span from the start of the first +-- to the end of the second. Assumes that the two spans are given in the +-- order they appear in the source. +mergeSrcSpan :: SrcSpan -> SrcSpan -> SrcSpan +mergeSrcSpan (SrcSpan fn sl sc _ _) (SrcSpan _ _ _ el ec) = SrcSpan fn sl sc el ec + +-- | Test if a given span starts and ends at the same location. +isNullSpan ss = srcSpanStartLine ss == srcSpanEndLine ss && + srcSpanStartColumn ss >= srcSpanEndColumn ss + +-- | An entity located in the source. +data Loc a = Loc + { loc :: SrcSpan + , unLoc :: a + } + deriving (Eq,Ord,Show) + + +-- | A portion of the source, extended with information on the position of entities within the span. +data SrcSpanInfo = SrcSpanInfo + { srcInfoSpan :: SrcSpan +-- , explLayout :: Bool + , srcInfoPoints :: [SrcSpan] -- Marks the location of specific entities inside the span + } +#ifdef __GLASGOW_HASKELL__ + deriving (Eq,Ord,Show,Typeable,Data) +#else + deriving (Eq,Ord,Show) +#endif + + +noInfoSpan :: SrcSpan -> SrcSpanInfo +noInfoSpan ss = SrcSpanInfo ss [] + +infoSpan :: SrcSpan -> [SrcSpan] -> SrcSpanInfo +infoSpan x y = SrcSpanInfo x y + +(<++>), combSpanInfo :: SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo +combSpanInfo s1 s2 = SrcSpanInfo + (mergeSrcSpan (srcInfoSpan s1) (srcInfoSpan s2)) + [] + +(<++>) = combSpanInfo + +(<+?>) :: SrcSpanInfo -> Maybe SrcSpanInfo -> SrcSpanInfo +a <+?> b = case b of {Nothing -> a; Just b -> a <++> b} + +(<?+>) :: Maybe SrcSpanInfo -> SrcSpanInfo -> SrcSpanInfo +a <?+> b = case a of {Nothing -> b; Just a -> a <++> b} + +(<**) :: SrcSpanInfo -> [SrcSpan] -> SrcSpanInfo +ss@(SrcSpanInfo {srcInfoPoints = ps}) <** xs = ss {srcInfoPoints = ps ++ xs} + +(<^^>) :: SrcSpan -> SrcSpan -> SrcSpanInfo +a <^^> b = noInfoSpan (mergeSrcSpan a b) + +infixl 6 <^^> +infixl 5 <++> +infixl 4 <**, <+?>, <?+> + +class SrcInfo si where + toSrcInfo :: SrcLoc -> [SrcSpan] -> SrcLoc -> si + fromSrcInfo :: SrcSpanInfo -> si + getPointLoc :: si -> SrcLoc + fileName :: si -> String + startLine :: si -> Int + startColumn :: si -> Int + + getPointLoc si = SrcLoc (fileName si) (startLine si) (startColumn si) + +instance SrcInfo SrcLoc where + toSrcInfo s _ _ = s + fromSrcInfo si = SrcLoc (fileName si) (startLine si) (startColumn si) + fileName = srcFilename + startLine = srcLine + startColumn = srcColumn + +instance SrcInfo SrcSpan where + toSrcInfo st _ end = mkSrcSpan st end + fromSrcInfo = srcInfoSpan + fileName = srcSpanFilename + startLine = srcSpanStartLine + startColumn = srcSpanStartColumn + +instance SrcInfo SrcSpanInfo where + toSrcInfo st pts end = SrcSpanInfo (mkSrcSpan st end) pts + fromSrcInfo = id + fileName = fileName . srcInfoSpan + startLine = startLine . srcInfoSpan + startColumn = startColumn . srcInfoSpan
src/Language/Haskell/Exts/Syntax.hs view
@@ -103,7 +103,11 @@ #endif #endif --- | A position in the source.+import Language.Haskell.Exts.SrcLoc (SrcLoc(..))++import Language.Haskell.Exts.Annotated.Syntax (Boxed(..), Tool(..))++{-- | A position in the source. data SrcLoc = SrcLoc { srcFilename :: String, srcLine :: Int,@@ -114,6 +118,7 @@ #else deriving (Eq,Ord,Show) #endif+-} -- | The name of a Haskell module. newtype ModuleName = ModuleName String@@ -208,9 +213,9 @@ data Module = Module SrcLoc ModuleName [OptionPragma] (Maybe WarningText) (Maybe [ExportSpec]) [ImportDecl] [Decl] #ifdef __GLASGOW_HASKELL__- deriving (Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Show)+ deriving (Eq,Ord,Show) #endif -- | An item in a module's export specification.@@ -228,9 +233,9 @@ | EModuleContents ModuleName -- ^ @module M@: -- re-export a module. #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An import declaration.@@ -247,9 +252,9 @@ -- by @hiding@. } #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An import specification, representing a single explicit item imported@@ -265,9 +270,9 @@ -- a class imported with some of its methods, or -- a datatype imported with some of its constructors. #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Associativity of an operator.@@ -276,9 +281,9 @@ | AssocLeft -- ^ left-associative operator (declared with @infixl@). | AssocRight -- ^ right-associative operator (declared with @infixr@) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A single derived instance, which may have arguments since it may be a MPTC.@@ -312,7 +317,7 @@ -- ^ A declaration of operator fixity | DefaultDecl SrcLoc [Type] -- ^ A declaration of default types- | SpliceDecl SrcLoc Splice+ | SpliceDecl SrcLoc Exp -- ^ A Template Haskell splicing declaration | TypeSig SrcLoc [Name] Type -- ^ A type signature declaration@@ -340,17 +345,17 @@ | InstSig SrcLoc Context QName [Type] -- ^ A SPECIALISE instance pragma #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A flag stating whether a declaration is a data or newtype declaration. data DataOrNew = DataType | NewType #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A binding group inside a @let@ or @where@ clause.@@ -358,26 +363,26 @@ = BDecls [Decl] -- ^ An ordinary binding group | IPBinds [IPBind] -- ^ A binding group for implicit parameters #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A binding of an implicit parameter. data IPBind = IPBind SrcLoc IPName Exp #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Clauses of a function binding. data Match = Match SrcLoc Name [Pat] (Maybe Type) Rhs {-where-} Binds #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A single constructor declaration within a data type declaration,@@ -387,9 +392,9 @@ {-forall-} [TyVarBind] {- . -} Context {- => -} ConDecl #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Declaration of an ordinary data constructor.@@ -401,18 +406,18 @@ | RecDecl Name [([Name],BangType)] -- ^ record constructor #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A single constructor declaration in a GADT data type declaration. data GadtDecl = GadtDecl SrcLoc Name Type #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Declarations inside a class declaration.@@ -426,9 +431,9 @@ | ClsTyDef SrcLoc Type Type -- ^ default choice for an associated type synonym #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Declarations inside an instance declaration.@@ -444,9 +449,9 @@ | InsInline SrcLoc Bool Activation QName -- ^ an INLINE pragma #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The type of a constructor argument or field, optionally including@@ -456,9 +461,9 @@ | UnBangedTy Type -- ^ non-strict component | UnpackedTy Type -- ^ unboxed component, marked with an UNPACK pragma #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The right hand side of a function or pattern binding.@@ -467,9 +472,9 @@ | GuardedRhss [GuardedRhs] -- ^ guarded right hand side (/gdrhs/) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A guarded right hand side @|@ /stmts/ @=@ /exp/.@@ -478,9 +483,9 @@ data GuardedRhs = GuardedRhs SrcLoc [Stmt] Exp #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A type qualified with a context.@@ -500,27 +505,28 @@ | TyInfix Type QName Type -- ^ infix type constructor | TyKind Type Kind -- ^ type with explicit kind signature #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif --- | Flag denoting whether a tuple is boxed or unboxed.+{-- | Flag denoting whether a tuple is boxed or unboxed. data Boxed = Boxed | Unboxed #ifdef __GLASGOW_HASKELL__ deriving (Eq,Ord,Show,Typeable,Data) #else deriving (Eq,Ord,Show) #endif+--} -- | A type variable declaration, optionally with an explicit kind annotation. data TyVarBind = KindedVar Name Kind -- ^ variable binding with kind annotation | UnkindedVar Name -- ^ ordinary variable binding #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An explicit kind annotation.@@ -528,10 +534,12 @@ = KindStar -- ^ @*@, the kind of types | KindBang -- ^ @!@, the kind of unboxed types | KindFn Kind Kind -- ^ @->@, the kind of a type constructor+ | KindParen Kind -- ^ a kind surrounded by parentheses+ | KindVar Name -- ^ a kind variable (as of yet unsupported by compilers) #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif @@ -540,9 +548,9 @@ data FunDep = FunDep [Name] [Name] #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A context is a set of assertions@@ -557,9 +565,9 @@ | IParam IPName Type -- ^ implicit parameter assertion | EqualP Type Type -- ^ type equality constraint #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | /literal/@@ -578,9 +586,9 @@ | PrimChar Char -- ^ unboxed character literal | PrimString String -- ^ unboxed string literal #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Haskell expressions.@@ -651,9 +659,9 @@ | LeftArrHighApp Exp Exp -- ^ higher-order arrow application (from left): /exp/ @-<<@ /exp/ | RightArrHighApp Exp Exp -- ^ higher-order arrow application (from right): /exp/ @>>-@ /exp/ #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The name of an xml element or attribute,@@ -662,17 +670,17 @@ = XName String -- <name ... | XDomName String String -- <dom:name ... #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An xml attribute, which is a name-expression pair. data XAttr = XAttr XName Exp #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A template haskell bracket expression.@@ -682,9 +690,9 @@ | TypeBracket Type -- ^ type bracket: @[t| ... |]@ | DeclBracket [Decl] -- ^ declaration bracket: @[d| ... |]@ #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A template haskell splice expression@@ -692,9 +700,9 @@ = IdSplice String -- ^ variable splice: @$var@ | ParenSplice Exp -- ^ parenthesised expression splice: @$(/exp/)@ #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The safety of a foreign function call.@@ -702,9 +710,9 @@ = PlayRisky -- ^ unsafe | PlaySafe Bool -- ^ safe ('False') or threadsafe ('True') #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The calling convention of a foreign function call.@@ -712,9 +720,9 @@ = StdCall | CCall #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A top level options pragma, preceding the module header.@@ -725,18 +733,19 @@ | OptionsPragma SrcLoc (Maybe Tool) String -- ^ OPTIONS pragma, possibly qualified with a tool, e.g. OPTIONS_GHC #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif --- | Recognised tools for OPTIONS pragmas.+{-- | Recognised tools for OPTIONS pragmas. data Tool = GHC | HUGS | NHC98 | YHC | HADDOCK | UnknownTool String #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif+-} -- | Activation clause of a RULES pragma. data Activation@@ -744,18 +753,18 @@ | ActiveFrom Int | ActiveUntil Int #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The body of a RULES pragma. data Rule = Rule String Activation (Maybe [RuleVar]) Exp Exp #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Variables used in a RULES pragma, optionally annotated with types@@ -763,9 +772,9 @@ = RuleVar Name | TypedRuleVar Name Type #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | Warning text to optionally use in the module header of e.g.@@ -774,9 +783,9 @@ = DeprText String | WarnText String #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif @@ -815,17 +824,17 @@ | PBangPat Pat -- ^ strict (bang) pattern: @f !x = ...@ #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An XML attribute in a pattern. data PXAttr = PXAttr XName Pat #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A regular pattern operator.@@ -837,9 +846,9 @@ | RPOpt -- ^ @?@ = 0 or 1 | RPOptG -- ^ @?!@ = 0 or 1, greedy #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An entity in a regular pattern.@@ -853,9 +862,9 @@ | RPParen RPat | RPPat Pat #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An /fpat/ in a labeled record pattern.@@ -864,9 +873,9 @@ | PFieldPun Name -- ^ record field pun | PFieldWildcard -- ^ record field wildcard #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A statement, representing both a /stmt/ in a @do@-expression,@@ -882,9 +891,9 @@ | LetStmt Binds -- ^ local bindings | RecStmt [Stmt] -- ^ a recursive binding group for arrows #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A general /transqual/ in a list comprehension,@@ -898,9 +907,9 @@ | GroupUsing Exp -- ^ @then@ @group@ @using@ /exp/ | GroupByUsing Exp Exp -- ^ @then@ @group@ @by@ /exp/ @using@ /exp/ #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An /fbind/ in a labeled construction or update expression.@@ -909,18 +918,18 @@ | FieldPun Name -- ^ record field pun | FieldWildcard -- ^ record field wildcard #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | An /alt/ alternative in a @case@ expression. data Alt = Alt SrcLoc Pat GuardedAlts Binds #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | The right-hand sides of a @case@ alternative,@@ -930,18 +939,18 @@ = UnGuardedAlt Exp -- ^ @->@ /exp/ | GuardedAlts [GuardedAlt] -- ^ /gdpat/ #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -- | A guarded case alternative @|@ /stmts/ @->@ /exp/. data GuardedAlt = GuardedAlt SrcLoc [Stmt] Exp #ifdef __GLASGOW_HASKELL__- deriving (Eq,Show,Typeable,Data)+ deriving (Eq,Ord,Show,Typeable,Data) #else- deriving (Eq,Show)+ deriving (Eq,Ord,Show) #endif -----------------------------------------------------------------------------