rzk 0.11.3 → 0.11.4
raw patch · 292 files changed
+8943/−3766 lines, 292 filesdep ~free-foilPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: free-foil
API changes (from Hackage documentation)
+ Language.Rzk.Foil.Syntax: instance Data.ZipMatchK.Generic.ZipMatchFoldK Language.Rzk.Foil.Syntax.LambdaParam
+ Language.Rzk.Foil.Syntax: instance Data.ZipMatchK.Generic.ZipMatchFoldK Language.Rzk.Foil.Syntax.TermSig
+ Language.Rzk.Syntax.Abs: MatchModal :: a -> Modality' a -> Term' a -> [MatchBranch' a] -> Term' a
+ Language.Rzk.Syntax.Abs: MatchModalInto :: a -> Modality' a -> Term' a -> Term' a -> [MatchBranch' a] -> Term' a
+ Language.Rzk.Syntax.Par: pTerm8 :: [Token] -> Err Term
+ Rzk.Diagnostic: HoleDataEntry :: String -> String -> HoleModalData -> HoleDataEntry
+ Rzk.Diagnostic: HoleDataTope :: String -> HoleModalData -> HoleDataTope
+ Rzk.Diagnostic: HoleModalData :: String -> String -> Bool -> HoleModalData
+ Rzk.Diagnostic: [holeDataEntryMode] :: HoleDataEntry -> HoleModalData
+ Rzk.Diagnostic: [holeDataEntryName] :: HoleDataEntry -> String
+ Rzk.Diagnostic: [holeDataEntryType] :: HoleDataEntry -> String
+ Rzk.Diagnostic: [holeDataTopeMode] :: HoleDataTope -> HoleModalData
+ Rzk.Diagnostic: [holeDataTopeValue] :: HoleDataTope -> String
+ Rzk.Diagnostic: [holeModalAccessible] :: HoleModalData -> Bool
+ Rzk.Diagnostic: [holeModalLocks] :: HoleModalData -> String
+ Rzk.Diagnostic: [holeModalModality] :: HoleModalData -> String
+ Rzk.Diagnostic: data HoleDataEntry
+ Rzk.Diagnostic: data HoleDataTope
+ Rzk.Diagnostic: data HoleModalData
+ Rzk.Diagnostic: instance GHC.Classes.Eq Rzk.Diagnostic.HoleDataEntry
+ Rzk.Diagnostic: instance GHC.Classes.Eq Rzk.Diagnostic.HoleDataTope
+ Rzk.Diagnostic: instance GHC.Classes.Eq Rzk.Diagnostic.HoleModalData
+ Rzk.Diagnostic: instance GHC.Show.Show Rzk.Diagnostic.HoleDataEntry
+ Rzk.Diagnostic: instance GHC.Show.Show Rzk.Diagnostic.HoleDataTope
+ Rzk.Diagnostic: instance GHC.Show.Show Rzk.Diagnostic.HoleModalData
+ Rzk.TypeCheck.Context: RSTTSafeError :: RSTTSafeMode
+ Rzk.TypeCheck.Context: RSTTSafeOff :: RSTTSafeMode
+ Rzk.TypeCheck.Context: RSTTSafeWarn :: RSTTSafeMode
+ Rzk.TypeCheck.Context: SchematicChecked :: SchematicStatus
+ Rzk.TypeCheck.Context: SchematicRejected :: SchematicStatus
+ Rzk.TypeCheck.Context: SchematicUnchecked :: SchematicStatus
+ Rzk.TypeCheck.Context: [ctxRSTTSafeOverride] :: Context (n :: S) -> Maybe RSTTSafeMode
+ Rzk.TypeCheck.Context: [ctxRSTTSafe] :: Context (n :: S) -> RSTTSafeMode
+ Rzk.TypeCheck.Context: [ctxStandaloneWarnFreeStandingRestriction] :: Context (n :: S) -> Bool
+ Rzk.TypeCheck.Context: [ctxStandaloneWarnMetaBinder] :: Context (n :: S) -> Bool
+ Rzk.TypeCheck.Context: [ctxStandaloneWarnShapeDependency] :: Context (n :: S) -> Bool
+ Rzk.TypeCheck.Context: [ctxWarnTopeFamilyDomain] :: Context (n :: S) -> Bool
+ Rzk.TypeCheck.Context: [varSchematicStatus] :: VarInfo (n :: S) -> SchematicStatus
+ Rzk.TypeCheck.Context: ctxWarnFreeStandingRestriction :: forall (n :: S). Context n -> Bool
+ Rzk.TypeCheck.Context: ctxWarnMetaBinder :: forall (n :: S). Context n -> Bool
+ Rzk.TypeCheck.Context: ctxWarnShapeDependency :: forall (n :: S). Context n -> Bool
+ Rzk.TypeCheck.Context: data RSTTSafeMode
+ Rzk.TypeCheck.Context: data SchematicStatus
+ Rzk.TypeCheck.Context: effectiveMetaPrefixSensitivity :: forall (n :: S). Context n -> MetaPrefixSensitivity
+ Rzk.TypeCheck.Context: instance GHC.Classes.Eq Rzk.TypeCheck.Context.RSTTSafeMode
+ Rzk.TypeCheck.Context: instance GHC.Classes.Eq Rzk.TypeCheck.Context.SchematicStatus
+ Rzk.TypeCheck.Context: instance GHC.Read.Read Rzk.TypeCheck.Context.RSTTSafeMode
+ Rzk.TypeCheck.Context: instance GHC.Show.Show Rzk.TypeCheck.Context.RSTTSafeMode
+ Rzk.TypeCheck.Context: isVarAccessible :: forall (n :: S). VarInfo n -> Bool
+ Rzk.TypeCheck.Context: rsttSafeEnabled :: forall (n :: S). Context n -> Bool
+ Rzk.TypeCheck.Context: rsttSafeMode :: forall (n :: S). Context n -> RSTTSafeMode
+ Rzk.TypeCheck.Decl: checkDataConFieldLayers :: forall (n :: S). Distinct n => VarIdent -> Int -> [ParamDecl] -> TermT n -> TypeCheck n ()
+ Rzk.TypeCheck.Decl: checkDataSortLayers :: forall (n :: S). Distinct n => [ParamDecl] -> [SortIndex] -> TermT n -> TypeCheck n ()
+ Rzk.TypeCheck.Decl: elaborateChecked :: forall (n :: S). Distinct n => Term -> TypeCheck n (Term n)
+ Rzk.TypeCheck.Decl.Data: [esModality] :: ElimSpec -> TModality
+ Rzk.TypeCheck.Decl.Data: elimIdent :: Text -> TModality -> VarIdent -> VarIdent
+ Rzk.TypeCheck.Decl.Data: modalityPrefix :: TModality -> Text
+ Rzk.TypeCheck.Decl.Data: modalizeParamDecl :: TModality -> ParamDecl -> ParamDecl
+ Rzk.TypeCheck.Decl.Data: surfaceArrowModal :: TModality -> Term -> Term -> Term
+ Rzk.TypeCheck.Decl.Data: surfacePiModal :: TModality -> VarIdent -> Term -> Term -> Term
+ Rzk.TypeCheck.Error: MismatchFunctionType :: ModalityMismatchSite
+ Rzk.TypeCheck.Error: MismatchLambda :: ModalityMismatchSite
+ Rzk.TypeCheck.Error: MismatchLambdaParameter :: Binder -> ModalityMismatchSite
+ Rzk.TypeCheck.Error: MismatchModalElimination :: ModalityMismatchSite
+ Rzk.TypeCheck.Error: MismatchModalIntroduction :: ModalityMismatchSite
+ Rzk.TypeCheck.Error: MismatchSigmaType :: ModalityMismatchSite
+ Rzk.TypeCheck.Error: ModalTypeForElimination :: ModalTypeExpectation
+ Rzk.TypeCheck.Error: ModalTypeForIntroduction :: ModalTypeExpectation
+ Rzk.TypeCheck.Error: SchematicDependency :: SchematicProblem
+ Rzk.TypeCheck.Error: SchematicKindMismatch :: SchematicProblem
+ Rzk.TypeCheck.Error: SchematicUnsupported :: SchematicProblem
+ Rzk.TypeCheck.Error: TypeErrorRSTT :: String -> TypeError (n :: S)
+ Rzk.TypeCheck.Error: TypeErrorSchematic :: SchematicProblem -> String -> TypeError (n :: S)
+ Rzk.TypeCheck.Error: data ModalTypeExpectation
+ Rzk.TypeCheck.Error: data ModalityMismatchSite
+ Rzk.TypeCheck.Error: data SchematicProblem
+ Rzk.TypeCheck.Error: instance GHC.Classes.Eq Rzk.TypeCheck.Error.SchematicProblem
+ Rzk.TypeCheck.Eval: DomainCubeFamily :: DomainKind
+ Rzk.TypeCheck.Eval: DomainCubePoint :: DomainKind
+ Rzk.TypeCheck.Eval: DomainCubeUniverse :: DomainKind
+ Rzk.TypeCheck.Eval: DomainModalTope :: DomainKind
+ Rzk.TypeCheck.Eval: DomainOtherTopeFamily :: DomainKind
+ Rzk.TypeCheck.Eval: DomainTopeFamily :: DomainKind
+ Rzk.TypeCheck.Eval: DomainTopeUniverse :: DomainKind
+ Rzk.TypeCheck.Eval: DomainType :: DomainKind
+ Rzk.TypeCheck.Eval: classifyDomain :: forall (n :: S). Distinct n => TermT n -> TypeCheck n DomainKind
+ Rzk.TypeCheck.Eval: data DomainKind
+ Rzk.TypeCheck.Eval: domainKindName :: DomainKind -> String
+ Rzk.TypeCheck.Eval: ensureTypeAtU :: forall (n :: S). Distinct n => String -> TermT n -> TypeCheck n ()
+ Rzk.TypeCheck.Eval: extractModal :: forall (n :: S). Distinct n => TModality -> TModality -> TermT n -> TypeCheck n (Maybe (TermT n))
+ Rzk.TypeCheck.Eval: requireTypeUnderModal :: forall (n :: S). Distinct n => TModality -> TermT n -> TypeCheck n (TermT n)
+ Rzk.TypeCheck.Eval: typeUnderModal :: forall (n :: S). TModality -> TermT n -> Maybe (TermT n)
+ Rzk.TypeCheck.Eval: valueUnderModal :: forall (n :: S). TModality -> TermT n -> Maybe (TermT n)
+ Rzk.TypeCheck.Fragment.RSTT: fragmentHead :: forall (n :: S). Distinct n => Int -> TermT n -> TypeCheck n (TermT n)
+ Rzk.TypeCheck.Fragment.RSTT: instance GHC.Classes.Eq Rzk.TypeCheck.Fragment.RSTT.FragmentView
+ Rzk.TypeCheck.Fragment.RSTT: instance GHC.Classes.Eq Rzk.TypeCheck.Fragment.RSTT.PrefixPosition
+ Rzk.TypeCheck.Fragment.RSTT: recordFragmentUses :: forall (n :: S). Distinct n => VarIdent -> TermT n -> Maybe (TermT n) -> Bool -> TypeCheck n ()
+ Rzk.TypeCheck.Fragment.RSTT: recordSyntaxUses :: forall (n :: S). Distinct n => Term n -> TypeCheck n ()
+ Rzk.TypeCheck.Judgements: inferDirectedPoint :: forall (n :: S). Distinct n => Term n -> TypeCheck n (TermT n)
+ Rzk.TypeCheck.Judgements: inferPoint :: forall (n :: S). Distinct n => Term n -> TypeCheck n (TermT n)
+ Rzk.TypeCheck.Judgements: modalizeTope :: forall (n :: S). TModality -> TermT n -> TermT n
+ Rzk.TypeCheck.Monad: FreeStandingRestrictionWarning :: VarIdent -> String -> FragmentUse -> Maybe LocationInfo -> CheckWarning
+ Rzk.TypeCheck.Monad: HoleModalInfo :: TModality -> TModality -> Bool -> HoleModalInfo
+ Rzk.TypeCheck.Monad: HoleTopeEntry :: Rendered -> HoleModalInfo -> HoleTopeEntry
+ Rzk.TypeCheck.Monad: MetaBinderWarning :: VarIdent -> VarIdent -> String -> Maybe LocationInfo -> CheckWarning
+ Rzk.TypeCheck.Monad: OverhangWarning :: String -> String -> [String] -> Maybe LocationInfo -> CheckWarning
+ Rzk.TypeCheck.Monad: RSTTHoleWarning :: Maybe LocationInfo -> CheckWarning
+ Rzk.TypeCheck.Monad: RSTTIncompleteWarning :: String -> Maybe LocationInfo -> CheckWarning
+ Rzk.TypeCheck.Monad: RSTTInductive :: RSTTExtension
+ Rzk.TypeCheck.Monad: RSTTInterval :: RSTTExtension
+ Rzk.TypeCheck.Monad: RSTTModal :: RSTTExtension
+ Rzk.TypeCheck.Monad: RSTTSchematic :: RSTTExtension
+ Rzk.TypeCheck.Monad: RSTTScopeWarning :: RSTTExtension -> String -> Maybe LocationInfo -> CheckWarning
+ Rzk.TypeCheck.Monad: RSTTShapeDependency :: RSTTExtension
+ Rzk.TypeCheck.Monad: RSTTUnsupported :: RSTTExtension
+ Rzk.TypeCheck.Monad: TopeFamilyDomainWarning :: String -> String -> Maybe LocationInfo -> CheckWarning
+ Rzk.TypeCheck.Monad: UseBinder :: FragmentUse
+ Rzk.TypeCheck.Monad: UseConcluded :: FragmentUse
+ Rzk.TypeCheck.Monad: UseData :: FragmentUse
+ Rzk.TypeCheck.Monad: UseIdentity :: FragmentUse
+ Rzk.TypeCheck.Monad: UseMotive :: FragmentUse
+ Rzk.TypeCheck.Monad: [holeEntryMode] :: HoleEntry -> HoleModalInfo
+ Rzk.TypeCheck.Monad: [holeItemAccessible] :: HoleModalInfo -> Bool
+ Rzk.TypeCheck.Monad: [holeItemLocks] :: HoleModalInfo -> TModality
+ Rzk.TypeCheck.Monad: [holeItemModality] :: HoleModalInfo -> TModality
+ Rzk.TypeCheck.Monad: [holeTopeMode] :: HoleTopeEntry -> HoleModalInfo
+ Rzk.TypeCheck.Monad: [holeTopeValue] :: HoleTopeEntry -> Rendered
+ Rzk.TypeCheck.Monad: [logSchematicCache] :: CheckLog -> IntSet
+ Rzk.TypeCheck.Monad: [logSchematicObjectFamilies] :: CheckLog -> IntMap (Maybe Int)
+ Rzk.TypeCheck.Monad: data FragmentUse
+ Rzk.TypeCheck.Monad: data HoleModalInfo
+ Rzk.TypeCheck.Monad: data HoleTopeEntry
+ Rzk.TypeCheck.Monad: data RSTTExtension
+ Rzk.TypeCheck.Monad: instance GHC.Classes.Eq Rzk.TypeCheck.Monad.FragmentUse
+ Rzk.TypeCheck.Monad: instance GHC.Classes.Eq Rzk.TypeCheck.Monad.HoleModalInfo
+ Rzk.TypeCheck.Monad: instance GHC.Classes.Eq Rzk.TypeCheck.Monad.HoleTopeEntry
+ Rzk.TypeCheck.Monad: instance GHC.Classes.Eq Rzk.TypeCheck.Monad.RSTTExtension
+ Rzk.TypeCheck.Monad: instance GHC.Show.Show Rzk.TypeCheck.Monad.FragmentUse
+ Rzk.TypeCheck.Monad: instance GHC.Show.Show Rzk.TypeCheck.Monad.HoleModalInfo
+ Rzk.TypeCheck.Monad: instance GHC.Show.Show Rzk.TypeCheck.Monad.HoleTopeEntry
+ Rzk.TypeCheck.Monad: instance GHC.Show.Show Rzk.TypeCheck.Monad.RSTTExtension
+ Rzk.TypeCheck.Monad: localWarnFreeStandingRestriction :: forall (n :: S) a. Bool -> TypeCheck n a -> TypeCheck n a
+ Rzk.TypeCheck.Monad: localWarnMetaBinder :: forall (n :: S) a. Bool -> TypeCheck n a -> TypeCheck n a
+ Rzk.TypeCheck.Monad: localWarnShapeDependency :: forall (n :: S) a. Bool -> TypeCheck n a -> TypeCheck n a
+ Rzk.TypeCheck.Monad: localWarnTopeFamilyDomain :: forall (n :: S) a. Bool -> TypeCheck n a -> TypeCheck n a
+ Rzk.TypeCheck.Monad: reportIncompleteRSTTCheck :: forall (n :: S). Distinct n => String -> TypeErrorInScopedContext -> TypeCheck n ()
+ Rzk.TypeCheck.Monad: rsttViolation :: CheckWarning -> Maybe String
+ Rzk.TypeCheck.Schematic: checkSchematicDeclaration :: forall (n :: S). Distinct n => TermT n -> Maybe (TermT n) -> TypeCheck n (CheckedSchematicDeclaration n)
+ Rzk.TypeCheck.Schematic: data CheckedSchematicDeclaration (n :: S)
+ Rzk.TypeCheck.Schematic: data SchematicStatement (n :: S)
+ Rzk.TypeCheck.Schematic: instance GHC.Classes.Eq Rzk.TypeCheck.Schematic.Sort
+ Rzk.TypeCheck.Schematic: recordSchematicDeclaration :: forall (n :: S). Distinct n => VarIdent -> TermT n -> Maybe (TermT n) -> TypeCheck n SchematicStatus
- Language.Rzk.Foil.Syntax: MatchF :: term -> Maybe term -> [(VarIdent, term)] -> TermSig scope term
+ Language.Rzk.Foil.Syntax: MatchF :: TModality -> term -> Maybe term -> [(VarIdent, term)] -> TermSig scope term
- Language.Rzk.Foil.Syntax: pattern Match :: Term n -> Maybe (Term n) -> [(VarIdent, Term n)] -> Term n
+ Language.Rzk.Foil.Syntax: pattern Match :: TModality -> Term n -> Maybe (Term n) -> [(VarIdent, Term n)] -> Term n
- Language.Rzk.Foil.Syntax: pattern MatchT :: forall {binder} {ann} {n}. ann (AST binder (AnnSig ann TermSig) n) -> AST binder (AnnSig ann TermSig) n -> Maybe (AST binder (AnnSig ann TermSig) n) -> [(VarIdent, AST binder (AnnSig ann TermSig) n)] -> AST binder (AnnSig ann TermSig) n
+ Language.Rzk.Foil.Syntax: pattern MatchT :: forall {binder} {ann} {n}. ann (AST binder (AnnSig ann TermSig) n) -> TModality -> AST binder (AnnSig ann TermSig) n -> Maybe (AST binder (AnnSig ann TermSig) n) -> [(VarIdent, AST binder (AnnSig ann TermSig) n)] -> AST binder (AnnSig ann TermSig) n
- Rzk.Diagnostic: HoleData :: Maybe String -> String -> Maybe (String, String) -> [(String, String)] -> [(String, String)] -> [String] -> HoleData
+ Rzk.Diagnostic: HoleData :: Maybe String -> String -> Maybe (String, String) -> [HoleDataEntry] -> [HoleDataEntry] -> [HoleDataTope] -> HoleData
- Rzk.Diagnostic: [holeDataCubeVars] :: HoleData -> [(String, String)]
+ Rzk.Diagnostic: [holeDataCubeVars] :: HoleData -> [HoleDataEntry]
- Rzk.Diagnostic: [holeDataTermVars] :: HoleData -> [(String, String)]
+ Rzk.Diagnostic: [holeDataTermVars] :: HoleData -> [HoleDataEntry]
- Rzk.Diagnostic: [holeDataTopes] :: HoleData -> [String]
+ Rzk.Diagnostic: [holeDataTopes] :: HoleData -> [HoleDataTope]
- Rzk.TypeCheck.Context: Context :: Scope n -> NameMap n (VarInfo n) -> Map VarIdent (Name n) -> [Name n] -> [SectionInfo n] -> [ModalTope n] -> [ModalTope n] -> [ModalTope n] -> [[ModalTope n]] -> Maybe Bool -> CachedSaturation n -> Map VarIdent [VarIdent] -> [Action n] -> Int -> Maybe Command -> Maybe LocationInfo -> Verbosity -> Covariance -> Maybe RenderBackend -> Bool -> Bool -> Bool -> [VarIdent] -> Bool -> MetaPrefixSensitivity -> Context (n :: S)
+ Rzk.TypeCheck.Context: Context :: Scope n -> NameMap n (VarInfo n) -> Map VarIdent (Name n) -> [Name n] -> [SectionInfo n] -> [ModalTope n] -> [ModalTope n] -> [ModalTope n] -> [[ModalTope n]] -> Maybe Bool -> CachedSaturation n -> Map VarIdent [VarIdent] -> [Action n] -> Int -> Maybe Command -> Maybe LocationInfo -> Verbosity -> Covariance -> Maybe RenderBackend -> Bool -> Bool -> Bool -> [VarIdent] -> RSTTSafeMode -> Maybe RSTTSafeMode -> Bool -> MetaPrefixSensitivity -> Bool -> Bool -> Bool -> Bool -> Context (n :: S)
- Rzk.TypeCheck.Context: DataElimKind :: Int -> Int -> ElimKind -> DataRoleKind
+ Rzk.TypeCheck.Context: DataElimKind :: TModality -> Int -> Int -> ElimKind -> DataRoleKind
- Rzk.TypeCheck.Context: VarInfo :: TermT n -> Maybe (TermT n) -> TModality -> TModality -> Binder -> Bool -> Bool -> [Name n] -> Maybe LocationInfo -> Maybe (DataRole n) -> Int -> VarInfo (n :: S)
+ Rzk.TypeCheck.Context: VarInfo :: SchematicStatus -> TermT n -> Maybe (TermT n) -> TModality -> TModality -> Binder -> Bool -> Bool -> [Name n] -> Maybe LocationInfo -> Maybe (DataRole n) -> Int -> VarInfo (n :: S)
- Rzk.TypeCheck.Decl.Data: ElimSpec :: VarIdent -> [VarIdent] -> [ParamDecl] -> [VarIdent] -> [ParamDecl] -> VarIdent -> VarIdent -> [VarIdent] -> Maybe [VarIdent] -> VarIdent -> VarIdent -> VarIdent -> [DataConSurface] -> [Maybe ((Term, Term), (Term, Term))] -> ElimSpec
+ Rzk.TypeCheck.Decl.Data: ElimSpec :: VarIdent -> TModality -> [VarIdent] -> [ParamDecl] -> [VarIdent] -> [ParamDecl] -> VarIdent -> VarIdent -> [VarIdent] -> Maybe [VarIdent] -> VarIdent -> VarIdent -> VarIdent -> [DataConSurface] -> [Maybe ((Term, Term), (Term, Term))] -> ElimSpec
- Rzk.TypeCheck.Error: TypeErrorModalityMismatch :: TModality -> TModality -> Term n -> TypeError (n :: S)
+ Rzk.TypeCheck.Error: TypeErrorModalityMismatch :: ModalityMismatchSite -> TModality -> TModality -> Maybe (Term n) -> TypeError (n :: S)
- Rzk.TypeCheck.Error: TypeErrorNotModal :: Term n -> TModality -> TermT n -> TypeError (n :: S)
+ Rzk.TypeCheck.Error: TypeErrorNotModal :: ModalTypeExpectation -> Term n -> TModality -> TermT n -> TypeError (n :: S)
- Rzk.TypeCheck.Error: TypeErrorNotTypeInModal :: TermT n -> TypeError (n :: S)
+ Rzk.TypeCheck.Error: TypeErrorNotTypeInModal :: TModality -> Term n -> TermT n -> TypeError (n :: S)
- Rzk.TypeCheck.Judgements: checkMatch :: forall (n :: S). Distinct n => Term n -> Term n -> Maybe (Term n) -> [(VarIdent, Term n)] -> Maybe (TermT n) -> TypeCheck n (TermT n)
+ Rzk.TypeCheck.Judgements: checkMatch :: forall (n :: S). Distinct n => Term n -> TModality -> Term n -> Maybe (Term n) -> [(VarIdent, Term n)] -> Maybe (TermT n) -> TypeCheck n (TermT n)
- Rzk.TypeCheck.Monad: CheckLog :: [HoleInfo] -> [CheckWarning] -> CheckLog
+ Rzk.TypeCheck.Monad: CheckLog :: [HoleInfo] -> [CheckWarning] -> IntSet -> IntMap (Maybe Int) -> CheckLog
- Rzk.TypeCheck.Monad: HoleEntry :: VarIdent -> Rendered -> HoleEntry
+ Rzk.TypeCheck.Monad: HoleEntry :: VarIdent -> Rendered -> HoleModalInfo -> HoleEntry
- Rzk.TypeCheck.Monad: HoleInfo :: Maybe VarIdent -> Rendered -> Maybe (VarIdent, Rendered) -> [HoleEntry] -> [HoleEntry] -> [Rendered] -> [Rendered] -> [Rendered] -> Maybe String -> Maybe LocationInfo -> HoleInfo
+ Rzk.TypeCheck.Monad: HoleInfo :: Maybe VarIdent -> Rendered -> Maybe (VarIdent, Rendered) -> [HoleEntry] -> [HoleEntry] -> [HoleTopeEntry] -> [Rendered] -> [Rendered] -> Maybe String -> Maybe LocationInfo -> HoleInfo
- Rzk.TypeCheck.Monad: [holeTopes] :: HoleInfo -> [Rendered]
+ Rzk.TypeCheck.Monad: [holeTopes] :: HoleInfo -> [HoleTopeEntry]
- Rzk.TypeCheck.Monad: recordCheckWarning :: forall (n :: S). CheckWarning -> TypeCheck n ()
+ Rzk.TypeCheck.Monad: recordCheckWarning :: forall (n :: S). Distinct n => CheckWarning -> TypeCheck n ()
- Rzk.TypeCheck.Monad: recordHoleInfo :: forall (n :: S). HoleInfo -> TypeCheck n ()
+ Rzk.TypeCheck.Monad: recordHoleInfo :: forall (n :: S). Distinct n => HoleInfo -> TypeCheck n ()
Files
- ChangeLog.md +36/−0
- app/Main.hs +22/−8
- grammar/Syntax.cf +40/−36
- rzk.cabal +227/−11
- src/Language/Rzk/Foil/Convert.hs +6/−2
- src/Language/Rzk/Foil/Print.hs +6/−4
- src/Language/Rzk/Foil/Syntax.hs +5/−3
- src/Language/Rzk/Syntax/Abs.hs +4/−0
- src/Language/Rzk/Syntax/Par.hs +3159/−3100
- src/Language/Rzk/Syntax/Print.hs +37/−35
- src/Language/Rzk/VSCode/ReferenceIndex.hs +4/−0
- src/Language/Rzk/VSCode/Tokenize.hs +9/−0
- src/Rzk/Diagnostic.hs +156/−17
- src/Rzk/TypeCheck/Context.hs +79/−34
- src/Rzk/TypeCheck/Decl.hs +361/−84
- src/Rzk/TypeCheck/Decl/Data.hs +65/−17
- src/Rzk/TypeCheck/Error.hs +94/−26
- src/Rzk/TypeCheck/Eval.hs +215/−108
- src/Rzk/TypeCheck/Fragment/RSTT.hs +535/−0
- src/Rzk/TypeCheck/Judgements.hs +197/−84
- src/Rzk/TypeCheck/MetaPrefix.hs +37/−78
- src/Rzk/TypeCheck/Monad.hs +121/−16
- src/Rzk/TypeCheck/NbE.hs +47/−33
- src/Rzk/TypeCheck/Schematic.hs +418/−0
- src/Rzk/TypeCheck/Unify.hs +17/−7
- test/Rzk/DiagnosticSpec.hs +145/−3
- test/Rzk/FoilCoreSpec.hs +4/−0
- test/Rzk/HolesSpec.hs +149/−8
- test/Rzk/RSTTSafeSpec.hs +286/−0
- test/Rzk/RefIndexSpec.hs +15/−0
- test/Rzk/SchematicSpec.hs +233/−0
- test/Rzk/SemanticTokensSpec.hs +7/−0
- test/typecheck/cases/happy-data-bool.rzk +3/−0
- test/typecheck/cases/happy-data-circle.rzk +3/−0
- test/typecheck/cases/happy-data-coprod.rzk +3/−0
- test/typecheck/cases/happy-data-eliminator-reascription.rzk +3/−0
- test/typecheck/cases/happy-data-empty.rzk +3/−0
- test/typecheck/cases/happy-data-eta-short.rzk +3/−0
- test/typecheck/cases/happy-data-hit-reascription.rzk +3/−0
- test/typecheck/cases/happy-data-hottbook-nat.rzk +3/−0
- test/typecheck/cases/happy-data-indices-edge.rzk +3/−0
- test/typecheck/cases/happy-data-interval-funext.rzk +3/−0
- test/typecheck/cases/happy-data-large-warning.rzk +3/−0
- test/typecheck/cases/happy-data-list.rzk +3/−0
- test/typecheck/cases/happy-data-modal-kind-param.expect.yaml +3/−0
- test/typecheck/cases/happy-data-modal-kind-param.rzk +29/−0
- test/typecheck/cases/happy-data-modal-shape-field.expect.yaml +4/−0
- test/typecheck/cases/happy-data-modal-shape-field.rzk +33/−0
- test/typecheck/cases/happy-data-nat.rzk +3/−0
- test/typecheck/cases/happy-data-path-shape-field.expect.yaml +4/−0
- test/typecheck/cases/happy-data-path-shape-field.rzk +33/−0
- test/typecheck/cases/happy-data-prop-trunc.rzk +3/−0
- test/typecheck/cases/happy-data-pushout.rzk +3/−0
- test/typecheck/cases/happy-data-rec-section.rzk +3/−0
- test/typecheck/cases/happy-data-section.rzk +3/−0
- test/typecheck/cases/happy-data-shape-realisation.expect.yaml +1/−0
- test/typecheck/cases/happy-data-shape-realisation.rzk +69/−0
- test/typecheck/cases/happy-data-shape-tope.expect.yaml +1/−0
- test/typecheck/cases/happy-data-shape-tope.rzk +25/−0
- test/typecheck/cases/happy-data-tope-param.expect.yaml +3/−0
- test/typecheck/cases/happy-data-tope-param.rzk +6/−0
- test/typecheck/cases/happy-data-vec.rzk +3/−0
- test/typecheck/cases/happy-ext-style-restrictions.expect.yaml +5/−0
- test/typecheck/cases/happy-ext-style-restrictions.rzk +36/−0
- test/typecheck/cases/happy-flip-unflip.rzk +11/−5
- test/typecheck/cases/happy-interval-endpoint-entailment.expect.yaml +3/−0
- test/typecheck/cases/happy-interval-endpoint-entailment.rzk +19/−0
- test/typecheck/cases/happy-match-basics.rzk +3/−0
- test/typecheck/cases/happy-match-case-vec.rzk +3/−0
- test/typecheck/cases/happy-match-indexed.rzk +3/−0
- test/typecheck/cases/happy-match-modal.expect.yaml +9/−0
- test/typecheck/cases/happy-match-modal.rzk +83/−0
- test/typecheck/cases/happy-meta-prefix-option-off.rzk +3/−0
- test/typecheck/cases/happy-meta-prefix-plumbing.rzk +3/−0
- test/typecheck/cases/happy-modal-inv.rzk +101/−10
- test/typecheck/cases/happy-modal-let-dependent-payload.expect.yaml +4/−0
- test/typecheck/cases/happy-modal-let-dependent-payload.rzk +27/−0
- test/typecheck/cases/happy-modal-let-restricted.expect.yaml +5/−0
- test/typecheck/cases/happy-modal-let-restricted.rzk +71/−0
- test/typecheck/cases/happy-modal-tope-unwrap.rzk +2/−1
- test/typecheck/cases/happy-modal-uninv-shape-restricted.expect.yaml +3/−0
- test/typecheck/cases/happy-modal-uninv-shape-restricted.rzk +26/−0
- test/typecheck/cases/happy-restrict-face-not-contained.rzk +2/−2
- test/typecheck/cases/happy-rstt-awareness.expect.yaml +6/−0
- test/typecheck/cases/happy-rstt-awareness.rzk +7/−0
- test/typecheck/cases/happy-rstt-bare-tope-param.expect.yaml +5/−0
- test/typecheck/cases/happy-rstt-bare-tope-param.rzk +18/−0
- test/typecheck/cases/happy-rstt-boundary-error.expect.yaml +4/−0
- test/typecheck/cases/happy-rstt-boundary-error.rzk +4/−0
- test/typecheck/cases/happy-rstt-boundary-multicube.expect.yaml +4/−0
- test/typecheck/cases/happy-rstt-boundary-multicube.rzk +40/−0
- test/typecheck/cases/happy-rstt-boundary-warn.expect.yaml +4/−0
- test/typecheck/cases/happy-rstt-boundary-warn.rzk +4/−0
- test/typecheck/cases/happy-rstt-boundary.expect.yaml +4/−0
- test/typecheck/cases/happy-rstt-boundary.rzk +10/−0
- test/typecheck/cases/happy-rstt-independent-cubes.expect.yaml +4/−0
- test/typecheck/cases/happy-rstt-independent-cubes.rzk +9/−0
- test/typecheck/cases/happy-rstt-off.expect.yaml +4/−0
- test/typecheck/cases/happy-rstt-off.rzk +5/−0
- test/typecheck/cases/happy-rstt-schema-parameters.expect.yaml +4/−0
- test/typecheck/cases/happy-rstt-schema-parameters.rzk +8/−0
- test/typecheck/cases/happy-rstt-shape-dependency-off.expect.yaml +4/−0
- test/typecheck/cases/happy-rstt-shape-dependency-off.rzk +7/−0
- test/typecheck/cases/happy-rstt-tail-nested.expect.yaml +4/−0
- test/typecheck/cases/happy-rstt-tail-nested.rzk +27/−0
- test/typecheck/cases/happy-rstt-tau-flip.expect.yaml +4/−0
- test/typecheck/cases/happy-rstt-tau-flip.rzk +56/−0
- test/typecheck/cases/happy-rstt-tope-terms.expect.yaml +4/−0
- test/typecheck/cases/happy-rstt-tope-terms.rzk +15/−0
- test/typecheck/cases/happy-rstt-trusted-postulate.expect.yaml +4/−0
- test/typecheck/cases/happy-rstt-trusted-postulate.rzk +6/−0
- test/typecheck/cases/happy-set-option-warn-overhang.expect.yaml +2/−0
- test/typecheck/cases/happy-tope-assume.expect.yaml +3/−0
- test/typecheck/cases/happy-tope-assume.rzk +12/−0
- test/typecheck/cases/happy-tope-family-domain-instance.expect.yaml +6/−0
- test/typecheck/cases/happy-tope-family-domain-instance.rzk +28/−0
- test/typecheck/cases/happy-tope-param.expect.yaml +3/−0
- test/typecheck/cases/happy-tope-param.rzk +39/−0
- test/typecheck/cases/ill-data-cube-index.expect.yaml +7/−0
- test/typecheck/cases/ill-data-cube-index.rzk +7/−0
- test/typecheck/cases/ill-data-cube-param.expect.yaml +7/−0
- test/typecheck/cases/ill-data-cube-param.rzk +9/−0
- test/typecheck/cases/ill-data-cube-universe-field.expect.yaml +6/−0
- test/typecheck/cases/ill-data-cube-universe-field.rzk +6/−0
- test/typecheck/cases/ill-data-cube-universe-index.expect.yaml +6/−0
- test/typecheck/cases/ill-data-cube-universe-index.rzk +5/−0
- test/typecheck/cases/ill-data-eliminator-unknown.expect.yaml +1/−1
- test/typecheck/cases/ill-data-eliminator-unknown.rzk +1/−1
- test/typecheck/cases/ill-data-modal-cube-field.expect.yaml +6/−0
- test/typecheck/cases/ill-data-modal-cube-field.rzk +5/−0
- test/typecheck/cases/ill-data-modal-kind-param-lock.expect.yaml +6/−0
- test/typecheck/cases/ill-data-modal-kind-param-lock.rzk +7/−0
- test/typecheck/cases/ill-data-modal-kind-param-point.expect.yaml +4/−0
- test/typecheck/cases/ill-data-modal-kind-param-point.rzk +6/−0
- test/typecheck/cases/ill-data-modal-shape-field-lock.expect.yaml +8/−0
- test/typecheck/cases/ill-data-modal-shape-field-lock.rzk +13/−0
- test/typecheck/cases/ill-data-modal-tope-field.expect.yaml +6/−0
- test/typecheck/cases/ill-data-modal-tope-field.rzk +6/−0
- test/typecheck/cases/ill-data-modal-tope-index.expect.yaml +6/−0
- test/typecheck/cases/ill-data-modal-tope-index.rzk +5/−0
- test/typecheck/cases/ill-data-modal-type-field.expect.yaml +7/−0
- test/typecheck/cases/ill-data-modal-type-field.rzk +8/−0
- test/typecheck/cases/ill-data-no-sharp-eliminator.expect.yaml +4/−0
- test/typecheck/cases/ill-data-no-sharp-eliminator.rzk +6/−0
- test/typecheck/cases/ill-data-shape-field.expect.yaml +0/−7
- test/typecheck/cases/ill-data-shape-field.rzk +0/−5
- test/typecheck/cases/ill-data-shape-index-named.expect.yaml +7/−0
- test/typecheck/cases/ill-data-shape-index-named.rzk +9/−0
- test/typecheck/cases/ill-data-shape-index.expect.yaml +7/−0
- test/typecheck/cases/ill-data-shape-index.rzk +8/−0
- test/typecheck/cases/ill-data-shape-param.expect.yaml +7/−0
- test/typecheck/cases/ill-data-shape-param.rzk +9/−0
- test/typecheck/cases/ill-data-tope-family-field.expect.yaml +6/−0
- test/typecheck/cases/ill-data-tope-family-field.rzk +6/−0
- test/typecheck/cases/ill-data-tope-family-index.expect.yaml +6/−0
- test/typecheck/cases/ill-data-tope-family-index.rzk +5/−0
- test/typecheck/cases/ill-data-tope-field.expect.yaml +6/−0
- test/typecheck/cases/ill-data-tope-field.rzk +4/−0
- test/typecheck/cases/ill-data-tope-index.expect.yaml +6/−0
- test/typecheck/cases/ill-data-tope-index.rzk +4/−0
- test/typecheck/cases/ill-hole-recor-guard-point.expect.yaml +6/−0
- test/typecheck/cases/ill-hole-recor-guard-point.rzk +8/−0
- test/typecheck/cases/ill-kind-app-argument-tope.expect.yaml +6/−0
- test/typecheck/cases/ill-kind-app-argument-tope.rzk +6/−0
- test/typecheck/cases/ill-kind-define-tope.expect.yaml +6/−0
- test/typecheck/cases/ill-kind-define-tope.rzk +5/−0
- test/typecheck/cases/ill-kind-id-carrier-tope.expect.yaml +6/−0
- test/typecheck/cases/ill-kind-id-carrier-tope.rzk +4/−0
- test/typecheck/cases/ill-kind-sigma-body-tope.expect.yaml +6/−0
- test/typecheck/cases/ill-kind-sigma-body-tope.rzk +4/−0
- test/typecheck/cases/ill-kind-sigma-cube-universe.expect.yaml +6/−0
- test/typecheck/cases/ill-kind-sigma-cube-universe.rzk +4/−0
- test/typecheck/cases/ill-kind-sigma-tope-family.expect.yaml +6/−0
- test/typecheck/cases/ill-kind-sigma-tope-family.rzk +4/−0
- test/typecheck/cases/ill-kind-sigma-tope.expect.yaml +6/−0
- test/typecheck/cases/ill-kind-sigma-tope.rzk +4/−0
- test/typecheck/cases/ill-match-modal-hit.expect.yaml +6/−0
- test/typecheck/cases/ill-match-modal-hit.rzk +8/−0
- test/typecheck/cases/ill-match-modal-ih-remodalized.expect.yaml +6/−0
- test/typecheck/cases/ill-match-modal-ih-remodalized.rzk +10/−0
- test/typecheck/cases/ill-match-modal-inaccessible.expect.yaml +8/−0
- test/typecheck/cases/ill-match-modal-inaccessible.rzk +8/−0
- test/typecheck/cases/ill-match-modal-motive.expect.yaml +6/−0
- test/typecheck/cases/ill-match-modal-motive.rzk +9/−0
- test/typecheck/cases/ill-match-modal-sharp.expect.yaml +6/−0
- test/typecheck/cases/ill-match-modal-sharp.rzk +8/−0
- test/typecheck/cases/ill-modal-b-no-dist.expect.yaml +1/−1
- test/typecheck/cases/ill-modal-not-modal.expect.yaml +3/−1
- test/typecheck/cases/ill-rstt-auxiliary-interval.expect.yaml +6/−0
- test/typecheck/cases/ill-rstt-auxiliary-interval.rzk +3/−0
- test/typecheck/cases/ill-rstt-boundary-obligation.expect.yaml +4/−0
- test/typecheck/cases/ill-rstt-boundary-obligation.rzk +5/−0
- test/typecheck/cases/ill-rstt-dependent-cube-family.expect.yaml +6/−0
- test/typecheck/cases/ill-rstt-dependent-cube-family.rzk +5/−0
- test/typecheck/cases/ill-rstt-dependent-cube-instance.expect.yaml +6/−0
- test/typecheck/cases/ill-rstt-dependent-cube-instance.rzk +6/−0
- test/typecheck/cases/ill-rstt-dependent-cube.expect.yaml +6/−0
- test/typecheck/cases/ill-rstt-dependent-cube.rzk +5/−0
- test/typecheck/cases/ill-rstt-false-bottom.expect.yaml +4/−0
- test/typecheck/cases/ill-rstt-false-bottom.rzk +4/−0
- test/typecheck/cases/ill-rstt-false-refl.expect.yaml +4/−0
- test/typecheck/cases/ill-rstt-false-refl.rzk +4/−0
- test/typecheck/cases/ill-rstt-inductive.expect.yaml +6/−0
- test/typecheck/cases/ill-rstt-inductive.rzk +4/−0
- test/typecheck/cases/ill-rstt-meta-binder-in-face.expect.yaml +6/−0
- test/typecheck/cases/ill-rstt-meta-binder-in-face.rzk +6/−0
- test/typecheck/cases/ill-rstt-meta-binder.expect.yaml +6/−0
- test/typecheck/cases/ill-rstt-meta-binder.rzk +5/−0
- test/typecheck/cases/ill-rstt-meta-prefix.expect.yaml +6/−0
- test/typecheck/cases/ill-rstt-meta-prefix.rzk +5/−0
- test/typecheck/cases/ill-rstt-modal.expect.yaml +6/−0
- test/typecheck/cases/ill-rstt-modal.rzk +4/−0
- test/typecheck/cases/ill-rstt-option.expect.yaml +6/−0
- test/typecheck/cases/ill-rstt-option.rzk +3/−0
- test/typecheck/cases/ill-rstt-packed-cube-family.expect.yaml +7/−0
- test/typecheck/cases/ill-rstt-packed-cube-family.rzk +6/−0
- test/typecheck/cases/ill-rstt-packed-type-family.expect.yaml +6/−0
- test/typecheck/cases/ill-rstt-packed-type-family.rzk +4/−0
- test/typecheck/cases/ill-rstt-postulate.expect.yaml +6/−0
- test/typecheck/cases/ill-rstt-postulate.rzk +3/−0
- test/typecheck/cases/ill-rstt-restriction-in-domain.expect.yaml +6/−0
- test/typecheck/cases/ill-rstt-restriction-in-domain.rzk +6/−0
- test/typecheck/cases/ill-rstt-restriction.expect.yaml +6/−0
- test/typecheck/cases/ill-rstt-restriction.rzk +5/−0
- test/typecheck/cases/ill-rstt-shape-boundary.expect.yaml +7/−0
- test/typecheck/cases/ill-rstt-shape-boundary.rzk +5/−0
- test/typecheck/cases/ill-rstt-shape-domain.expect.yaml +7/−0
- test/typecheck/cases/ill-rstt-shape-domain.rzk +4/−0
- test/typecheck/cases/ill-rstt-uncovered-endpoints.expect.yaml +4/−0
- test/typecheck/cases/ill-rstt-uncovered-endpoints.rzk +5/−0
- test/typecheck/cases/ill-rstt-unsupported.expect.yaml +8/−0
- test/typecheck/cases/ill-rstt-unsupported.rzk +4/−0
- test/typecheck/cases/ill-shape-dependency-option.expect.yaml +6/−0
- test/typecheck/cases/ill-shape-dependency-option.rzk +3/−0
- test/typecheck/cases/ill-tope-family-domain-non-instance.expect.yaml +8/−0
- test/typecheck/cases/ill-tope-family-domain-non-instance.rzk +17/−0
- test/typecheck/cases/ill-tope-family-domain-same-domain.expect.yaml +5/−0
- test/typecheck/cases/ill-tope-family-domain-same-domain.rzk +14/−0
- test/typecheck/cases/ill-tope-param-entailment.expect.yaml +4/−0
- test/typecheck/cases/ill-tope-param-entailment.rzk +7/−0
- test/typecheck/cases/ill-tope-param-instance.expect.yaml +4/−0
- test/typecheck/cases/ill-tope-param-instance.rzk +7/−0
- test/typecheck/cases/ill-tope-param-lambda.expect.yaml +0/−6
- test/typecheck/cases/ill-tope-param-lambda.rzk +0/−3
- test/typecheck/cases/ill-tope-param-typefun.expect.yaml +0/−6
- test/typecheck/cases/ill-tope-param-typefun.rzk +0/−3
- test/typecheck/cases/warn-free-standing-restriction-assumed.expect.yaml +13/−0
- test/typecheck/cases/warn-free-standing-restriction-assumed.rzk +41/−0
- test/typecheck/cases/warn-free-standing-restriction-option.expect.yaml +5/−0
- test/typecheck/cases/warn-free-standing-restriction-option.rzk +20/−0
- test/typecheck/cases/warn-meta-binder-inside-term.expect.yaml +7/−0
- test/typecheck/cases/warn-meta-binder-inside-term.rzk +45/−0
- test/typecheck/cases/warn-meta-prefix-object-position.rzk +3/−0
- test/typecheck/cases/warn-meta-prefix-option-structural.rzk +3/−0
- test/typecheck/cases/warn-meta-prefix-section.rzk +3/−0
- test/typecheck/cases/warn-meta-prefix-strict-only.rzk +3/−0
- test/typecheck/cases/warn-overhang-controls.expect.yaml +7/−0
- test/typecheck/cases/warn-overhang-controls.rzk +13/−0
- test/typecheck/cases/warn-rstt-bare-tope-binder-in-term.expect.yaml +7/−0
- test/typecheck/cases/warn-rstt-bare-tope-binder-in-term.rzk +11/−0
- test/typecheck/cases/warn-rstt-bare-tope-object-point.expect.yaml +6/−0
- test/typecheck/cases/warn-rstt-bare-tope-object-point.rzk +10/−0
- test/typecheck/cases/warn-rstt-default.expect.yaml +4/−0
- test/typecheck/cases/warn-rstt-default.rzk +8/−0
- test/typecheck/cases/warn-rstt-escape-beta.expect.yaml +5/−0
- test/typecheck/cases/warn-rstt-escape-beta.rzk +6/−0
- test/typecheck/cases/warn-rstt-escape-iota.expect.yaml +5/−0
- test/typecheck/cases/warn-rstt-escape-iota.rzk +8/−0
- test/typecheck/cases/warn-rstt-escape-let.expect.yaml +5/−0
- test/typecheck/cases/warn-rstt-escape-let.rzk +6/−0
- test/typecheck/cases/warn-rstt-escape-pair.expect.yaml +5/−0
- test/typecheck/cases/warn-rstt-escape-pair.rzk +6/−0
- test/typecheck/cases/warn-rstt-escape-section.expect.yaml +5/−0
- test/typecheck/cases/warn-rstt-escape-section.rzk +11/−0
- test/typecheck/cases/warn-rstt-escape-tope-family.expect.yaml +5/−0
- test/typecheck/cases/warn-rstt-escape-tope-family.rzk +6/−0
- test/typecheck/cases/warn-rstt-escape-unfolding.expect.yaml +6/−0
- test/typecheck/cases/warn-rstt-escape-unfolding.rzk +7/−0
- test/typecheck/cases/warn-rstt-inductive.expect.yaml +6/−0
- test/typecheck/cases/warn-rstt-inductive.rzk +6/−0
- test/typecheck/cases/warn-rstt-modal.expect.yaml +8/−0
- test/typecheck/cases/warn-rstt-modal.rzk +6/−0
- test/typecheck/cases/warn-rstt-reset.expect.yaml +4/−0
- test/typecheck/cases/warn-rstt-reset.rzk +6/−0
- test/typecheck/cases/warn-rstt-shape-dependency.expect.yaml +11/−0
- test/typecheck/cases/warn-rstt-shape-dependency.rzk +27/−0
- test/typecheck/cases/warn-rstt-warn-overrides-standalone.expect.yaml +5/−0
- test/typecheck/cases/warn-rstt-warn-overrides-standalone.rzk +7/−0
- test/typecheck/cases/warn-tope-family-domain-non-instance.expect.yaml +6/−0
- test/typecheck/cases/warn-tope-family-domain-non-instance.rzk +22/−0
- test/typecheck/cases/warn-tope-family-domain-option.expect.yaml +5/−0
- test/typecheck/cases/warn-tope-family-domain-option.rzk +19/−0
ChangeLog.md view
@@ -6,6 +6,42 @@ and this project adheres to the [Haskell Package Versioning Policy](https://pvp.haskell.org/). +## v0.11.4 — 2026-11-04++This release closes a soundness gap in tope families, adds an RSTT-safe mode that reports what lies outside Riehl–Shulman type theory, and adds a modal `#!rzk match`. One rule now decides which kinds may appear where. Some programs that were accepted before are now rejected, and each such change is marked **Breaking** below. sHoTT still typechecks.++Added:++- **RSTT-safe mode** (see [#364](https://github.com/rzk-lang/rzk/pull/364)). With `rstt-safe = "warn"`, rzk reports declarations outside Riehl–Shulman type theory and outside the fragment in which conservativity is proved: assumed free-standing restrictions, boundaries that depend on outer cube points, a universe used as an ordinary type (as in Hurkens's paradox), holes, and syntax outside RSTT (modalities, auxiliary intervals, inductive types). With `"error"` such declarations are rejected, and `--rstt-safe` on the command line overrides the source settings. The mode is off by default (see [#372](https://github.com/rzk-lang/rzk/pull/372)), since its checks make sHoTT take 5.9 s instead of 1.6 s. For the same reason, the standalone `warn-shape-dependency` check is off by default too.++- **Modal `#!rzk match`**, by [Islam Talipov](https://github.com/LIshy2) (see [#358](https://github.com/rzk-lang/rzk/pull/358)). `#!rzk match ♭ n (…)` eliminates a scrutinee available under `♭` or `ᵒᵖ`, and the constructor fields inherit the modality. These are Shulman's crisp induction principles, and there are none for `♯`. A `#!rzk #data` without path constructors also generates `ind-op-D`, `rec-op-D`, `ind-b-D`, and `rec-b-D`. **Breaking**: `#!rzk match mod μ x (…)` is a syntax error (write `#!rzk match (mod μ x) (…)`), and an earlier definition with one of the four new names now clashes.++- **A warning for a tope family not included in its domain** (see [#362](https://github.com/rzk-lang/rzk/pull/362)). Such a family is read as its intersection with the domain. This is convenient to write (sHoTT writes the faces of a horn on the whole cube), but the family checked is not the one written.++Changed:++- **The layer discipline** (see [#354](https://github.com/rzk-lang/rzk/pull/354)). One rule per position now decides, on the elaborated form, which kinds may appear in `#!rzk #data`. A parameter may be a type, `#!rzk CUBE`, a tope family, a modal kind, or (as suggested by Islam Talipov) a bare tope `#!rzk (ψ : TOPE)`. An index must be a type. A field may be a type, a cube point, or a shape point in any spelling, such as `#!rzk (t : 2 | ⊤)` or `#!rzk (t :♭ Δ¹)`. **Breaking**: cubes, topes, and tope families are no longer accepted as fields or indices, points not as parameters, and no universe kind as a Σ component, an identity carrier, a definition at type `#!rzk U`, or an argument at type `#!rzk U`. sHoTT and the documentation use none of these.++- **Modal diagnostics name what went wrong**, by Islam Talipov (see [#365](https://github.com/rzk-lang/rzk/pull/365)). Contexts in errors and hole goals mark an inaccessible entry with `×`, its modality, and the locks accumulated since, and the JSON output of holes carries the same fields. Modal errors name the site and both sides.++Fixed:++- **A tope family is elaborated with its declared domain** (see [#359](https://github.com/rzk-lang/rzk/pull/359)). A family not included in its domain, such as `#!rzk \ t → TOP` over the empty shape, was read with the domain where a family variable is applied and without it once the family was substituted. The two readings together gave a closed term of every type. Such a family now elaborates to its intersection with the domain.++- **The interval order at the endpoints**, by Islam Talipov (see [#361](https://github.com/rzk-lang/rzk/pull/361), fixing [#360](https://github.com/rzk-lang/rzk/issues/360)). The tope solver derives `s ≤ t` from `t ≡ 1ᵢ` or `s ≡ 0ᵢ`.++- **Modal fixes**, by Islam Talipov (see [#357](https://github.com/rzk-lang/rzk/pull/357)). `#!rzk let mod` eliminates a modal value whose type carries a boundary restriction, a motive-free `#!rzk let mod` instantiates a dependent result type with the payload, and topes under `ᵒᵖ` are normalised symmetrically.++- **Hole candidates** (see [#367](https://github.com/rzk-lang/rzk/pull/367), [#260](https://github.com/rzk-lang/rzk/pull/260)). A lemma whose edge body is headed by a hole is offered as a candidate, and in lenient mode an incomplete guard such as `#!rzk recOR (? ≤ ? ↦ a , ? ↦ a)` records its holes instead of failing.++Performance:++- **sHoTT checks 8–10% faster than with v0.11.3.** Part of the gain comes from the upgrade to free-foil 0.6.1 (see [#370](https://github.com/rzk-lang/rzk/pull/370)), whose substitution and α-equivalence specialise at rzk's signature.++Documentation:++- The hole guide and the direction of the overhang warning's entailment are corrected (see [#368](https://github.com/rzk-lang/rzk/pull/368)).+ ## v0.11.3 — 2026-08-31 A maintenance release. The conversion fast path now compares stuck applications spine to spine, the modal `#!rzk let` gets a clearer surface syntax, and `rzk version --full` describes the build.
app/Main.hs view
@@ -50,12 +50,14 @@ data TypecheckOptions = TypecheckOptions { typecheckAllowHoles :: Bool , typecheckJson :: Bool+ , typecheckRSTTSafe :: Maybe String } deriving (Generic, Show, ParseRecord, Read, ParseField) instance ParseFields TypecheckOptions where parseFields _ _ _ _ = TypecheckOptions <$> parseFields (Just "Allow unsolved holes: report each hole's goal and local context instead of failing") (Just "allow-holes") (Just 'H') Nothing <*> parseFields (Just "Output diagnostics (type errors and holes) as JSON on stdout") (Just "json") (Just 'j') Nothing+ <*> parseFields (Just "Enforce RSTT fragment checks throughout the run: warn, error, or off") (Just "rstt-safe") Nothing Nothing data VersionOptions = VersionOptions { versionFull :: Bool@@ -80,9 +82,19 @@ withUtf8 $ #endif getRecord "rzk: an experimental proof assistant for synthetic ∞-categories" >>= \case- Typecheck (TypecheckOptions {typecheckAllowHoles = allowHolesFlag, typecheckJson = jsonFlag}) paths -> do+ Typecheck (TypecheckOptions {typecheckAllowHoles = allowHolesFlag, typecheckJson = jsonFlag, typecheckRSTTSafe = safeFlag}) paths -> do+ safeOverride <- case safeFlag of+ Nothing -> pure Nothing+ Just "warn" -> pure (Just RSTTSafeWarn)+ Just "error" -> pure (Just RSTTSafeError)+ Just "off" -> pure (Just RSTTSafeOff)+ Just _ -> do+ putStrLn "Unknown --rstt-safe mode (use warn, error, or off)"+ exitFailure modules <- parseRzkFilesOrStdin paths- let reportError err = do+ let baseContext = if jsonFlag || allowHolesFlag then allowHoles emptyContext else emptyContext+ result = checkedModules modules (baseContext { ctxRSTTSafeOverride = safeOverride })+ reportError err = do putStrLn "An error occurred when typechecking!" putStrLn $ unlines [ "Type Error:"@@ -93,7 +105,7 @@ -- holes as hints) as a JSON array on stdout; progress goes to stderr. -- Exit non-zero iff there is an error-severity diagnostic. then do- let diagnostics = case typecheckModulesWithHoles modules of+ let diagnostics = case result of Left err -> [diagnoseTypeError BottomUp err] Right (Checked _ctx _decls errors warnings, holes) -> map (diagnoseTypeError BottomUp) errors@@ -102,7 +114,7 @@ BL8.putStrLn (encode diagnostics) when (any ((== SeverityError) . diagnosticSeverity) diagnostics) exitFailure else if allowHolesFlag- then case typecheckModulesWithHoles modules of+ then case result of Left err -> reportError err >> exitFailure Right (Checked _ctx _decls errors warnings, holes) -> do forM_ warnings (putStrLn . ppCheckWarning)@@ -110,11 +122,13 @@ case errors of [] -> putStrLn ("Everything is ok! (" <> show (length holes) <> " hole(s))") _ -> do forM_ errors reportError; exitFailure- else case typecheckModules modules of+ else case result of Left err -> reportError err >> exitFailure- Right checked -> do- forM_ (checkedWarnings checked) (putStrLn . ppCheckWarning)- putStrLn "Everything is ok!"+ Right (Checked _ _ errors warnings, _) -> do+ forM_ warnings (putStrLn . ppCheckWarning)+ case errors of+ [] -> putStrLn "Everything is ok!"+ _ -> do forM_ errors reportError; exitFailure Lsp -> #ifdef LSP_ENABLED
grammar/Syntax.cf view
@@ -150,25 +150,25 @@ ASCII_ModalColonOp. ModalColon ::= ":_op" ; -- Universes-Universe. Term7 ::= "U" ;-UniverseCube. Term7 ::= "CUBE" ;-UniverseTope. Term7 ::= "TOPE" ;+Universe. Term8 ::= "U" ;+UniverseCube. Term8 ::= "CUBE" ;+UniverseTope. Term8 ::= "TOPE" ; -- Cubes-CubeUnit. Term7 ::= "1" ;-CubeUnitStar. Term7 ::= "*₁" ;-Cube2. Term7 ::= "2" ;-Cube2_0. Term7 ::= "0₂" ;-Cube2_1. Term7 ::= "1₂" ;-CubeI. Term7 ::= "𝕀" ;-CubeI_0. Term7 ::= "0ᵢ" ;-CubeI_1. Term7 ::= "1ᵢ" ;+CubeUnit. Term8 ::= "1" ;+CubeUnitStar. Term8 ::= "*₁" ;+Cube2. Term8 ::= "2" ;+Cube2_0. Term8 ::= "0₂" ;+Cube2_1. Term8 ::= "1₂" ;+CubeI. Term8 ::= "𝕀" ;+CubeI_0. Term8 ::= "0ᵢ" ;+CubeI_1. Term8 ::= "1ᵢ" ; CubeProduct. Term5 ::= Term5 "×" Term6 ; -- Lattice operations on cube points (join/meet) CubeSup. Term5 ::= Term5 "⊔" Term6 ; CubeInf. Term5 ::= Term5 "⊓" Term6 ; -- Topes-TopeTop. Term7 ::= "⊤" ;-TopeBottom. Term7 ::= "⊥" ;+TopeTop. Term8 ::= "⊤" ;+TopeBottom. Term8 ::= "⊥" ; TopeEQ. Term4 ::= Term5 "≡" Term5 ; TopeLEQ. Term4 ::= Term5 "≤" Term5 ; TopeAnd. Term3 ::= Term4 "∧" Term3 ;@@ -186,14 +186,14 @@ ascii_CubeUnflip. Term6 ::= "unflip_op" Term7 ; define ascii_CubeUnflip t = CubeUnflip t ; -- Tope disjunction elimination-RecBottom. Term7 ::= "recBOT" ;-RecOr. Term7 ::= "recOR" "(" [Restriction] ")" ;+RecBottom. Term8 ::= "recBOT" ;+RecOr. Term8 ::= "recOR" "(" [Restriction] ")" ; -- Types TypeFun. Term1 ::= ParamDecl "→" Term1 ; TypeSigma. Term1 ::= "Σ" "(" Pattern ":" Term ")" "," Term1 ; TypeSigmaModal. Term1 ::= "Σ" "(" Pattern ModalColon Term ")" "," Term1 ; TypeSigmaTuple. Term1 ::= "Σ" "(" SigmaParam "," [SigmaParam] ")" "," Term1 ;-TypeUnit. Term7 ::= "Unit" ;+TypeUnit. Term8 ::= "Unit" ; TypeId. Term1 ::= Term2 "=_{" Term "}" Term2 ; TypeIdSimple. Term1 ::= Term2 "=" Term2 ; TypeRestricted. Term6 ::= Term6 "[" [Restriction] "]" ;@@ -201,8 +201,8 @@ Let. Term1 ::= "let" Bind ":=" Term "in" Term ; App. Term6 ::= Term6 Term7 ; Lambda. Term1 ::= "\\" [Param] "→" Term1 ;-Pair. Term7 ::= "(" Term "," Term ")" ;-Tuple. Term7 ::= "(" Term "," Term "," [Term] ")" ;+Pair. Term8 ::= "(" Term "," Term ")" ;+Tuple. Term8 ::= "(" Term "," Term "," [Term] ")" ; ModApp. Term7 ::= "mod" Modality Term7 ; ModType. Term7 ::= Modality Term7 ; ModExtract. Term6 ::= "$extract$" ModComp Term7 ;@@ -214,21 +214,25 @@ LetModFramedInto. Term1 ::= "let" Modality "mod" Modality Bind ":=" Term "into" Term "in" Term ; First. Term6 ::= "π₁" Term7 ; Second. Term6 ::= "π₂" Term7 ;-Unit. Term7 ::= "unit" ;-Refl. Term7 ::= "refl";-ReflTerm. Term7 ::= "refl_{" Term "}" ;-ReflTermType. Term7 ::= "refl_{" Term ":" Term "}" ;-IdJ. Term7 ::= "idJ" "(" Term "," Term "," Term "," Term "," Term "," Term ")" ;-Match. Term7 ::= "match" Term7 "(" [MatchBranch] ")" ;-MatchInto. Term7 ::= "match" Term7 "into" Term7 "(" [MatchBranch] ")" ;+Unit. Term8 ::= "unit" ;+Refl. Term8 ::= "refl";+ReflTerm. Term8 ::= "refl_{" Term "}" ;+ReflTermType. Term8 ::= "refl_{" Term ":" Term "}" ;+IdJ. Term8 ::= "idJ" "(" Term "," Term "," Term "," Term "," Term "," Term ")" ;+-- A bare modality after `match` belongs to the modal form. The ordinary form+-- takes an atom; a prefixed scrutinee can still be written in parentheses.+Match. Term7 ::= "match" Term8 "(" [MatchBranch] ")" ;+MatchInto. Term7 ::= "match" Term8 "into" Term8 "(" [MatchBranch] ")" ;+MatchModal. Term7 ::= "match" Modality Term8 "(" [MatchBranch] ")" ;+MatchModalInto. Term7 ::= "match" Modality Term8 "into" Term8 "(" [MatchBranch] ")" ; -- Variables and holes-Hole. Term7 ::= HoleIdent;-Var. Term7 ::= VarIdent ;+Hole. Term8 ::= HoleIdent;+Var. Term8 ::= VarIdent ; -- Miscellaneous TypeAsc. Term ::= Term2 "as" Term1 ; separator nonempty Term "," ;-coercions Term 7 ;+coercions Term 8 ; -- ASCII version of some rules above @@ -239,15 +243,15 @@ ascii_CubeInf. Term6 ::= "inf" Term7 Term7 ; define ascii_CubeInf l r = CubeInf l r ; -ASCII_CubeUnitStar. Term7 ::= "*_1" ;-ASCII_Cube2_0. Term7 ::= "0_2" ;-ASCII_Cube2_1. Term7 ::= "1_2" ;-ASCII_CubeI. Term7 ::= "II" ;-ASCII_CubeI_0. Term7 ::= "0_I" ;-ASCII_CubeI_1. Term7 ::= "1_I" ;+ASCII_CubeUnitStar. Term8 ::= "*_1" ;+ASCII_Cube2_0. Term8 ::= "0_2" ;+ASCII_Cube2_1. Term8 ::= "1_2" ;+ASCII_CubeI. Term8 ::= "II" ;+ASCII_CubeI_0. Term8 ::= "0_I" ;+ASCII_CubeI_1. Term8 ::= "1_I" ; -ASCII_TopeTop. Term7 ::= "TOP" ;-ASCII_TopeBottom. Term7 ::= "BOT" ;+ASCII_TopeTop. Term8 ::= "TOP" ;+ASCII_TopeBottom. Term8 ::= "BOT" ; ASCII_TopeEQ. Term4 ::= Term5 "===" Term5 ; ASCII_TopeLEQ. Term4 ::= Term5 "<=" Term5 ; ASCII_TopeAnd. Term3 ::= Term4 "/\\" Term3 ;
rzk.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: rzk-version: 0.11.3+version: 0.11.4 synopsis: An experimental proof assistant for synthetic ∞-categories description: Please see the README on GitHub at <https://github.com/rzk-lang/rzk#readme> category: Dependent Types@@ -33,14 +33,22 @@ test/typecheck/cases/happy-data-interval-funext.rzk test/typecheck/cases/happy-data-large-warning.rzk test/typecheck/cases/happy-data-list.rzk+ test/typecheck/cases/happy-data-modal-kind-param.rzk+ test/typecheck/cases/happy-data-modal-shape-field.rzk test/typecheck/cases/happy-data-nat.rzk+ test/typecheck/cases/happy-data-path-shape-field.rzk test/typecheck/cases/happy-data-prop-trunc.rzk test/typecheck/cases/happy-data-pushout.rzk test/typecheck/cases/happy-data-rec-section.rzk test/typecheck/cases/happy-data-section.rzk+ test/typecheck/cases/happy-data-shape-realisation.rzk+ test/typecheck/cases/happy-data-shape-tope.rzk+ test/typecheck/cases/happy-data-tope-param.rzk test/typecheck/cases/happy-data-vec.rzk+ test/typecheck/cases/happy-ext-style-restrictions.rzk test/typecheck/cases/happy-flip-unflip.rzk test/typecheck/cases/happy-interval-basics.rzk+ test/typecheck/cases/happy-interval-endpoint-entailment.rzk test/typecheck/cases/happy-interval-subtyping.rzk test/typecheck/cases/happy-issue-9-relfunext2-id.rzk test/typecheck/cases/happy-lattice-eq-gives-leq.rzk@@ -49,6 +57,7 @@ test/typecheck/cases/happy-match-basics.rzk test/typecheck/cases/happy-match-case-vec.rzk test/typecheck/cases/happy-match-indexed.rzk+ test/typecheck/cases/happy-match-modal.rzk test/typecheck/cases/happy-meta-prefix-option-off.rzk test/typecheck/cases/happy-meta-prefix-plumbing.rzk test/typecheck/cases/happy-modal-basics.rzk@@ -56,9 +65,12 @@ test/typecheck/cases/happy-modal-flat-recOR-under-op.rzk test/typecheck/cases/happy-modal-flat-under-op.rzk test/typecheck/cases/happy-modal-inv.rzk+ test/typecheck/cases/happy-modal-let-dependent-payload.rzk test/typecheck/cases/happy-modal-let-into.rzk+ test/typecheck/cases/happy-modal-let-restricted.rzk test/typecheck/cases/happy-modal-tope-unwrap.rzk test/typecheck/cases/happy-modal-topes.rzk+ test/typecheck/cases/happy-modal-uninv-shape-restricted.rzk test/typecheck/cases/happy-multivar-binder.rzk test/typecheck/cases/happy-nbe-church-conversion.rzk test/typecheck/cases/happy-nbe-transport-refl-spine.rzk@@ -69,17 +81,34 @@ test/typecheck/cases/happy-recor-split-simplex-overhang.rzk test/typecheck/cases/happy-refl-path.rzk test/typecheck/cases/happy-restrict-face-not-contained.rzk+ test/typecheck/cases/happy-rstt-awareness.rzk+ test/typecheck/cases/happy-rstt-bare-tope-param.rzk+ test/typecheck/cases/happy-rstt-boundary-error.rzk+ test/typecheck/cases/happy-rstt-boundary-multicube.rzk+ test/typecheck/cases/happy-rstt-boundary-warn.rzk+ test/typecheck/cases/happy-rstt-boundary.rzk+ test/typecheck/cases/happy-rstt-independent-cubes.rzk+ test/typecheck/cases/happy-rstt-off.rzk+ test/typecheck/cases/happy-rstt-schema-parameters.rzk+ test/typecheck/cases/happy-rstt-shape-dependency-off.rzk+ test/typecheck/cases/happy-rstt-tail-nested.rzk+ test/typecheck/cases/happy-rstt-tau-flip.rzk+ test/typecheck/cases/happy-rstt-tope-terms.rzk+ test/typecheck/cases/happy-rstt-trusted-postulate.rzk test/typecheck/cases/happy-set-option-warn-overhang.rzk test/typecheck/cases/happy-shadowing-across-groups.rzk test/typecheck/cases/happy-shott-simplicial-subcomplexes.rzk test/typecheck/cases/happy-subtype-variance-pi-shape-domain.rzk test/typecheck/cases/happy-subtype-variance-restriction-faces.rzk test/typecheck/cases/happy-subtype-variance-tope-family.rzk+ test/typecheck/cases/happy-tope-assume.rzk+ test/typecheck/cases/happy-tope-family-domain-instance.rzk test/typecheck/cases/happy-tope-high-dim-cubes.rzk test/typecheck/cases/happy-tope-nested-rec-or-d4.rzk test/typecheck/cases/happy-tope-nested-rec-or-d5.rzk test/typecheck/cases/happy-tope-nested-rec-or-d6.rzk test/typecheck/cases/happy-tope-nested-rec-or.rzk+ test/typecheck/cases/happy-tope-param.rzk test/typecheck/cases/happy-tope-rec-and-restrict.rzk test/typecheck/cases/happy-tope-shapes.rzk test/typecheck/cases/ill-bare-lambda-compute.rzk@@ -88,6 +117,10 @@ test/typecheck/cases/ill-data-compute-kind.rzk test/typecheck/cases/ill-data-compute-mismatch.rzk test/typecheck/cases/ill-data-compute-unknown.rzk+ test/typecheck/cases/ill-data-cube-index.rzk+ test/typecheck/cases/ill-data-cube-param.rzk+ test/typecheck/cases/ill-data-cube-universe-field.rzk+ test/typecheck/cases/ill-data-cube-universe-index.rzk test/typecheck/cases/ill-data-duplicate-constructor.rzk test/typecheck/cases/ill-data-eliminator-duplicate.rzk test/typecheck/cases/ill-data-eliminator-mismatch.rzk@@ -95,7 +128,15 @@ test/typecheck/cases/ill-data-fun-field.rzk test/typecheck/cases/ill-data-index-mismatch.rzk test/typecheck/cases/ill-data-missing-return.rzk+ test/typecheck/cases/ill-data-modal-cube-field.rzk+ test/typecheck/cases/ill-data-modal-kind-param-lock.rzk+ test/typecheck/cases/ill-data-modal-kind-param-point.rzk+ test/typecheck/cases/ill-data-modal-shape-field-lock.rzk+ test/typecheck/cases/ill-data-modal-tope-field.rzk+ test/typecheck/cases/ill-data-modal-tope-index.rzk+ test/typecheck/cases/ill-data-modal-type-field.rzk test/typecheck/cases/ill-data-negative.rzk+ test/typecheck/cases/ill-data-no-sharp-eliminator.rzk test/typecheck/cases/ill-data-non-u-sort.rzk test/typecheck/cases/ill-data-path-endpoint.rzk test/typecheck/cases/ill-data-path-higher-field.rzk@@ -103,11 +144,18 @@ test/typecheck/cases/ill-data-path-indexed.rzk test/typecheck/cases/ill-data-path-unannotated.rzk test/typecheck/cases/ill-data-return-type.rzk- test/typecheck/cases/ill-data-shape-field.rzk+ test/typecheck/cases/ill-data-shape-index-named.rzk+ test/typecheck/cases/ill-data-shape-index.rzk+ test/typecheck/cases/ill-data-shape-param.rzk+ test/typecheck/cases/ill-data-tope-family-field.rzk+ test/typecheck/cases/ill-data-tope-family-index.rzk+ test/typecheck/cases/ill-data-tope-field.rzk+ test/typecheck/cases/ill-data-tope-index.rzk test/typecheck/cases/ill-duplicate.rzk test/typecheck/cases/ill-hole-infer.rzk test/typecheck/cases/ill-hole-pattern-binder-names.rzk test/typecheck/cases/ill-hole-recor-branch.rzk+ test/typecheck/cases/ill-hole-recor-guard-point.rzk test/typecheck/cases/ill-hole-unsolved.rzk test/typecheck/cases/ill-implicit.rzk test/typecheck/cases/ill-interval-no-totality.rzk@@ -116,6 +164,13 @@ test/typecheck/cases/ill-issue-13-flip-flip-wrong.rzk test/typecheck/cases/ill-issue-206-families-of-extension.rzk test/typecheck/cases/ill-issue-33-restriction-coherence.rzk+ test/typecheck/cases/ill-kind-app-argument-tope.rzk+ test/typecheck/cases/ill-kind-define-tope.rzk+ test/typecheck/cases/ill-kind-id-carrier-tope.rzk+ test/typecheck/cases/ill-kind-sigma-body-tope.rzk+ test/typecheck/cases/ill-kind-sigma-cube-universe.rzk+ test/typecheck/cases/ill-kind-sigma-tope-family.rzk+ test/typecheck/cases/ill-kind-sigma-tope.rzk test/typecheck/cases/ill-lattice-endpoints-distinct.rzk test/typecheck/cases/ill-lattice-eq-no-leak.rzk test/typecheck/cases/ill-lattice-non-law.rzk@@ -129,6 +184,11 @@ test/typecheck/cases/ill-match-duplicate-branch.rzk test/typecheck/cases/ill-match-missing-branch.rzk test/typecheck/cases/ill-match-missing-path-branch.rzk+ test/typecheck/cases/ill-match-modal-hit.rzk+ test/typecheck/cases/ill-match-modal-ih-remodalized.rzk+ test/typecheck/cases/ill-match-modal-inaccessible.rzk+ test/typecheck/cases/ill-match-modal-motive.rzk+ test/typecheck/cases/ill-match-modal-sharp.rzk test/typecheck/cases/ill-match-not-data.rzk test/typecheck/cases/ill-match-unknown-branch.rzk test/typecheck/cases/ill-modal-b-no-dist.rzk@@ -164,15 +224,40 @@ test/typecheck/cases/ill-repeated-binder-pair.rzk test/typecheck/cases/ill-repeated-binder-params.rzk test/typecheck/cases/ill-restrict-face-disjoint.rzk+ test/typecheck/cases/ill-rstt-auxiliary-interval.rzk+ test/typecheck/cases/ill-rstt-boundary-obligation.rzk+ test/typecheck/cases/ill-rstt-dependent-cube-family.rzk+ test/typecheck/cases/ill-rstt-dependent-cube-instance.rzk+ test/typecheck/cases/ill-rstt-dependent-cube.rzk+ test/typecheck/cases/ill-rstt-false-bottom.rzk+ test/typecheck/cases/ill-rstt-false-refl.rzk+ test/typecheck/cases/ill-rstt-inductive.rzk+ test/typecheck/cases/ill-rstt-meta-binder-in-face.rzk+ test/typecheck/cases/ill-rstt-meta-binder.rzk+ test/typecheck/cases/ill-rstt-meta-prefix.rzk+ test/typecheck/cases/ill-rstt-modal.rzk+ test/typecheck/cases/ill-rstt-option.rzk+ test/typecheck/cases/ill-rstt-packed-cube-family.rzk+ test/typecheck/cases/ill-rstt-packed-type-family.rzk+ test/typecheck/cases/ill-rstt-postulate.rzk+ test/typecheck/cases/ill-rstt-restriction-in-domain.rzk+ test/typecheck/cases/ill-rstt-restriction.rzk+ test/typecheck/cases/ill-rstt-shape-boundary.rzk+ test/typecheck/cases/ill-rstt-shape-domain.rzk+ test/typecheck/cases/ill-rstt-uncovered-endpoints.rzk+ test/typecheck/cases/ill-rstt-unsupported.rzk test/typecheck/cases/ill-section-end-mismatch.rzk test/typecheck/cases/ill-section-not-closed.rzk test/typecheck/cases/ill-section-unexpected-end.rzk test/typecheck/cases/ill-set-option-render.rzk test/typecheck/cases/ill-set-option-unknown.rzk test/typecheck/cases/ill-set-option-verbosity.rzk+ test/typecheck/cases/ill-shape-dependency-option.rzk test/typecheck/cases/ill-subtype-variance-pi-shape-domain.rzk test/typecheck/cases/ill-subtype-variance-restriction-faces.rzk test/typecheck/cases/ill-subtype-variance-tope-family.rzk+ test/typecheck/cases/ill-tope-family-domain-non-instance.rzk+ test/typecheck/cases/ill-tope-family-domain-same-domain.rzk test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.rzk test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.rzk test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.rzk@@ -182,8 +267,8 @@ test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.rzk test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.rzk test/typecheck/cases/ill-tope-not-satisfied-tope-family-subtyping.rzk- test/typecheck/cases/ill-tope-param-lambda.rzk- test/typecheck/cases/ill-tope-param-typefun.rzk+ test/typecheck/cases/ill-tope-param-entailment.rzk+ test/typecheck/cases/ill-tope-param-instance.rzk test/typecheck/cases/ill-tope-pattern-binder-bare.rzk test/typecheck/cases/ill-tope-recOR-non-discrete.rzk test/typecheck/cases/ill-tope-subtle-app-shape-5d.rzk@@ -205,10 +290,31 @@ test/typecheck/cases/multimodule-two-ok/user.rzk test/typecheck/cases/uses-whnf-discarded.rzk test/typecheck/cases/uses-whnf-masked-transitive.rzk+ test/typecheck/cases/warn-free-standing-restriction-assumed.rzk+ test/typecheck/cases/warn-free-standing-restriction-option.rzk+ test/typecheck/cases/warn-meta-binder-inside-term.rzk test/typecheck/cases/warn-meta-prefix-object-position.rzk test/typecheck/cases/warn-meta-prefix-option-structural.rzk test/typecheck/cases/warn-meta-prefix-section.rzk test/typecheck/cases/warn-meta-prefix-strict-only.rzk+ test/typecheck/cases/warn-overhang-controls.rzk+ test/typecheck/cases/warn-rstt-bare-tope-binder-in-term.rzk+ test/typecheck/cases/warn-rstt-bare-tope-object-point.rzk+ test/typecheck/cases/warn-rstt-default.rzk+ test/typecheck/cases/warn-rstt-escape-beta.rzk+ test/typecheck/cases/warn-rstt-escape-iota.rzk+ test/typecheck/cases/warn-rstt-escape-let.rzk+ test/typecheck/cases/warn-rstt-escape-pair.rzk+ test/typecheck/cases/warn-rstt-escape-section.rzk+ test/typecheck/cases/warn-rstt-escape-tope-family.rzk+ test/typecheck/cases/warn-rstt-escape-unfolding.rzk+ test/typecheck/cases/warn-rstt-inductive.rzk+ test/typecheck/cases/warn-rstt-modal.rzk+ test/typecheck/cases/warn-rstt-reset.rzk+ test/typecheck/cases/warn-rstt-shape-dependency.rzk+ test/typecheck/cases/warn-rstt-warn-overrides-standalone.rzk+ test/typecheck/cases/warn-tope-family-domain-non-instance.rzk+ test/typecheck/cases/warn-tope-family-domain-option.rzk test/typecheck/cases/happy-check.expect.yaml test/typecheck/cases/happy-data-bool.expect.yaml test/typecheck/cases/happy-data-circle.expect.yaml@@ -222,14 +328,22 @@ test/typecheck/cases/happy-data-interval-funext.expect.yaml test/typecheck/cases/happy-data-large-warning.expect.yaml test/typecheck/cases/happy-data-list.expect.yaml+ test/typecheck/cases/happy-data-modal-kind-param.expect.yaml+ test/typecheck/cases/happy-data-modal-shape-field.expect.yaml test/typecheck/cases/happy-data-nat.expect.yaml+ test/typecheck/cases/happy-data-path-shape-field.expect.yaml test/typecheck/cases/happy-data-prop-trunc.expect.yaml test/typecheck/cases/happy-data-pushout.expect.yaml test/typecheck/cases/happy-data-rec-section.expect.yaml test/typecheck/cases/happy-data-section.expect.yaml+ test/typecheck/cases/happy-data-shape-realisation.expect.yaml+ test/typecheck/cases/happy-data-shape-tope.expect.yaml+ test/typecheck/cases/happy-data-tope-param.expect.yaml test/typecheck/cases/happy-data-vec.expect.yaml+ test/typecheck/cases/happy-ext-style-restrictions.expect.yaml test/typecheck/cases/happy-flip-unflip.expect.yaml test/typecheck/cases/happy-interval-basics.expect.yaml+ test/typecheck/cases/happy-interval-endpoint-entailment.expect.yaml test/typecheck/cases/happy-interval-subtyping.expect.yaml test/typecheck/cases/happy-issue-9-relfunext2-id.expect.yaml test/typecheck/cases/happy-lattice-eq-gives-leq.expect.yaml@@ -238,6 +352,7 @@ test/typecheck/cases/happy-match-basics.expect.yaml test/typecheck/cases/happy-match-case-vec.expect.yaml test/typecheck/cases/happy-match-indexed.expect.yaml+ test/typecheck/cases/happy-match-modal.expect.yaml test/typecheck/cases/happy-meta-prefix-option-off.expect.yaml test/typecheck/cases/happy-meta-prefix-plumbing.expect.yaml test/typecheck/cases/happy-modal-basics.expect.yaml@@ -245,9 +360,12 @@ test/typecheck/cases/happy-modal-flat-recOR-under-op.expect.yaml test/typecheck/cases/happy-modal-flat-under-op.expect.yaml test/typecheck/cases/happy-modal-inv.expect.yaml+ test/typecheck/cases/happy-modal-let-dependent-payload.expect.yaml test/typecheck/cases/happy-modal-let-into.expect.yaml+ test/typecheck/cases/happy-modal-let-restricted.expect.yaml test/typecheck/cases/happy-modal-tope-unwrap.expect.yaml test/typecheck/cases/happy-modal-topes.expect.yaml+ test/typecheck/cases/happy-modal-uninv-shape-restricted.expect.yaml test/typecheck/cases/happy-multivar-binder.expect.yaml test/typecheck/cases/happy-nbe-church-conversion.expect.yaml test/typecheck/cases/happy-nbe-transport-refl-spine.expect.yaml@@ -258,17 +376,34 @@ test/typecheck/cases/happy-recor-split-simplex-overhang.expect.yaml test/typecheck/cases/happy-refl-path.expect.yaml test/typecheck/cases/happy-restrict-face-not-contained.expect.yaml+ test/typecheck/cases/happy-rstt-awareness.expect.yaml+ test/typecheck/cases/happy-rstt-bare-tope-param.expect.yaml+ test/typecheck/cases/happy-rstt-boundary-error.expect.yaml+ test/typecheck/cases/happy-rstt-boundary-multicube.expect.yaml+ test/typecheck/cases/happy-rstt-boundary-warn.expect.yaml+ test/typecheck/cases/happy-rstt-boundary.expect.yaml+ test/typecheck/cases/happy-rstt-independent-cubes.expect.yaml+ test/typecheck/cases/happy-rstt-off.expect.yaml+ test/typecheck/cases/happy-rstt-schema-parameters.expect.yaml+ test/typecheck/cases/happy-rstt-shape-dependency-off.expect.yaml+ test/typecheck/cases/happy-rstt-tail-nested.expect.yaml+ test/typecheck/cases/happy-rstt-tau-flip.expect.yaml+ test/typecheck/cases/happy-rstt-tope-terms.expect.yaml+ test/typecheck/cases/happy-rstt-trusted-postulate.expect.yaml test/typecheck/cases/happy-set-option-warn-overhang.expect.yaml test/typecheck/cases/happy-shadowing-across-groups.expect.yaml test/typecheck/cases/happy-shott-simplicial-subcomplexes.expect.yaml test/typecheck/cases/happy-subtype-variance-pi-shape-domain.expect.yaml test/typecheck/cases/happy-subtype-variance-restriction-faces.expect.yaml test/typecheck/cases/happy-subtype-variance-tope-family.expect.yaml+ test/typecheck/cases/happy-tope-assume.expect.yaml+ test/typecheck/cases/happy-tope-family-domain-instance.expect.yaml test/typecheck/cases/happy-tope-high-dim-cubes.expect.yaml test/typecheck/cases/happy-tope-nested-rec-or-d4.expect.yaml test/typecheck/cases/happy-tope-nested-rec-or-d5.expect.yaml test/typecheck/cases/happy-tope-nested-rec-or-d6.expect.yaml test/typecheck/cases/happy-tope-nested-rec-or.expect.yaml+ test/typecheck/cases/happy-tope-param.expect.yaml test/typecheck/cases/happy-tope-rec-and-restrict.expect.yaml test/typecheck/cases/happy-tope-shapes.expect.yaml test/typecheck/cases/ill-bare-lambda-compute.expect.yaml@@ -277,6 +412,10 @@ test/typecheck/cases/ill-data-compute-kind.expect.yaml test/typecheck/cases/ill-data-compute-mismatch.expect.yaml test/typecheck/cases/ill-data-compute-unknown.expect.yaml+ test/typecheck/cases/ill-data-cube-index.expect.yaml+ test/typecheck/cases/ill-data-cube-param.expect.yaml+ test/typecheck/cases/ill-data-cube-universe-field.expect.yaml+ test/typecheck/cases/ill-data-cube-universe-index.expect.yaml test/typecheck/cases/ill-data-duplicate-constructor.expect.yaml test/typecheck/cases/ill-data-eliminator-duplicate.expect.yaml test/typecheck/cases/ill-data-eliminator-mismatch.expect.yaml@@ -284,7 +423,15 @@ test/typecheck/cases/ill-data-fun-field.expect.yaml test/typecheck/cases/ill-data-index-mismatch.expect.yaml test/typecheck/cases/ill-data-missing-return.expect.yaml+ test/typecheck/cases/ill-data-modal-cube-field.expect.yaml+ test/typecheck/cases/ill-data-modal-kind-param-lock.expect.yaml+ test/typecheck/cases/ill-data-modal-kind-param-point.expect.yaml+ test/typecheck/cases/ill-data-modal-shape-field-lock.expect.yaml+ test/typecheck/cases/ill-data-modal-tope-field.expect.yaml+ test/typecheck/cases/ill-data-modal-tope-index.expect.yaml+ test/typecheck/cases/ill-data-modal-type-field.expect.yaml test/typecheck/cases/ill-data-negative.expect.yaml+ test/typecheck/cases/ill-data-no-sharp-eliminator.expect.yaml test/typecheck/cases/ill-data-non-u-sort.expect.yaml test/typecheck/cases/ill-data-path-endpoint.expect.yaml test/typecheck/cases/ill-data-path-higher-field.expect.yaml@@ -292,11 +439,18 @@ test/typecheck/cases/ill-data-path-indexed.expect.yaml test/typecheck/cases/ill-data-path-unannotated.expect.yaml test/typecheck/cases/ill-data-return-type.expect.yaml- test/typecheck/cases/ill-data-shape-field.expect.yaml+ test/typecheck/cases/ill-data-shape-index-named.expect.yaml+ test/typecheck/cases/ill-data-shape-index.expect.yaml+ test/typecheck/cases/ill-data-shape-param.expect.yaml+ test/typecheck/cases/ill-data-tope-family-field.expect.yaml+ test/typecheck/cases/ill-data-tope-family-index.expect.yaml+ test/typecheck/cases/ill-data-tope-field.expect.yaml+ test/typecheck/cases/ill-data-tope-index.expect.yaml test/typecheck/cases/ill-duplicate.expect.yaml test/typecheck/cases/ill-hole-infer.expect.yaml test/typecheck/cases/ill-hole-pattern-binder-names.expect.yaml test/typecheck/cases/ill-hole-recor-branch.expect.yaml+ test/typecheck/cases/ill-hole-recor-guard-point.expect.yaml test/typecheck/cases/ill-hole-unsolved.expect.yaml test/typecheck/cases/ill-implicit.expect.yaml test/typecheck/cases/ill-interval-no-totality.expect.yaml@@ -305,6 +459,13 @@ test/typecheck/cases/ill-issue-13-flip-flip-wrong.expect.yaml test/typecheck/cases/ill-issue-206-families-of-extension.expect.yaml test/typecheck/cases/ill-issue-33-restriction-coherence.expect.yaml+ test/typecheck/cases/ill-kind-app-argument-tope.expect.yaml+ test/typecheck/cases/ill-kind-define-tope.expect.yaml+ test/typecheck/cases/ill-kind-id-carrier-tope.expect.yaml+ test/typecheck/cases/ill-kind-sigma-body-tope.expect.yaml+ test/typecheck/cases/ill-kind-sigma-cube-universe.expect.yaml+ test/typecheck/cases/ill-kind-sigma-tope-family.expect.yaml+ test/typecheck/cases/ill-kind-sigma-tope.expect.yaml test/typecheck/cases/ill-lattice-endpoints-distinct.expect.yaml test/typecheck/cases/ill-lattice-eq-no-leak.expect.yaml test/typecheck/cases/ill-lattice-non-law.expect.yaml@@ -318,6 +479,11 @@ test/typecheck/cases/ill-match-duplicate-branch.expect.yaml test/typecheck/cases/ill-match-missing-branch.expect.yaml test/typecheck/cases/ill-match-missing-path-branch.expect.yaml+ test/typecheck/cases/ill-match-modal-hit.expect.yaml+ test/typecheck/cases/ill-match-modal-ih-remodalized.expect.yaml+ test/typecheck/cases/ill-match-modal-inaccessible.expect.yaml+ test/typecheck/cases/ill-match-modal-motive.expect.yaml+ test/typecheck/cases/ill-match-modal-sharp.expect.yaml test/typecheck/cases/ill-match-not-data.expect.yaml test/typecheck/cases/ill-match-unknown-branch.expect.yaml test/typecheck/cases/ill-modal-b-no-dist.expect.yaml@@ -353,15 +519,40 @@ test/typecheck/cases/ill-repeated-binder-pair.expect.yaml test/typecheck/cases/ill-repeated-binder-params.expect.yaml test/typecheck/cases/ill-restrict-face-disjoint.expect.yaml+ test/typecheck/cases/ill-rstt-auxiliary-interval.expect.yaml+ test/typecheck/cases/ill-rstt-boundary-obligation.expect.yaml+ test/typecheck/cases/ill-rstt-dependent-cube-family.expect.yaml+ test/typecheck/cases/ill-rstt-dependent-cube-instance.expect.yaml+ test/typecheck/cases/ill-rstt-dependent-cube.expect.yaml+ test/typecheck/cases/ill-rstt-false-bottom.expect.yaml+ test/typecheck/cases/ill-rstt-false-refl.expect.yaml+ test/typecheck/cases/ill-rstt-inductive.expect.yaml+ test/typecheck/cases/ill-rstt-meta-binder-in-face.expect.yaml+ test/typecheck/cases/ill-rstt-meta-binder.expect.yaml+ test/typecheck/cases/ill-rstt-meta-prefix.expect.yaml+ test/typecheck/cases/ill-rstt-modal.expect.yaml+ test/typecheck/cases/ill-rstt-option.expect.yaml+ test/typecheck/cases/ill-rstt-packed-cube-family.expect.yaml+ test/typecheck/cases/ill-rstt-packed-type-family.expect.yaml+ test/typecheck/cases/ill-rstt-postulate.expect.yaml+ test/typecheck/cases/ill-rstt-restriction-in-domain.expect.yaml+ test/typecheck/cases/ill-rstt-restriction.expect.yaml+ test/typecheck/cases/ill-rstt-shape-boundary.expect.yaml+ test/typecheck/cases/ill-rstt-shape-domain.expect.yaml+ test/typecheck/cases/ill-rstt-uncovered-endpoints.expect.yaml+ test/typecheck/cases/ill-rstt-unsupported.expect.yaml test/typecheck/cases/ill-section-end-mismatch.expect.yaml test/typecheck/cases/ill-section-not-closed.expect.yaml test/typecheck/cases/ill-section-unexpected-end.expect.yaml test/typecheck/cases/ill-set-option-render.expect.yaml test/typecheck/cases/ill-set-option-unknown.expect.yaml test/typecheck/cases/ill-set-option-verbosity.expect.yaml+ test/typecheck/cases/ill-shape-dependency-option.expect.yaml test/typecheck/cases/ill-subtype-variance-pi-shape-domain.expect.yaml test/typecheck/cases/ill-subtype-variance-restriction-faces.expect.yaml test/typecheck/cases/ill-subtype-variance-tope-family.expect.yaml+ test/typecheck/cases/ill-tope-family-domain-non-instance.expect.yaml+ test/typecheck/cases/ill-tope-family-domain-same-domain.expect.yaml test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d4.expect.yaml test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d5.expect.yaml test/typecheck/cases/ill-tope-nested-rec-or-inner-singleton-d6.expect.yaml@@ -371,8 +562,8 @@ test/typecheck/cases/ill-tope-not-satisfied-rec-or-boundary-equiv.expect.yaml test/typecheck/cases/ill-tope-not-satisfied-rec-or-open-singleton.expect.yaml test/typecheck/cases/ill-tope-not-satisfied-tope-family-subtyping.expect.yaml- test/typecheck/cases/ill-tope-param-lambda.expect.yaml- test/typecheck/cases/ill-tope-param-typefun.expect.yaml+ test/typecheck/cases/ill-tope-param-entailment.expect.yaml+ test/typecheck/cases/ill-tope-param-instance.expect.yaml test/typecheck/cases/ill-tope-pattern-binder-bare.expect.yaml test/typecheck/cases/ill-tope-recOR-non-discrete.expect.yaml test/typecheck/cases/ill-tope-subtle-app-shape-5d.expect.yaml@@ -390,10 +581,31 @@ test/typecheck/cases/ill-unused-assumption.expect.yaml test/typecheck/cases/uses-whnf-discarded.expect.yaml test/typecheck/cases/uses-whnf-masked-transitive.expect.yaml+ test/typecheck/cases/warn-free-standing-restriction-assumed.expect.yaml+ test/typecheck/cases/warn-free-standing-restriction-option.expect.yaml+ test/typecheck/cases/warn-meta-binder-inside-term.expect.yaml test/typecheck/cases/warn-meta-prefix-object-position.expect.yaml test/typecheck/cases/warn-meta-prefix-option-structural.expect.yaml test/typecheck/cases/warn-meta-prefix-section.expect.yaml test/typecheck/cases/warn-meta-prefix-strict-only.expect.yaml+ test/typecheck/cases/warn-overhang-controls.expect.yaml+ test/typecheck/cases/warn-rstt-bare-tope-binder-in-term.expect.yaml+ test/typecheck/cases/warn-rstt-bare-tope-object-point.expect.yaml+ test/typecheck/cases/warn-rstt-default.expect.yaml+ test/typecheck/cases/warn-rstt-escape-beta.expect.yaml+ test/typecheck/cases/warn-rstt-escape-iota.expect.yaml+ test/typecheck/cases/warn-rstt-escape-let.expect.yaml+ test/typecheck/cases/warn-rstt-escape-pair.expect.yaml+ test/typecheck/cases/warn-rstt-escape-section.expect.yaml+ test/typecheck/cases/warn-rstt-escape-tope-family.expect.yaml+ test/typecheck/cases/warn-rstt-escape-unfolding.expect.yaml+ test/typecheck/cases/warn-rstt-inductive.expect.yaml+ test/typecheck/cases/warn-rstt-modal.expect.yaml+ test/typecheck/cases/warn-rstt-reset.expect.yaml+ test/typecheck/cases/warn-rstt-shape-dependency.expect.yaml+ test/typecheck/cases/warn-rstt-warn-overrides-standalone.expect.yaml+ test/typecheck/cases/warn-tope-family-domain-non-instance.expect.yaml+ test/typecheck/cases/warn-tope-family-domain-option.expect.yaml test/typecheck/cases/literate-fence/expect.yaml test/typecheck/cases/multimodule-first-error/expect.yaml test/typecheck/cases/multimodule-two-ok/expect.yaml@@ -437,11 +649,13 @@ Rzk.TypeCheck.Display Rzk.TypeCheck.Error Rzk.TypeCheck.Eval+ Rzk.TypeCheck.Fragment.RSTT Rzk.TypeCheck.Judgements Rzk.TypeCheck.MetaPrefix Rzk.TypeCheck.Monad Rzk.TypeCheck.NbE Rzk.TypeCheck.Render+ Rzk.TypeCheck.Schematic Rzk.TypeCheck.Unify Rzk.Version other-modules:@@ -462,7 +676,7 @@ , bytestring >=0.10.8.2 && <1 , containers >=0.6 && <1 , directory >=1.2.7.0 && <2- , free-foil ==0.4.*+ , free-foil ==0.6.* , gitrev >=1.3.1 && <2 , kind-generics >=0.5 && <1 , kind-generics-th >=0.2 && <1@@ -516,7 +730,7 @@ , bytestring >=0.10.8.2 && <1 , containers >=0.6 && <1 , directory >=1.2.7.0 && <2- , free-foil ==0.4.*+ , free-foil ==0.6.* , gitrev >=1.3.1 && <2 , kind-generics >=0.5 && <1 , kind-generics-th >=0.2 && <1@@ -553,7 +767,7 @@ , containers >=0.6 && <1 , directory >=1.2.7.0 && <2 , doctest-parallel >=0.3 && <1- , free-foil ==0.4.*+ , free-foil ==0.6.* , gitrev >=1.3.1 && <2 , kind-generics >=0.5 && <1 , kind-generics-th >=0.2 && <1@@ -579,6 +793,8 @@ Rzk.ParserSpec Rzk.PositionEncodingSpec Rzk.RefIndexSpec+ Rzk.RSTTSafeSpec+ Rzk.SchematicSpec Rzk.SemanticTokensSpec Rzk.TypeCheckSpec Rzk.VersionSpec@@ -602,7 +818,7 @@ , containers >=0.6 && <1 , directory >=1.2.7.0 && <2 , filepath >=1.4 && <2- , free-foil ==0.4.*+ , free-foil ==0.6.* , gitrev >=1.3.1 && <2 , hspec >=2.7 && <3 , hspec-discover >=2.7 && <3
src/Language/Rzk/Foil/Convert.hs view
@@ -199,9 +199,13 @@ Rzk.ReflTermType _loc x tA -> Refl (Just (go x, Just (go tA))) Rzk.IdJ _loc a b c d e f -> IdJ (go a) (go b) (go c) (go d) (go e) (go f) Rzk.Match _loc scrut branches ->- Match (go scrut) Nothing (map matchBranch branches)+ Match Id (go scrut) Nothing (map matchBranch branches) Rzk.MatchInto _loc scrut motive branches ->- Match (go scrut) (Just (go motive)) (map matchBranch branches)+ Match Id (go scrut) (Just (go motive)) (map matchBranch branches)+ Rzk.MatchModal _loc md scrut branches ->+ Match (Free.toModality md) (go scrut) Nothing (map matchBranch branches)+ Rzk.MatchModalInto _loc md scrut motive branches ->+ Match (Free.toModality md) (go scrut) (Just (go motive)) (map matchBranch branches) Rzk.TypeAsc _loc x t -> TypeAsc (go x) (go t) -- A binder may name several variables sharing a type, e.g. @(x y : A)@,
src/Language/Rzk/Foil/Print.hs view
@@ -194,10 +194,12 @@ go (Refl (Just (t, Just ty))) = Rzk.ReflTermType loc (go t) (go ty) go (IdJ a b c d e f) = Rzk.IdJ loc (go a) (go b) (go c) (go d) (go e) (go f) - go (Match scrut mmotive branches) =- case mmotive of- Nothing -> Rzk.Match loc (go scrut) (map goBranch branches)- Just motive -> Rzk.MatchInto loc (go scrut) (go motive) (map goBranch branches)+ go (Match md scrut mmotive branches) =+ case (md, mmotive) of+ (Id, Nothing) -> Rzk.Match loc (go scrut) (map goBranch branches)+ (Id, Just motive) -> Rzk.MatchInto loc (go scrut) (go motive) (map goBranch branches)+ (_, Nothing) -> Rzk.MatchModal loc (goMod md) (go scrut) (map goBranch branches)+ (_, Just motive) -> Rzk.MatchModalInto loc (goMod md) (go scrut) (go motive) (map goBranch branches) where goBranch (con, chain) = Rzk.MatchBranch loc (fromVarIdent con) pats body where (pats, body) = matchArms used supply names chain
src/Language/Rzk/Foil/Syntax.hs view
@@ -45,6 +45,7 @@ alphaEquiv, substitute, unsafeEqAST) import Data.ZipMatchK (Mappings (..),+ ZipMatchFoldK, ZipMatchK (..), zipMatchViaChooseLeft, zipMatchViaEq)@@ -120,7 +121,7 @@ -- branch per constructor (constructor name, arm chain). The node is -- elaborated into the generated eliminator during typechecking, so a -- /typed/ match never exists.- | MatchF term (Maybe term) [(VarIdent, term)]+ | MatchF TModality term (Maybe term) [(VarIdent, term)] -- | One branch binder of a match; the body is the next arm, or the branch -- body once the binders run out. Valid only inside a 'MatchF' branch; the -- parser cannot produce it anywhere else.@@ -169,6 +170,7 @@ zipMatchWithK = zipMatchViaEq instance ZipMatchK LambdaParam+instance ZipMatchFoldK LambdaParam -- | The node matcher, TH-derived: an explicit instance, so no @Generics.Kind@ -- view is rebuilt per comparison. It drives 'Control.Monad.Free.Foil.alphaEquiv'@@ -568,7 +570,7 @@ pattern SecondT info t = Node (AnnSig info (SecondF t)) pattern ReflT info mx = Node (AnnSig info (ReflF mx)) pattern IdJT info a b c d e f = Node (AnnSig info (IdJF a b c d e f))-pattern MatchT info scrut mmotive branches = Node (AnnSig info (MatchF scrut mmotive branches))+pattern MatchT info md scrut mmotive branches = Node (AnnSig info (MatchF md scrut mmotive branches)) pattern MatchArmT info orig arm = Node (AnnSig info (MatchArmF orig arm)) pattern UnitT info = Node (AnnSig info UnitF) pattern TypeUnitT info = Node (AnnSig info TypeUnitF)@@ -641,7 +643,7 @@ pattern Second t = UntypedNode (SecondF t) pattern Refl mx = UntypedNode (ReflF mx) pattern IdJ a b c d e f = UntypedNode (IdJF a b c d e f)-pattern Match scrut mmotive branches = UntypedNode (MatchF scrut mmotive branches)+pattern Match md scrut mmotive branches = UntypedNode (MatchF md scrut mmotive branches) pattern MatchArm orig arm = UntypedNode (MatchArmF orig arm) pattern Unit = UntypedNode UnitF pattern TypeUnit = UntypedNode TypeUnitF
src/Language/Rzk/Syntax/Abs.hs view
@@ -230,6 +230,8 @@ | IdJ a (Term' a) (Term' a) (Term' a) (Term' a) (Term' a) (Term' a) | Match a (Term' a) [MatchBranch' a] | MatchInto a (Term' a) (Term' a) [MatchBranch' a]+ | MatchModal a (Modality' a) (Term' a) [MatchBranch' a]+ | MatchModalInto a (Modality' a) (Term' a) (Term' a) [MatchBranch' a] | Hole a (HoleIdent' a) | Var a (VarIdent' a) | TypeAsc a (Term' a) (Term' a)@@ -534,6 +536,8 @@ IdJ p _ _ _ _ _ _ -> p Match p _ _ -> p MatchInto p _ _ _ -> p+ MatchModal p _ _ _ -> p+ MatchModalInto p _ _ _ _ -> p Hole p _ -> p Var p _ -> p TypeAsc p _ _ -> p
src/Language/Rzk/Syntax/Par.hs view
@@ -48,3106 +48,3165 @@ , pModality , pModComp , pModalColon- , pTerm7- , pTerm5- , pTerm4- , pTerm3- , pTerm2- , pTerm6- , pTerm1- , pTerm- , pListTerm- ) where--import Prelude--import qualified Language.Rzk.Syntax.Abs-import Language.Rzk.Syntax.Lex-import qualified Data.Text-import qualified Control.Monad as Happy_Prelude-import qualified Data.Bool as Happy_Prelude-import qualified Data.Function as Happy_Prelude-import qualified Data.Int as Happy_Prelude-import qualified Data.List as Happy_Prelude-import qualified Data.Maybe as Happy_Prelude-import qualified Data.String as Happy_Prelude-import qualified Data.Tuple as Happy_Prelude-import qualified GHC.Err as Happy_Prelude-import qualified GHC.Num as Happy_Prelude-import qualified Text.Show as Happy_Prelude-import qualified Data.Array as Happy_Data_Array-import qualified Data.Bits as Bits-import qualified GHC.Exts as Happy_GHC_Exts-import Control.Applicative(Applicative(..))-import Control.Monad (ap)---- parser produced by Happy Version 2.2--newtype HappyAbsSyn = HappyAbsSyn HappyAny-#if __GLASGOW_HASKELL__ >= 607-type HappyAny = Happy_GHC_Exts.Any-#else-type HappyAny = forall a . a-#endif-newtype HappyWrap47 = HappyWrap47 ((Language.Rzk.Syntax.Abs.BNFC'Position, String))-happyIn47 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, String)) -> (HappyAbsSyn )-happyIn47 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap47 x)-{-# INLINE happyIn47 #-}-happyOut47 :: (HappyAbsSyn ) -> HappyWrap47-happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut47 #-}-newtype HappyWrap48 = HappyWrap48 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken))-happyIn48 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken)) -> (HappyAbsSyn )-happyIn48 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap48 x)-{-# INLINE happyIn48 #-}-happyOut48 :: (HappyAbsSyn ) -> HappyWrap48-happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut48 #-}-newtype HappyWrap49 = HappyWrap49 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken))-happyIn49 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken)) -> (HappyAbsSyn )-happyIn49 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap49 x)-{-# INLINE happyIn49 #-}-happyOut49 :: (HappyAbsSyn ) -> HappyWrap49-happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut49 #-}-newtype HappyWrap50 = HappyWrap50 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module))-happyIn50 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module)) -> (HappyAbsSyn )-happyIn50 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap50 x)-{-# INLINE happyIn50 #-}-happyOut50 :: (HappyAbsSyn ) -> HappyWrap50-happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut50 #-}-newtype HappyWrap51 = HappyWrap51 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent))-happyIn51 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent)) -> (HappyAbsSyn )-happyIn51 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap51 x)-{-# INLINE happyIn51 #-}-happyOut51 :: (HappyAbsSyn ) -> HappyWrap51-happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut51 #-}-newtype HappyWrap52 = HappyWrap52 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent))-happyIn52 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent)) -> (HappyAbsSyn )-happyIn52 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap52 x)-{-# INLINE happyIn52 #-}-happyOut52 :: (HappyAbsSyn ) -> HappyWrap52-happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut52 #-}-newtype HappyWrap53 = HappyWrap53 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent]))-happyIn53 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent])) -> (HappyAbsSyn )-happyIn53 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap53 x)-{-# INLINE happyIn53 #-}-happyOut53 :: (HappyAbsSyn ) -> HappyWrap53-happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut53 #-}-newtype HappyWrap54 = HappyWrap54 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl))-happyIn54 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl)) -> (HappyAbsSyn )-happyIn54 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap54 x)-{-# INLINE happyIn54 #-}-happyOut54 :: (HappyAbsSyn ) -> HappyWrap54-happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut54 #-}-newtype HappyWrap55 = HappyWrap55 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language))-happyIn55 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language)) -> (HappyAbsSyn )-happyIn55 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap55 x)-{-# INLINE happyIn55 #-}-happyOut55 :: (HappyAbsSyn ) -> HappyWrap55-happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut55 #-}-newtype HappyWrap56 = HappyWrap56 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command))-happyIn56 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command)) -> (HappyAbsSyn )-happyIn56 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap56 x)-{-# INLINE happyIn56 #-}-happyOut56 :: (HappyAbsSyn ) -> HappyWrap56-happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut56 #-}-newtype HappyWrap57 = HappyWrap57 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command]))-happyIn57 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command])) -> (HappyAbsSyn )-happyIn57 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap57 x)-{-# INLINE happyIn57 #-}-happyOut57 :: (HappyAbsSyn ) -> HappyWrap57-happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut57 #-}-newtype HappyWrap58 = HappyWrap58 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars))-happyIn58 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars)) -> (HappyAbsSyn )-happyIn58 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap58 x)-{-# INLINE happyIn58 #-}-happyOut58 :: (HappyAbsSyn ) -> HappyWrap58-happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut58 #-}-newtype HappyWrap59 = HappyWrap59 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName))-happyIn59 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName)) -> (HappyAbsSyn )-happyIn59 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap59 x)-{-# INLINE happyIn59 #-}-happyOut59 :: (HappyAbsSyn ) -> HappyWrap59-happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut59 #-}-newtype HappyWrap60 = HappyWrap60 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataSort))-happyIn60 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataSort)) -> (HappyAbsSyn )-happyIn60 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap60 x)-{-# INLINE happyIn60 #-}-happyOut60 :: (HappyAbsSyn ) -> HappyWrap60-happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut60 #-}-newtype HappyWrap61 = HappyWrap61 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataBody))-happyIn61 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataBody)) -> (HappyAbsSyn )-happyIn61 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap61 x)-{-# INLINE happyIn61 #-}-happyOut61 :: (HappyAbsSyn ) -> HappyWrap61-happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut61 #-}-newtype HappyWrap62 = HappyWrap62 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Constructor))-happyIn62 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Constructor)) -> (HappyAbsSyn )-happyIn62 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap62 x)-{-# INLINE happyIn62 #-}-happyOut62 :: (HappyAbsSyn ) -> HappyWrap62-happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut62 #-}-newtype HappyWrap63 = HappyWrap63 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Constructor]))-happyIn63 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Constructor])) -> (HappyAbsSyn )-happyIn63 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap63 x)-{-# INLINE happyIn63 #-}-happyOut63 :: (HappyAbsSyn ) -> HappyWrap63-happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut63 #-}-newtype HappyWrap64 = HappyWrap64 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ConstructorType))-happyIn64 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ConstructorType)) -> (HappyAbsSyn )-happyIn64 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap64 x)-{-# INLINE happyIn64 #-}-happyOut64 :: (HappyAbsSyn ) -> HappyWrap64-happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut64 #-}-newtype HappyWrap65 = HappyWrap65 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataElim))-happyIn65 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataElim)) -> (HappyAbsSyn )-happyIn65 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap65 x)-{-# INLINE happyIn65 #-}-happyOut65 :: (HappyAbsSyn ) -> HappyWrap65-happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut65 #-}-newtype HappyWrap66 = HappyWrap66 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.DataElim]))-happyIn66 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.DataElim])) -> (HappyAbsSyn )-happyIn66 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap66 x)-{-# INLINE happyIn66 #-}-happyOut66 :: (HappyAbsSyn ) -> HappyWrap66-happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut66 #-}-newtype HappyWrap67 = HappyWrap67 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.MatchBranch))-happyIn67 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.MatchBranch)) -> (HappyAbsSyn )-happyIn67 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap67 x)-{-# INLINE happyIn67 #-}-happyOut67 :: (HappyAbsSyn ) -> HappyWrap67-happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut67 #-}-newtype HappyWrap68 = HappyWrap68 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.MatchBranch]))-happyIn68 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.MatchBranch])) -> (HappyAbsSyn )-happyIn68 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap68 x)-{-# INLINE happyIn68 #-}-happyOut68 :: (HappyAbsSyn ) -> HappyWrap68-happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut68 #-}-newtype HappyWrap69 = HappyWrap69 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))-happyIn69 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )-happyIn69 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap69 x)-{-# INLINE happyIn69 #-}-happyOut69 :: (HappyAbsSyn ) -> HappyWrap69-happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut69 #-}-newtype HappyWrap70 = HappyWrap70 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))-happyIn70 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )-happyIn70 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap70 x)-{-# INLINE happyIn70 #-}-happyOut70 :: (HappyAbsSyn ) -> HappyWrap70-happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut70 #-}-newtype HappyWrap71 = HappyWrap71 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))-happyIn71 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )-happyIn71 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap71 x)-{-# INLINE happyIn71 #-}-happyOut71 :: (HappyAbsSyn ) -> HappyWrap71-happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut71 #-}-newtype HappyWrap72 = HappyWrap72 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))-happyIn72 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )-happyIn72 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap72 x)-{-# INLINE happyIn72 #-}-happyOut72 :: (HappyAbsSyn ) -> HappyWrap72-happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut72 #-}-newtype HappyWrap73 = HappyWrap73 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param))-happyIn73 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param)) -> (HappyAbsSyn )-happyIn73 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap73 x)-{-# INLINE happyIn73 #-}-happyOut73 :: (HappyAbsSyn ) -> HappyWrap73-happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut73 #-}-newtype HappyWrap74 = HappyWrap74 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param]))-happyIn74 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param])) -> (HappyAbsSyn )-happyIn74 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap74 x)-{-# INLINE happyIn74 #-}-happyOut74 :: (HappyAbsSyn ) -> HappyWrap74-happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut74 #-}-newtype HappyWrap75 = HappyWrap75 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind))-happyIn75 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind)) -> (HappyAbsSyn )-happyIn75 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap75 x)-{-# INLINE happyIn75 #-}-happyOut75 :: (HappyAbsSyn ) -> HappyWrap75-happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut75 #-}-newtype HappyWrap76 = HappyWrap76 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl))-happyIn76 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl)) -> (HappyAbsSyn )-happyIn76 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap76 x)-{-# INLINE happyIn76 #-}-happyOut76 :: (HappyAbsSyn ) -> HappyWrap76-happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut76 #-}-newtype HappyWrap77 = HappyWrap77 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam))-happyIn77 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam)) -> (HappyAbsSyn )-happyIn77 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap77 x)-{-# INLINE happyIn77 #-}-happyOut77 :: (HappyAbsSyn ) -> HappyWrap77-happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut77 #-}-newtype HappyWrap78 = HappyWrap78 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam]))-happyIn78 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam])) -> (HappyAbsSyn )-happyIn78 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap78 x)-{-# INLINE happyIn78 #-}-happyOut78 :: (HappyAbsSyn ) -> HappyWrap78-happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut78 #-}-newtype HappyWrap79 = HappyWrap79 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction))-happyIn79 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction)) -> (HappyAbsSyn )-happyIn79 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap79 x)-{-# INLINE happyIn79 #-}-happyOut79 :: (HappyAbsSyn ) -> HappyWrap79-happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut79 #-}-newtype HappyWrap80 = HappyWrap80 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction]))-happyIn80 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction])) -> (HappyAbsSyn )-happyIn80 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap80 x)-{-# INLINE happyIn80 #-}-happyOut80 :: (HappyAbsSyn ) -> HappyWrap80-happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut80 #-}-newtype HappyWrap81 = HappyWrap81 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality))-happyIn81 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality)) -> (HappyAbsSyn )-happyIn81 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap81 x)-{-# INLINE happyIn81 #-}-happyOut81 :: (HappyAbsSyn ) -> HappyWrap81-happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut81 #-}-newtype HappyWrap82 = HappyWrap82 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp))-happyIn82 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp)) -> (HappyAbsSyn )-happyIn82 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap82 x)-{-# INLINE happyIn82 #-}-happyOut82 :: (HappyAbsSyn ) -> HappyWrap82-happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut82 #-}-newtype HappyWrap83 = HappyWrap83 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModalColon))-happyIn83 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModalColon)) -> (HappyAbsSyn )-happyIn83 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap83 x)-{-# INLINE happyIn83 #-}-happyOut83 :: (HappyAbsSyn ) -> HappyWrap83-happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut83 #-}-newtype HappyWrap84 = HappyWrap84 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn84 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn84 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap84 x)-{-# INLINE happyIn84 #-}-happyOut84 :: (HappyAbsSyn ) -> HappyWrap84-happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut84 #-}-newtype HappyWrap85 = HappyWrap85 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn85 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn85 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap85 x)-{-# INLINE happyIn85 #-}-happyOut85 :: (HappyAbsSyn ) -> HappyWrap85-happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut85 #-}-newtype HappyWrap86 = HappyWrap86 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn86 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn86 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap86 x)-{-# INLINE happyIn86 #-}-happyOut86 :: (HappyAbsSyn ) -> HappyWrap86-happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut86 #-}-newtype HappyWrap87 = HappyWrap87 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn87 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn87 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap87 x)-{-# INLINE happyIn87 #-}-happyOut87 :: (HappyAbsSyn ) -> HappyWrap87-happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut87 #-}-newtype HappyWrap88 = HappyWrap88 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn88 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn88 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap88 x)-{-# INLINE happyIn88 #-}-happyOut88 :: (HappyAbsSyn ) -> HappyWrap88-happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut88 #-}-newtype HappyWrap89 = HappyWrap89 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn89 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn89 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap89 x)-{-# INLINE happyIn89 #-}-happyOut89 :: (HappyAbsSyn ) -> HappyWrap89-happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut89 #-}-newtype HappyWrap90 = HappyWrap90 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn90 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn90 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap90 x)-{-# INLINE happyIn90 #-}-happyOut90 :: (HappyAbsSyn ) -> HappyWrap90-happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut90 #-}-newtype HappyWrap91 = HappyWrap91 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))-happyIn91 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )-happyIn91 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap91 x)-{-# INLINE happyIn91 #-}-happyOut91 :: (HappyAbsSyn ) -> HappyWrap91-happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut91 #-}-newtype HappyWrap92 = HappyWrap92 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term]))-happyIn92 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term])) -> (HappyAbsSyn )-happyIn92 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap92 x)-{-# INLINE happyIn92 #-}-happyOut92 :: (HappyAbsSyn ) -> HappyWrap92-happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut92 #-}-happyInTok :: (Token) -> (HappyAbsSyn )-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyInTok #-}-happyOutTok :: (HappyAbsSyn ) -> (Token)-happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOutTok #-}---{-# NOINLINE happyTokenStrings #-}-happyTokenStrings = ["'#assume'","'#check'","'#compute'","'#compute-nf'","'#compute-whnf'","'#data'","'#def'","'#define'","'#end'","'#lang'","'#postulate'","'#section'","'#set-option'","'#unset-option'","'#variable'","'#variables'","'$extract$'","'('","')'","'*'","'*_1'","'*\8321'","','","'->'","'/'","'/\\\\'","'0_2'","'0_I'","'0\7522'","'0\8322'","'1'","'1_2'","'1_I'","'1\7522'","'1\8322'","'2'","':'","':='","':_#'","':_b'","':_id'","':_op'","':\7506\7510'","':\9837'","':\9839'","';'","'<='","'='","'==='","'=>'","'=_{'","'BOT'","'CUBE'","'II'","'Sigma'","'TOP'","'TOPE'","'U'","'Unit'","'['","'\\\\'","'\\\\/'","']'","'_#'","'_b'","'_id'","'_op'","'as'","'compute'","'eliminate'","'first'","'flip_op'","'flip\7506\7510'","'idJ'","'in'","'inf'","'into'","'inv_op'","'inv\7506\7510'","'let'","'match'","'mod'","'recBOT'","'recOR'","'refl'","'refl_{'","'rzk-1'","'second'","'sup'","'unflip_op'","'unflip\7506\7510'","'uninv_op'","'uninv\7506\7510'","'unit'","'uses'","'with'","'|'","'|->'","'}'","'\215'","'\931'","'\960\8321'","'\960\8322'","'\7506\7510'","'\8594'","'\8614'","'\8658'","'\8721'","'\8743'","'\8744'","'\8801'","'\8804'","'\8851'","'\8852'","'\8868'","'\8869'","'\9837'","'\9839'","'\120128'","L_quoted","L_VarIdentToken","L_HoleIdentToken","%eof"]--happyActOffsets :: HappyAddr-happyActOffsets = HappyA# "\xff\xff\xff\xff\x9d\xff\xff\xff\xa4\xff\xff\xff\xa4\xff\xff\xff\x21\x00\x00\x00\xcb\xff\xff\xff\xbe\x0c\x00\x00\xbe\x0c\x00\x00\xd5\xff\xff\xff\xc1\xff\xff\xff\x39\x00\x00\x00\x4d\x00\x00\x00\x1d\x00\x00\x00\x1d\x00\x00\x00\x84\x00\x00\x00\xbd\xff\xff\xff\xbd\xff\xff\xff\x37\x00\x00\x00\x37\x00\x00\x00\x41\x00\x00\x00\x41\x00\x00\x00\x41\x00\x00\x00\x41\x00\x00\x00\xc4\x00\x00\x00\xc4\x00\x00\x00\xd4\x00\x00\x00\x59\x00\x00\x00\xd4\x00\x00\x00\xd4\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x8f\x01\x00\x00\x8f\x01\x00\x00\xa3\x03\x00\x00\xf7\x01\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\xf7\x01\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\xed\xff\xff\xff\xd8\xff\xff\xff\x10\x01\x00\x00\x43\x01\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x79\x00\x00\x00\x8f\x01\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x00\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xfd\x01\x00\x00\xf7\x01\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\x21\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x56\x00\x00\x00\xc3\x00\x00\x00\xf5\x00\x00\x00\xef\xff\xff\xff\xc3\x00\x00\x00\xa9\x01\x00\x00\xc3\x00\x00\x00\xc3\x00\x00\x00\x0d\x00\x00\x00\xc3\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x01\x00\x00\xe1\x00\x00\x00\xe1\x00\x00\x00\x5e\x01\x00\x00\x18\x01\x00\x00\x2e\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\xaa\x0c\x00\x00\x7a\x01\x00\x00\x24\x01\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\x24\x01\x00\x00\x24\x01\x00\x00\xa9\x01\x00\x00\x78\x01\x00\x00\x2c\x01\x00\x00\x00\x00\x00\x00\x22\x01\x00\x00\x2c\x01\x00\x00\x2a\x01\x00\x00\x2c\x01\x00\x00\x00\x00\x00\x00\xb7\x01\x00\x00\x59\x01\x00\x00\x59\x01\x00\x00\x2a\x01\x00\x00\x59\x01\x00\x00\x59\x01\x00\x00\x48\x01\x00\x00\x85\x01\x00\x00\x6c\x01\x00\x00\x6c\x01\x00\x00\xbd\xff\xff\xff\x6c\x01\x00\x00\xa8\x01\x00\x00\xc7\x01\x00\x00\x72\x01\x00\x00\x72\x01\x00\x00\xef\xff\xff\xff\xf4\xff\xff\xff\xaf\x01\x00\x00\x93\x01\x00\x00\x93\x01\x00\x00\x93\x01\x00\x00\xb5\x01\x00\x00\xb8\x01\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xb8\x01\x00\x00\xb8\x01\x00\x00\x22\x02\x00\x00\x07\x02\x00\x00\xcc\x01\x00\x00\xcb\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xcb\x01\x00\x00\xcb\x01\x00\x00\xcb\x01\x00\x00\xcb\x01\x00\x00\xcb\x01\x00\x00\xcb\x01\x00\x00\xd8\x01\x00\x00\xd8\x01\x00\x00\xf0\x01\x00\x00\xf0\x01\x00\x00\xd6\x01\x00\x00\xd6\x01\x00\x00\x00\x00\x00\x00\xd6\x01\x00\x00\x30\x02\x00\x00\x14\x02\x00\x00\x15\x02\x00\x00\x15\x02\x00\x00\x15\x02\x00\x00\x15\x02\x00\x00\xbe\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x02\x00\x00\x76\x02\x00\x00\x89\x02\x00\x00\x00\x00\x00\x00\x7f\x02\x00\x00\x00\x00\x00\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x5f\x02\x00\x00\x5f\x02\x00\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x02\x00\x00\xa3\x02\x00\x00\xbe\x0c\x00\x00\x64\x02\x00\x00\x00\x00\x00\x00\xbd\xff\xff\xff\x64\x02\x00\x00\x00\x00\x00\x00\xbe\x02\x00\x00\x00\x00\x00\x00\x7e\x02\x00\x00\x7e\x02\x00\x00\x00\x00\x00\x00\x7e\x02\x00\x00\xe3\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x2a\x01\x00\x00\x09\x00\x00\x00\xb3\x0c\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\xe2\x02\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x8f\x01\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xc1\x00\x00\x00\xa7\x00\x00\x00\xef\xff\xff\xff\x2a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\xf5\xff\xff\xff\xef\xff\xff\xff\xf7\x01\x00\x00\x02\x00\x00\x00\xd8\x02\x00\x00\x85\x00\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x2a\x01\x00\x00\x41\x0c\x00\x00\xf7\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\xde\x00\x00\x00\xde\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xbc\x0c\x00\x00\xea\x02\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xeb\x02\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\xe1\x02\x00\x00\x8f\x01\x00\x00\xef\xff\xff\xff\xa0\x02\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\xf7\x02\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x0c\x00\x00\x08\x03\x00\x00\xce\x0c\x00\x00\x13\x03\x00\x00\xd0\x02\x00\x00\x00\x00\x00\x00\xa9\x01\x00\x00\xa9\x01\x00\x00\xa9\x01\x00\x00\xa9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\xfb\x02\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x10\x03\x00\x00\x11\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x60\x00\x00\x00\xc8\x00\x00\x00\x15\x01\x00\x00\x16\x01\x00\x00\xc6\x02\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x03\x00\x00\xef\xff\xff\xff\x1c\x03\x00\x00\xef\xff\xff\xff\x23\x03\x00\x00\xef\xff\xff\xff\x19\x03\x00\x00\x31\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x5f\x01\x00\x00\xa7\x00\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\x2a\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xf2\x02\x00\x00\x00\x00\x00\x00\x52\x03\x00\x00\x53\x03\x00\x00\x1e\x03\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\x3f\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x22\x00\x00\x00\x8d\x01\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x59\x03\x00\x00\x5a\x03\x00\x00\x5b\x03\x00\x00\x58\x03\x00\x00\xef\xff\xff\xff\x12\x00\x00\x00\x4a\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xf9\x02\x00\x00\x00\x00\x00\x00\x61\x03\x00\x00\x63\x03\x00\x00\x64\x03\x00\x00\x66\x03\x00\x00\x80\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x54\x03\x00\x00\x00\x00\x00\x00\x6e\x03\x00\x00\xef\xff\xff\xff\x6f\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x72\x03\x00\x00\xef\xff\xff\xff\x75\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x89\x03\x00\x00\x8a\x03\x00\x00\x8b\x03\x00\x00\x88\x03\x00\x00\x8c\x03\x00\x00\x8e\x03\x00\x00\x8f\x03\x00\x00\x91\x03\x00\x00\xaf\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x01\x01\x00\x00\xef\xff\xff\xff\x92\x03\x00\x00\xac\x03\x00\x00\xad\x03\x00\x00\xb4\x03\x00\x00\xbf\x03\x00\x00\xc0\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xbd\x03\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x56\x03\x00\x00\x00\x00\x00\x00\x45\x01\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x8d\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x97\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\xcc\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xc4\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyGotoOffsets :: HappyAddr-happyGotoOffsets = HappyA# "\x06\x01\x00\x00\xa3\x00\x00\x00\xad\x01\x00\x00\x5c\x00\x00\x00\xeb\x03\x00\x00\xec\x03\x00\x00\xea\x03\x00\x00\x48\x00\x00\x00\xef\x03\x00\x00\x8b\x02\x00\x00\xee\x03\x00\x00\xe9\x03\x00\x00\xc5\x02\x00\x00\x59\x02\x00\x00\xed\x03\x00\x00\xf0\x03\x00\x00\xda\x00\x00\x00\xdc\x01\x00\x00\xd1\x00\x00\x00\xae\x01\x00\x00\x18\x00\x00\x00\x70\x0b\x00\x00\x4d\x0b\x00\x00\x30\x0c\x00\x00\x73\x0c\x00\x00\x9a\x01\x00\x00\x0c\x0b\x00\x00\xde\x02\x00\x00\x80\x00\x00\x00\x28\x03\x00\x00\xb0\x02\x00\x00\xda\x03\x00\x00\x23\x01\x00\x00\xd9\x03\x00\x00\xd5\x01\x00\x00\x1b\x0b\x00\x00\x01\x0b\x00\x00\xd7\x0a\x00\x00\xb4\x09\x00\x00\x5d\x0b\x00\x00\xc4\x09\x00\x00\x38\x03\x00\x00\x53\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x01\x00\x00\x57\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\x79\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x0b\x00\x00\xaa\x0b\x00\x00\xaf\x0b\x00\x00\x00\x00\x00\x00\xba\x0b\x00\x00\xbf\x0b\x00\x00\xc4\x0b\x00\x00\x87\x01\x00\x00\xc9\x0b\x00\x00\xdd\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x67\x03\x00\x00\xd1\x0b\x00\x00\xd6\x0b\x00\x00\xeb\x0b\x00\x00\xf0\x0b\x00\x00\xf8\x0b\x00\x00\xfd\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x0c\x00\x00\x07\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x0c\x00\x00\x86\x03\x00\x00\x00\x00\x00\x00\x12\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x0c\x00\x00\x00\x00\x00\x00\x88\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x03\x00\x00\x61\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x02\x00\x00\x00\x00\x00\x00\xb5\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\x87\x00\x00\x00\xc5\x03\x00\x00\xe4\x03\x00\x00\xf4\x03\x00\x00\x13\x04\x00\x00\xb0\x01\x00\x00\xee\x01\x00\x00\xf4\x01\x00\x00\xc2\x02\x00\x00\x58\x02\x00\x00\xc7\x02\x00\x00\x03\x04\x00\x00\x04\x04\x00\x00\x5a\x02\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x03\x00\x00\x06\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x03\x00\x00\x00\x00\x00\x00\x07\x04\x00\x00\x08\x04\x00\x00\x16\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x01\x00\x00\x24\x02\x00\x00\x00\x00\x00\x00\xc9\x01\x00\x00\xf6\x02\x00\x00\x00\x00\x00\x00\xf7\x03\x00\x00\x00\x00\x00\x00\xca\x02\x00\x00\xf4\x02\x00\x00\x00\x00\x00\x00\x4e\x02\x00\x00\x00\x00\x00\x00\x23\x04\x00\x00\x42\x04\x00\x00\x00\x00\x00\x00\x9a\x0c\x00\x00\xa8\x0c\x00\x00\xfe\x03\x00\x00\x00\x00\x00\x00\x52\x04\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\xd3\x01\x00\x00\x71\x04\x00\x00\x81\x04\x00\x00\xa0\x04\x00\x00\xb0\x04\x00\x00\xec\x02\x00\x00\x01\x04\x00\x00\x69\x0b\x00\x00\x79\x0b\x00\x00\x7f\x0b\x00\x00\x88\x0b\x00\x00\x00\x00\x00\x00\x9d\x0a\x00\x00\xcf\x04\x00\x00\x1a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x17\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x02\x00\x00\x29\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x02\x00\x00\x09\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x0c\x00\x00\xdf\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x03\x00\x00\x02\x04\x00\x00\x39\x0c\x00\x00\x80\x02\x00\x00\xd3\x09\x00\x00\xac\x0a\x00\x00\xb8\x0a\x00\x00\xe2\x0a\x00\x00\xf1\x0a\x00\x00\x2b\x0b\x00\x00\x36\x0b\x00\x00\x42\x0b\x00\x00\x52\x0b\x00\x00\x00\x00\x00\x00\xe3\x09\x00\x00\xf2\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfe\x04\x00\x00\x00\x00\x00\x00\x0e\x05\x00\x00\x2d\x05\x00\x00\x05\x04\x00\x00\x00\x00\x00\x00\x02\x0a\x00\x00\x11\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x02\x00\x00\x00\x00\x00\x00\x0a\x04\x00\x00\x3d\x05\x00\x00\x71\x03\x00\x00\x3e\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x04\x00\x00\x00\x00\x00\x00\x0b\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x0c\x00\x00\x43\x0c\x00\x00\x43\x0c\x00\x00\x43\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x05\x00\x00\x8b\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x05\x00\x00\xba\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x05\x00\x00\xe9\x05\x00\x00\x70\x0c\x00\x00\x82\x0c\x00\x00\x8b\x0c\x00\x00\x91\x0c\x00\x00\x2d\x04\x00\x00\xf9\x05\x00\x00\x18\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x06\x00\x00\x00\x00\x00\x00\x47\x06\x00\x00\x00\x00\x00\x00\x57\x06\x00\x00\x20\x04\x00\x00\x24\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x06\x00\x00\x86\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\xc7\x0a\x00\x00\x82\x02\x00\x00\xa5\x06\x00\x00\x85\x02\x00\x00\xb5\x06\x00\x00\xd4\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x0b\x00\x00\xe4\x06\x00\x00\x00\x00\x00\x00\x03\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x02\x00\x00\x13\x07\x00\x00\x32\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x07\x00\x00\x00\x00\x00\x00\x91\x02\x00\x00\x00\x00\x00\x00\x61\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x07\x00\x00\x00\x00\x00\x00\xa0\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\x9f\x0c\x00\x00\x00\x00\x00\x00\xa0\x07\x00\x00\x00\x00\x00\x00\xbf\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x07\x00\x00\x00\x00\x00\x00\xee\x07\x00\x00\x00\x00\x00\x00\xfe\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x08\x00\x00\x00\x00\x00\x00\x2d\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x08\x00\x00\x5c\x08\x00\x00\x7b\x08\x00\x00\x00\x00\x00\x00\x8b\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x0a\x00\x00\x30\x0a\x00\x00\x40\x0a\x00\x00\x00\x00\x00\x00\xaa\x08\x00\x00\xba\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4f\x0a\x00\x00\x5f\x0a\x00\x00\x6e\x0a\x00\x00\x7e\x0a\x00\x00\x8d\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x08\x00\x00\x00\x00\x00\x00\xe9\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x09\x00\x00\x18\x09\x00\x00\x37\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x66\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x76\x09\x00\x00\x00\x00\x00\x00\x95\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa5\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyDefActions :: HappyAddr-happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\xff\xff\xff\xb4\xff\xff\xff\xb3\xff\xff\xff\xb0\xff\xff\xff\xae\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xff\xff\xff\x00\x00\x00\x00\xa5\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\xff\xff\xff\xcf\xff\xff\xff\xd0\xff\xff\xff\x53\xff\xff\xff\x52\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x2b\xff\xff\xff\x41\xff\xff\xff\x3d\xff\xff\xff\x3a\xff\xff\xff\x18\xff\xff\xff\x45\xff\xff\xff\x0f\xff\xff\xff\x0e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\xff\xff\xff\x6a\xff\xff\xff\x4f\xff\xff\xff\x4c\xff\xff\xff\x65\xff\xff\xff\x68\xff\xff\xff\x6b\xff\xff\xff\x4e\xff\xff\xff\x4b\xff\xff\xff\x64\xff\xff\xff\x67\xff\xff\xff\x69\xff\xff\xff\x49\xff\xff\xff\x6d\xff\xff\xff\x4d\xff\xff\xff\x00\x00\x00\x00\x4a\xff\xff\xff\x6c\xff\xff\xff\x6e\xff\xff\xff\x5f\xff\xff\xff\x00\x00\x00\x00\x7b\xff\xff\xff\x7d\xff\xff\xff\x78\xff\xff\xff\x79\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x61\xff\xff\xff\x00\x00\x00\x00\x59\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\xff\xff\xff\x00\x00\x00\x00\x63\xff\xff\xff\x62\xff\xff\xff\x7e\xff\xff\xff\x7c\xff\xff\xff\x66\xff\xff\xff\xd3\xff\xff\xff\xd2\xff\xff\xff\x00\x00\x00\x00\x18\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\xff\xff\xff\x71\xff\xff\xff\x72\xff\xff\xff\x6f\xff\xff\xff\x73\xff\xff\xff\x75\xff\xff\xff\x74\xff\xff\xff\x77\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x80\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\xff\xff\xff\x00\x00\x00\x00\x84\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x8b\xff\xff\xff\x8d\xff\xff\xff\x00\x00\x00\x00\x94\xff\xff\xff\x8f\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\xff\xff\xff\x96\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x99\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa5\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\xff\xff\xff\xab\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xff\xff\xff\x00\x00\x00\x00\xb3\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xce\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\xff\xff\xff\xd1\xff\xff\xff\xcd\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\xff\xff\xff\x00\x00\x00\x00\xbf\xff\xff\xff\xb4\xff\xff\xff\xbe\xff\xff\xff\xb4\xff\xff\xff\xb4\xff\xff\xff\xb4\xff\xff\xff\xc6\xff\xff\xff\xc5\xff\xff\xff\xc7\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb7\xff\xff\xff\x00\x00\x00\x00\xb1\xff\xff\xff\xa5\xff\xff\xff\x00\x00\x00\x00\xac\xff\xff\xff\xa8\xff\xff\xff\xa9\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa4\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\xff\xff\xff\x00\x00\x00\x00\x99\xff\xff\xff\x00\x00\x00\x00\x8e\xff\xff\xff\x00\x00\x00\x00\x2f\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\xff\xff\xff\x2d\xff\xff\xff\x00\x00\x00\x00\x36\xff\xff\xff\x35\xff\xff\xff\x32\xff\xff\xff\x31\xff\xff\xff\x00\x00\x00\x00\x27\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\xff\xff\xff\x37\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x34\xff\xff\xff\x33\xff\xff\xff\x28\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x26\xff\xff\xff\x17\xff\xff\xff\x42\xff\xff\xff\x43\xff\xff\xff\x40\xff\xff\xff\x3f\xff\xff\xff\x3e\xff\xff\xff\x3c\xff\xff\xff\x3b\xff\xff\xff\x39\xff\xff\xff\x10\xff\xff\xff\x0d\xff\xff\xff\x2e\xff\xff\xff\x00\x00\x00\x00\x51\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x58\xff\xff\xff\x2a\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\xff\xff\xff\x47\xff\xff\xff\x46\xff\xff\xff\x48\xff\xff\xff\x44\xff\xff\xff\x76\xff\xff\xff\x7f\xff\xff\xff\x82\xff\xff\xff\x81\xff\xff\xff\x86\xff\xff\xff\x85\xff\xff\xff\x83\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x8c\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x95\xff\xff\xff\xa2\xff\xff\xff\xa0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xad\xff\xff\xff\xaa\xff\xff\xff\xaf\xff\xff\xff\x00\x00\x00\x00\xb6\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcc\xff\xff\xff\xc0\xff\xff\xff\xc1\xff\xff\xff\xca\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\xff\xff\xff\xb0\xff\xff\xff\xc8\xff\xff\xff\xc2\xff\xff\xff\xb5\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa3\xff\xff\xff\xa1\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x30\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\xff\xff\xff\x13\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\xff\xff\xff\x00\x00\x00\x00\x5e\xff\xff\xff\x00\x00\x00\x00\x8a\xff\xff\xff\x00\x00\x00\x00\x86\xff\xff\xff\x85\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\xff\xff\xff\x00\x00\x00\x00\x57\xff\xff\xff\x86\xff\xff\xff\x85\xff\xff\xff\x00\x00\x00\x00\x86\xff\xff\xff\x00\x00\x00\x00\x22\xff\xff\xff\x9b\xff\xff\xff\x00\x00\x00\x00\x91\xff\xff\xff\x00\x00\x00\x00\x93\xff\xff\xff\x00\x00\x00\x00\xa6\xff\xff\xff\xa7\xff\xff\xff\xae\xff\xff\xff\xb8\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\xff\xff\xff\x00\x00\x00\x00\xc4\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb9\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\xff\xff\xff\x5d\xff\xff\xff\x89\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\xff\xff\xff\x00\x00\x00\x00\x54\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\xff\xff\xff\x90\xff\xff\xff\x92\xff\xff\xff\xba\xff\xff\xff\x00\x00\x00\x00\xbc\xff\xff\xff\x00\x00\x00\x00\xbd\xff\xff\xff\xbb\xff\xff\xff\x11\xff\xff\xff\x12\xff\xff\xff\x23\xff\xff\xff\x24\xff\xff\xff\x25\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\xff\xff\xff\x00\x00\x00\x00\x14\xff\xff\xff\x15\xff\xff\xff\x16\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x1b\xff\xff\xff\x00\x00\x00\x00\x1c\xff\xff\xff\x00\x00\x00\x00\x1a\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x19\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x56\xff\xff\xff"#--happyCheck :: HappyAddr-happyCheck = HappyA# "\xff\xff\xff\xff\x12\x00\x00\x00\x13\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x13\x00\x00\x00\x1b\x00\x00\x00\x19\x00\x00\x00\x0b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x13\x00\x00\x00\x33\x00\x00\x00\x3f\x00\x00\x00\x7b\x00\x00\x00\x01\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x13\x00\x00\x00\x05\x00\x00\x00\x7a\x00\x00\x00\x14\x00\x00\x00\x19\x00\x00\x00\x18\x00\x00\x00\x15\x00\x00\x00\x58\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x0b\x00\x00\x00\x3e\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x14\x00\x00\x00\x60\x00\x00\x00\x14\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x7a\x00\x00\x00\x4d\x00\x00\x00\x14\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x6f\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x6c\x00\x00\x00\x4e\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x5f\x00\x00\x00\x13\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x64\x00\x00\x00\x6a\x00\x00\x00\x6e\x00\x00\x00\x6d\x00\x00\x00\x01\x00\x00\x00\x4c\x00\x00\x00\x26\x00\x00\x00\x4e\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x5f\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x62\x00\x00\x00\x7a\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x6a\x00\x00\x00\x65\x00\x00\x00\x13\x00\x00\x00\x27\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x01\x00\x00\x00\x62\x00\x00\x00\x7a\x00\x00\x00\x62\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x31\x00\x00\x00\x01\x00\x00\x00\x7c\x00\x00\x00\x34\x00\x00\x00\x62\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x63\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x16\x00\x00\x00\x7a\x00\x00\x00\x13\x00\x00\x00\x6b\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x5f\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x02\x00\x00\x00\x4d\x00\x00\x00\x04\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x26\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x7a\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x7a\x00\x00\x00\x79\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x5f\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x53\x00\x00\x00\x18\x00\x00\x00\x7a\x00\x00\x00\x13\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x18\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x5f\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x13\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x26\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x15\x00\x00\x00\x4d\x00\x00\x00\x7c\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x13\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x7a\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x13\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x07\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x5f\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x13\x00\x00\x00\x5f\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x13\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x5f\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x13\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x13\x00\x00\x00\x7a\x00\x00\x00\x7c\x00\x00\x00\x4b\x00\x00\x00\x31\x00\x00\x00\x7a\x00\x00\x00\x65\x00\x00\x00\x34\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x4c\x00\x00\x00\x7a\x00\x00\x00\x4e\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x1a\x00\x00\x00\x5f\x00\x00\x00\x5f\x00\x00\x00\x45\x00\x00\x00\x13\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x13\x00\x00\x00\x19\x00\x00\x00\x7c\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x7a\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x5f\x00\x00\x00\x14\x00\x00\x00\x5f\x00\x00\x00\x5f\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x33\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x5f\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x01\x00\x00\x00\x5f\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x05\x00\x00\x00\x7a\x00\x00\x00\x4b\x00\x00\x00\x7a\x00\x00\x00\x7a\x00\x00\x00\x4c\x00\x00\x00\x18\x00\x00\x00\x4e\x00\x00\x00\x7c\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x16\x00\x00\x00\x26\x00\x00\x00\x05\x00\x00\x00\x7c\x00\x00\x00\x14\x00\x00\x00\x5f\x00\x00\x00\x1c\x00\x00\x00\x7a\x00\x00\x00\x18\x00\x00\x00\x15\x00\x00\x00\x5f\x00\x00\x00\x7c\x00\x00\x00\x22\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x6c\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x13\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x30\x00\x00\x00\x7a\x00\x00\x00\x32\x00\x00\x00\x16\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x18\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x01\x00\x00\x00\x7c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x05\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x62\x00\x00\x00\x7c\x00\x00\x00\x16\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x7c\x00\x00\x00\x01\x00\x00\x00\x14\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x05\x00\x00\x00\x4b\x00\x00\x00\x01\x00\x00\x00\x65\x00\x00\x00\x22\x00\x00\x00\x69\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x01\x00\x00\x00\x5f\x00\x00\x00\x61\x00\x00\x00\x13\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x7c\x00\x00\x00\x13\x00\x00\x00\x62\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x61\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x05\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7a\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x7c\x00\x00\x00\x13\x00\x00\x00\x2f\x00\x00\x00\x16\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x16\x00\x00\x00\x1c\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x4b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x7a\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x7c\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x01\x00\x00\x00\x53\x00\x00\x00\x79\x00\x00\x00\x7c\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x5f\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x5f\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x69\x00\x00\x00\x01\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x69\x00\x00\x00\x25\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x7a\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x1d\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x22\x00\x00\x00\x16\x00\x00\x00\x7a\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x58\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x7a\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x7c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x2f\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x0c\x00\x00\x00\x16\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x16\x00\x00\x00\x26\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x22\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x26\x00\x00\x00\x31\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x60\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x26\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x0c\x00\x00\x00\x05\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x0c\x00\x00\x00\x0f\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\x7a\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x05\x00\x00\x00\x18\x00\x00\x00\x05\x00\x00\x00\x1e\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x27\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x16\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x16\x00\x00\x00\x27\x00\x00\x00\x1d\x00\x00\x00\x1c\x00\x00\x00\x14\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\x7a\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x18\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x18\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x64\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x1e\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x40\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x79\x00\x00\x00\x27\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x16\x00\x00\x00\x16\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x20\x00\x00\x00\x26\x00\x00\x00\x22\x00\x00\x00\x1e\x00\x00\x00\x1e\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\x64\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x13\x00\x00\x00\x27\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x4c\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x18\x00\x00\x00\x27\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x1d\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x22\x00\x00\x00\x14\x00\x00\x00\x27\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x14\x00\x00\x00\x27\x00\x00\x00\x27\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x27\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x27\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x4c\x00\x00\x00\x1d\x00\x00\x00\x18\x00\x00\x00\x05\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x22\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x14\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x1d\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x22\x00\x00\x00\x14\x00\x00\x00\x4c\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\x4c\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x0e\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x0b\x00\x00\x00\x0d\x00\x00\x00\x22\x00\x00\x00\x24\x00\x00\x00\x11\x00\x00\x00\x22\x00\x00\x00\x24\x00\x00\x00\x1d\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x22\x00\x00\x00\x0b\x00\x00\x00\x11\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x0b\x00\x00\x00\x24\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x24\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x24\x00\x00\x00\x24\x00\x00\x00\x22\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x24\x00\x00\x00\x1d\x00\x00\x00\x0d\x00\x00\x00\xff\xff\xff\xff\x0e\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x16\x00\x00\x00\x22\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\x2a\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x00\x00\x17\x00\x00\x00\x2a\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x16\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x1a\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x14\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x18\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x25\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x11\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x0d\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x16\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x16\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x1a\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x00\x00\xff\xff\xff\xff\x18\x00\x00\x00\x19\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\xff\xff\xff\xff\x18\x00\x00\x00\x19\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x00\x00\x17\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\xff\xff\xff\xff\x0c\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x11\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\xb0\x00\x00\x00\xb1\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\xa1\x00\x00\x00\x35\x01\x00\x00\x3c\x01\x00\x00\xd6\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x59\x01\x00\x00\x79\x01\x00\x00\x33\x01\x00\x00\x78\x00\x00\x00\x2d\x00\x00\x00\xb4\x00\x00\x00\x5d\x01\x00\x00\x97\x00\x00\x00\x92\x00\x00\x00\x77\x00\x00\x00\xd5\x01\x00\x00\x51\x01\x00\x00\x71\x01\x00\x00\x0e\x01\x00\x00\xd4\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\xd6\x00\x00\x00\x53\x00\x00\x00\xa6\x00\x00\x00\xa7\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\xd3\x01\x00\x00\xc0\x00\x00\x00\xbe\x01\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x77\x00\x00\x00\x5c\x00\x00\x00\xba\x01\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x34\x01\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x7a\x01\x00\x00\x5a\x01\x00\x00\xc0\x00\x00\x00\xc1\x00\x00\x00\x98\x00\x00\x00\x97\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x5e\x01\x00\x00\x3d\x01\x00\x00\x36\x01\x00\x00\x71\x00\x00\x00\x2d\x00\x00\x00\xf2\x01\x00\x00\xbc\x00\x00\x00\xf3\x01\x00\x00\xd6\x00\x00\x00\xd7\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x98\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\xd6\x01\x00\x00\x77\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x52\x01\x00\x00\x0f\x01\x00\x00\xa1\x00\x00\x00\xba\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x10\x01\x00\x00\x11\x01\x00\x00\x2d\x00\x00\x00\xd4\x01\x00\x00\x77\x00\x00\x00\xbf\x01\x00\x00\x92\x00\x00\x00\xbc\x00\x00\x00\x13\x01\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\x14\x01\x00\x00\xbb\x01\x00\x00\xd6\x00\x00\x00\xed\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x0a\x01\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x93\x00\x00\x00\x77\x00\x00\x00\x97\x00\x00\x00\x0b\x01\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x94\x00\x00\x00\x95\x00\x00\x00\x98\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x2e\x00\x00\x00\x5c\x00\x00\x00\xd9\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\xb4\x00\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x77\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x3d\x00\x00\x00\x7d\x00\x00\x00\x77\x00\x00\x00\x2d\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x98\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x2d\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x4c\x01\x00\x00\xa9\x00\x00\x00\xa1\x00\x00\x00\x57\x01\x00\x00\x4d\x01\x00\x00\x77\x00\x00\x00\xa1\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x31\x01\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x98\x00\x00\x00\xaa\x00\x00\x00\xab\x00\x00\x00\x97\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\xad\x00\x00\x00\xae\x00\x00\x00\x95\x01\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x0e\x01\x00\x00\x5c\x00\x00\x00\xff\xff\xff\xff\x5d\x00\x00\x00\x5e\x00\x00\x00\x2e\x01\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x77\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\xa1\x00\x00\x00\x7d\x00\x00\x00\xda\x00\x00\x00\x29\x01\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\xdb\x00\x00\x00\x6e\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x2d\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x98\x00\x00\x00\xd6\x00\x00\x00\xdf\x00\x00\x00\x97\x00\x00\x00\x98\x00\x00\x00\xa1\x00\x00\x00\xa1\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x20\x01\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x05\x01\x00\x00\x98\x00\x00\x00\x18\x01\x00\x00\xa1\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x15\x01\x00\x00\x93\x01\x00\x00\x91\x01\x00\x00\x97\x00\x00\x00\x77\x00\x00\x00\xff\xff\xff\xff\x5b\x00\x00\x00\x13\x01\x00\x00\x77\x00\x00\x00\x0f\x01\x00\x00\x14\x01\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x03\x02\x00\x00\x77\x00\x00\x00\x04\x02\x00\x00\x10\x01\x00\x00\x11\x01\x00\x00\x0d\x01\x00\x00\x98\x00\x00\x00\x6c\x00\x00\x00\x32\x01\x00\x00\x7d\x00\x00\x00\x8b\x00\x00\x00\x2f\x01\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x97\x00\x00\x00\x8b\xff\xff\xff\xff\xff\xff\xff\x70\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\xff\xff\xff\xff\x98\x00\x00\x00\xd1\x01\x00\x00\x98\x00\x00\x00\x98\x00\x00\x00\x0c\x01\x00\x00\xd2\x01\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\xfc\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x05\x01\x00\x00\x98\x00\x00\x00\xad\x00\x00\x00\xf8\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x2d\x00\x00\x00\x98\x00\x00\x00\xc0\x00\x00\x00\xdc\x00\x00\x00\x92\x00\x00\x00\x77\x00\x00\x00\x5b\x00\x00\x00\x77\x00\x00\x00\x77\x00\x00\x00\x1c\x02\x00\x00\x07\x01\x00\x00\x1d\x02\x00\x00\xff\xff\xff\xff\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x2d\x00\x00\x00\x77\x00\x00\x00\x9b\x00\x00\x00\x03\x01\x00\x00\x92\x00\x00\x00\xff\xff\xff\xff\xbc\x01\x00\x00\x6c\x00\x00\x00\x22\x01\x00\x00\x77\x00\x00\x00\xbd\x01\x00\x00\x0e\x01\x00\x00\x98\x00\x00\x00\xff\xff\xff\xff\x23\x01\x00\x00\xc0\x00\x00\x00\x81\x01\x00\x00\x70\x00\x00\x00\x8b\xff\xff\xff\x2d\x00\x00\x00\x2d\x00\x00\x00\x9b\x00\x00\x00\x2d\x00\x00\x00\xd8\x00\x00\x00\x92\x00\x00\x00\xfd\x00\x00\x00\xe8\x00\x00\x00\x9c\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x7d\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\x37\x01\x00\x00\x77\x00\x00\x00\x38\x01\x00\x00\xa8\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\xff\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\x2d\x00\x00\x00\x2e\x00\x00\x00\x92\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xad\x00\x00\x00\x7f\x01\x00\x00\x2d\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\xa9\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x05\x01\x00\x00\xfa\x00\x00\x00\xff\xff\xff\xff\x93\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\xff\xff\xff\xff\x2d\x00\x00\x00\xac\x00\x00\x00\x94\x00\x00\x00\x6f\x01\x00\x00\xe7\x00\x00\x00\x5b\x00\x00\x00\x2d\x00\x00\x00\x0f\x01\x00\x00\x32\x00\x00\x00\x70\x00\x00\x00\xe6\x00\x00\x00\x82\x00\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x39\x01\x00\x00\x3a\x01\x00\x00\x10\x01\x00\x00\x11\x01\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x2d\x00\x00\x00\x6c\x00\x00\x00\xf8\x00\x00\x00\x7d\x00\x00\x00\xd6\x00\x00\x00\xdd\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\xff\xff\xff\xff\x97\x00\x00\x00\xf3\x00\x00\x00\x70\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x2d\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x2d\x00\x00\x00\xf7\x00\x00\x00\xd6\x00\x00\x00\x80\x01\x00\x00\x92\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x4d\x00\x00\x00\x77\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\xff\xff\xff\xff\xf0\x00\x00\x00\xef\x00\x00\x00\x9b\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x05\x01\x00\x00\x55\x01\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x5b\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x77\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xff\xff\xff\xff\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x2d\x00\x00\x00\x25\x01\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xa9\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x6c\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2d\x00\x00\x00\x2d\x00\x00\x00\x98\x00\x00\x00\xe4\x00\x00\x00\xb4\x00\x00\x00\xe0\x00\x00\x00\x70\x00\x00\x00\x2d\x00\x00\x00\xaa\x00\x00\x00\x7a\x01\x00\x00\x32\x00\x00\x00\x92\x00\x00\x00\x70\x00\x00\x00\x3a\x01\x00\x00\xb5\x00\x00\x00\xb6\x00\x00\x00\x77\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x31\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x32\x00\x00\x00\xa1\x01\x00\x00\x77\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2d\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\xd4\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x2d\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x77\x00\x00\x00\xb4\x00\x00\x00\xbc\x00\x00\x00\xff\xff\xff\xff\x2d\x00\x00\x00\x2e\x00\x00\x00\x8c\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xbd\x00\x00\x00\x93\x00\x00\x00\xb5\x00\x00\x00\xf1\x00\x00\x00\x93\x00\x00\x00\x8b\x01\x00\x00\x31\x00\x00\x00\xff\x00\x00\x00\x00\x01\x00\x00\x94\x00\x00\x00\xce\x01\x00\x00\x32\x00\x00\x00\x94\x00\x00\x00\xcc\x01\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x48\x01\x00\x00\x31\x00\x00\x00\x8a\x01\x00\x00\x89\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\xf9\x01\x00\x00\xc0\x00\x00\x00\x84\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2d\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\xbc\x00\x00\x00\x2d\x00\x00\x00\x83\x01\x00\x00\xb4\x00\x00\x00\x2d\x00\x00\x00\xbc\x00\x00\x00\x31\x00\x00\x00\xe5\x00\x00\x00\x7c\x01\x00\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\x32\x00\x00\x00\xe3\x00\x00\x00\xb7\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x90\x00\x00\x00\x31\x00\x00\x00\x77\x00\x00\x00\x2d\x00\x00\x00\x8e\x00\x00\x00\x71\x01\x00\x00\x32\x00\x00\x00\x92\x00\x00\x00\xb4\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x90\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2d\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x93\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x2d\x00\x00\x00\x77\x00\x00\x00\x7b\x01\x00\x00\x71\x01\x00\x00\xb4\x00\x00\x00\x98\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x58\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xb4\x01\x00\x00\xb1\x01\x00\x00\x9b\x00\x00\x00\xb5\x00\x00\x00\x7e\x01\x00\x00\x93\x00\x00\x00\xaf\x01\x00\x00\x31\x00\x00\x00\xaf\x01\x00\x00\xaa\x01\x00\x00\x8e\x00\x00\x00\x6a\x01\x00\x00\x32\x00\x00\x00\x94\x00\x00\x00\xc1\x01\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x90\x00\x00\x00\x31\x00\x00\x00\x77\x00\x00\x00\x2d\x00\x00\x00\x8e\x00\x00\x00\x5b\x01\x00\x00\x32\x00\x00\x00\x92\x00\x00\x00\xa6\x01\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x90\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xa4\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2d\x00\x00\x00\x61\x01\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x92\x00\x00\x00\xa3\x01\x00\x00\x92\x00\x00\x00\x9c\x01\x00\x00\x9b\x01\x00\x00\x62\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xa1\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x9a\x01\x00\x00\x2d\x00\x00\x00\xba\x00\x00\x00\xe0\x01\x00\x00\xde\x01\x00\x00\x5f\x01\x00\x00\x4e\x01\x00\x00\x31\x00\x00\x00\xa6\x00\x00\x00\xfd\x00\x00\x00\x91\x00\x00\x00\xdc\x01\x00\x00\x32\x00\x00\x00\x60\x01\x00\x00\x4f\x01\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x90\x00\x00\x00\x31\x00\x00\x00\xca\x01\x00\x00\xbc\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x78\x00\x00\x00\xc9\x01\x00\x00\xc4\x01\x00\x00\xc8\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xc7\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xf8\x01\x00\x00\xf7\x01\x00\x00\xf6\x01\x00\x00\xf5\x01\x00\x00\xf1\x01\x00\x00\x2d\x00\x00\x00\x77\x00\x00\x00\x31\x00\x00\x00\xee\x01\x00\x00\xa9\x00\x00\x00\xed\x01\x00\x00\xec\x01\x00\x00\x32\x00\x00\x00\xeb\x01\x00\x00\xba\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x2e\x01\x00\x00\x31\x00\x00\x00\xaa\x00\x00\x00\xab\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x1e\x01\x00\x00\xea\x01\x00\x00\xe5\x01\x00\x00\xe3\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x14\x02\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x12\x02\x00\x00\x10\x02\x00\x00\x0f\x02\x00\x00\x0e\x02\x00\x00\x0d\x02\x00\x00\x2d\x00\x00\x00\x1e\x02\x00\x00\x31\x00\x00\x00\x0c\x02\x00\x00\xa9\x00\x00\x00\x0b\x02\x00\x00\x0a\x02\x00\x00\x32\x00\x00\x00\x09\x02\x00\x00\x01\x02\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x11\x01\x00\x00\x31\x00\x00\x00\xaa\x00\x00\x00\xee\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xf5\x00\x00\x00\x08\x02\x00\x00\x00\x02\x00\x00\xff\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xfe\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x87\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x31\x00\x00\x00\xfd\x01\x00\x00\xfc\x01\x00\x00\x21\x02\x00\x00\x2c\x02\x00\x00\x32\x00\x00\x00\x31\x02\x00\x00\x26\x02\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xf0\x00\x00\x00\x31\x00\x00\x00\x2a\x02\x00\x00\x2f\x02\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xec\x00\x00\x00\xd4\x00\x00\x00\xd1\x00\x00\x00\xd2\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xb8\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xbe\x00\x00\x00\xba\x00\x00\x00\x8d\x00\x00\x00\x83\x00\x00\x00\xb2\x00\x00\x00\x20\x01\x00\x00\x07\x01\x00\x00\x31\x00\x00\x00\xb1\x00\x00\x00\xe2\x00\x00\x00\xe1\x00\x00\x00\xde\x00\x00\x00\x32\x00\x00\x00\x87\x01\x00\x00\x7d\x01\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xeb\x00\x00\x00\x31\x00\x00\x00\x86\x01\x00\x00\x85\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xea\x00\x00\x00\x84\x01\x00\x00\x73\x01\x00\x00\x69\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x4a\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xb4\x01\x00\x00\xa6\x01\x00\x00\x54\x01\x00\x00\xad\x01\x00\x00\x8e\x01\x00\x00\xd9\x01\x00\x00\x07\x01\x00\x00\x31\x00\x00\x00\xd8\x01\x00\x00\x00\x00\x00\x00\xe5\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xe9\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x77\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x76\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x72\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x6e\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x6d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x6c\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x6b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x63\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x52\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xb8\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xb7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xb6\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xac\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xa8\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x9f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x9e\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x9d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x9c\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x98\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x97\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x8d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x8c\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xde\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xdc\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xda\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xd7\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xd6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xcd\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xcb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xca\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xc4\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xc2\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xc0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xbf\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xfa\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xf8\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xf3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xef\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xe7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xe6\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xe3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xe1\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x12\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x10\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x06\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x05\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x04\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x1f\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x1e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x15\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x14\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x28\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x27\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x26\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x24\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x2a\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x2d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\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\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x2c\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x2f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x7d\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x7a\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x47\x01\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x3e\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x3d\x01\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\xb2\x01\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\xb1\x01\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x23\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x22\x02\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x21\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x1a\x02\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x19\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x17\x02\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x79\x00\x00\x00\x38\x00\x00\x00\x16\x02\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x64\x01\x00\x00\x7e\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x46\x01\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x45\x01\x00\x00\x7e\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\xcf\x01\x00\x00\x7e\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x44\x01\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x43\x01\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2d\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x34\x00\x00\x00\x80\x00\x00\x00\x99\x00\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xc5\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x7e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x42\x01\x00\x00\x92\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x7e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x41\x01\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x7e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\xa2\x00\x00\x00\x32\x00\x00\x00\xa3\x00\x00\x00\xa4\x00\x00\x00\x33\x00\x00\x00\x40\x01\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x7e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x3f\x01\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x7e\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x33\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x7b\x00\x00\x00\xa5\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x68\x01\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x92\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x67\x01\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\xfa\x00\x00\x00\x66\x01\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x33\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x65\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2b\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x29\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x25\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x21\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x1c\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x1a\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x19\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x15\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x2d\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x32\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x5e\x01\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x9d\x00\x00\x00\x2f\x00\x00\x00\x30\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5a\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x01\x00\x00\x00\x00\x00\x00\x4c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x49\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\xaa\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x92\x00\x00\x00\x4e\x01\x00\x00\x03\x01\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x87\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\xf3\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x9e\x00\x00\x00\xf4\x00\x00\x00\x95\x01\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x9e\x00\x00\x00\x96\x01\x00\x00\x2d\x00\x00\x00\x9e\x00\x00\x00\x9f\x00\x00\x00\x9d\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x9e\x00\x00\x00\x2c\x01\x00\x00\x9d\x00\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x9e\x00\x00\x00\x01\x01\x00\x00\x2d\x00\x00\x00\x9e\x00\x00\x00\x93\x01\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x2d\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x9e\x00\x00\x00\x91\x01\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x00\x00\x8f\x01\x00\x00\x92\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\x75\x01\x00\x00\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\xa3\x00\x00\x00\xe8\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\xfd\x00\x00\x00\xc3\x00\x00\x00\xc4\x00\x00\x00\xc5\x00\x00\x00\xc6\x00\x00\x00\xc7\x00\x00\x00\xc8\x00\x00\x00\xc9\x00\x00\x00\xca\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\xcc\x00\x00\x00\xcd\x00\x00\x00\xce\x00\x00\x00\xcf\x00\x00\x00\xd0\x00\x00\x00\xd1\x00\x00\x00\x09\x01\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x87\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x75\x01\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x87\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\xb6\x01\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x87\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\xa8\x01\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x87\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\xa5\x01\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x86\x00\x00\x00\x87\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 (43, 242) [- (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)- ]--happyRuleArr :: HappyAddr-happyRuleArr = HappyA# "\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x06\x00\x00\x00\x09\x00\x00\x00\x05\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x06\x00\x00\x00\x09\x00\x00\x00\x05\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x03\x00\x00\x00\x0b\x00\x00\x00\x04\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x02\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x03\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x03\x00\x00\x00\x0f\x00\x00\x00\x02\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x03\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x15\x00\x00\x00\x03\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x05\x00\x00\x00\x16\x00\x00\x00\x07\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x17\x00\x00\x00\x02\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x03\x00\x00\x00\x1a\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x05\x00\x00\x00\x1a\x00\x00\x00\x07\x00\x00\x00\x1a\x00\x00\x00\x05\x00\x00\x00\x1a\x00\x00\x00\x07\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x03\x00\x00\x00\x1d\x00\x00\x00\x01\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x07\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x07\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1f\x00\x00\x00\x01\x00\x00\x00\x1f\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x03\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x21\x00\x00\x00\x03\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x23\x00\x00\x00\x01\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x07\x00\x00\x00\x25\x00\x00\x00\x03\x00\x00\x00\x25\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x03\x00\x00\x00\x25\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x0e\x00\x00\x00\x25\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x07\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x03\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x01\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x28\x00\x00\x00\x03\x00\x00\x00\x28\x00\x00\x00\x01\x00\x00\x00\x28\x00\x00\x00\x03\x00\x00\x00\x29\x00\x00\x00\x03\x00\x00\x00\x29\x00\x00\x00\x01\x00\x00\x00\x29\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2a\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2b\x00\x00\x00\x03\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x05\x00\x00\x00\x2b\x00\x00\x00\x03\x00\x00\x00\x2b\x00\x00\x00\x06\x00\x00\x00\x2b\x00\x00\x00\x04\x00\x00\x00\x2b\x00\x00\x00\x07\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x09\x00\x00\x00\x2b\x00\x00\x00\x09\x00\x00\x00\x2b\x00\x00\x00\x0a\x00\x00\x00\x2b\x00\x00\x00\x0b\x00\x00\x00\x2b\x00\x00\x00\x01\x00\x00\x00\x2b\x00\x00\x00\x03\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x04\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2c\x00\x00\x00\x03\x00\x00\x00\x2c\x00\x00\x00\x01\x00\x00\x00\x2d\x00\x00\x00\x01\x00\x00\x00\x2d\x00\x00\x00\x03\x00\x00\x00"#--happyCatchStates :: [Happy_Prelude.Int]-happyCatchStates = []--happy_n_terms = 125 :: Happy_Prelude.Int-happy_n_nonterms = 46 :: Happy_Prelude.Int--happy_n_starts = 43 :: Happy_Prelude.Int--happyReduce_43 = happySpecReduce_1 0# happyReduction_43-happyReduction_43 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn47- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (Data.Text.unpack ((\(PT _ (TL s)) -> s) happy_var_1)))- )}--happyReduce_44 = happySpecReduce_1 1# happyReduction_44-happyReduction_44 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn48- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.VarIdentToken (tokenText happy_var_1))- )}--happyReduce_45 = happySpecReduce_1 2# happyReduction_45-happyReduction_45 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn49- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.HoleIdentToken (tokenText happy_var_1))- )}--happyReduce_46 = happySpecReduce_2 3# happyReduction_46-happyReduction_46 happy_x_2- happy_x_1- = case happyOut54 happy_x_1 of { (HappyWrap54 happy_var_1) -> - case happyOut57 happy_x_2 of { (HappyWrap57 happy_var_2) -> - happyIn50- ((fst happy_var_1, Language.Rzk.Syntax.Abs.Module (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))- )}}--happyReduce_47 = happySpecReduce_1 4# happyReduction_47-happyReduction_47 happy_x_1- = case happyOut49 happy_x_1 of { (HappyWrap49 happy_var_1) -> - happyIn51- ((fst happy_var_1, Language.Rzk.Syntax.Abs.HoleIdent (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_48 = happySpecReduce_1 5# happyReduction_48-happyReduction_48 happy_x_1- = case happyOut48 happy_x_1 of { (HappyWrap48 happy_var_1) -> - happyIn52- ((fst happy_var_1, Language.Rzk.Syntax.Abs.VarIdent (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_49 = happySpecReduce_1 6# happyReduction_49-happyReduction_49 happy_x_1- = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> - happyIn53- ((fst happy_var_1, (:[]) (snd happy_var_1))- )}--happyReduce_50 = happySpecReduce_2 6# happyReduction_50-happyReduction_50 happy_x_2- happy_x_1- = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> - case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> - happyIn53- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))- )}}--happyReduce_51 = happySpecReduce_3 7# happyReduction_51-happyReduction_51 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut55 happy_x_2 of { (HappyWrap55 happy_var_2) -> - happyIn54- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LanguageDecl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_52 = happySpecReduce_1 8# happyReduction_52-happyReduction_52 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn55- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Rzk1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_53 = happyReduce 4# 9# happyReduction_53-happyReduction_53 (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 happyOut47 happy_x_2 of { (HappyWrap47 happy_var_2) -> - case happyOut47 happy_x_4 of { (HappyWrap47 happy_var_4) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_54 = happySpecReduce_2 9# happyReduction_54-happyReduction_54 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut47 happy_x_2 of { (HappyWrap47 happy_var_2) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandUnsetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_55 = happyReduce 4# 9# happyReduction_55-happyReduction_55 (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 happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCheck (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_56 = happySpecReduce_2 9# happyReduction_56-happyReduction_56 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCompute (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_57 = happySpecReduce_2 9# happyReduction_57-happyReduction_57 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeWHNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_58 = happySpecReduce_2 9# happyReduction_58-happyReduction_58 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_59 = happyReduce 6# 9# happyReduction_59-happyReduction_59 (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 happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> - case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> - case happyOut74 happy_x_4 of { (HappyWrap74 happy_var_4) -> - case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandPostulate (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))- ) `HappyStk` happyRest}}}}}--happyReduce_60 = happyReduce 5# 9# happyReduction_60-happyReduction_60 (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 happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> - case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> - case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandPostulateNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5))- ) `HappyStk` happyRest}}}}--happyReduce_61 = happyReduce 4# 9# happyReduction_61-happyReduction_61 (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 happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandAssume (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_62 = happyReduce 4# 9# happyReduction_62-happyReduction_62 (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 happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariable (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_63 = happyReduce 4# 9# happyReduction_63-happyReduction_63 (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 happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariables (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_64 = happySpecReduce_2 9# happyReduction_64-happyReduction_64 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_2 of { (HappyWrap59 happy_var_2) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSection (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_65 = happySpecReduce_2 9# happyReduction_65-happyReduction_65 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_2 of { (HappyWrap59 happy_var_2) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSectionEnd (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_66 = happyReduce 8# 9# happyReduction_66-happyReduction_66 (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 { happy_var_1 -> - case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> - case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> - case happyOut74 happy_x_4 of { (HappyWrap74 happy_var_4) -> - case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> - case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandDefine (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))- ) `HappyStk` happyRest}}}}}}--happyReduce_67 = happyReduce 7# 9# happyReduction_67-happyReduction_67 (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 { happy_var_1 -> - case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> - case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> - case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> - case happyOut91 happy_x_7 of { (HappyWrap91 happy_var_7) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefineNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))- ) `HappyStk` happyRest}}}}}--happyReduce_68 = happyReduce 8# 9# happyReduction_68-happyReduction_68 (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 { happy_var_1 -> - case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> - case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> - case happyOut74 happy_x_4 of { (HappyWrap74 happy_var_4) -> - case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> - case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDef (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))- ) `HappyStk` happyRest}}}}}}--happyReduce_69 = happyReduce 7# 9# happyReduction_69-happyReduction_69 (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 { happy_var_1 -> - case happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> - case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> - case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> - case happyOut91 happy_x_7 of { (HappyWrap91 happy_var_7) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))- ) `HappyStk` happyRest}}}}}--happyReduce_70 = happyReduce 6# 9# happyReduction_70-happyReduction_70 (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 happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> - case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> - case happyOut74 happy_x_4 of { (HappyWrap74 happy_var_4) -> - case happyOut60 happy_x_5 of { (HappyWrap60 happy_var_5) -> - case happyOut61 happy_x_6 of { (HappyWrap61 happy_var_6) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandData (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5) (snd happy_var_6))- ) `HappyStk` happyRest}}}}}}--happyReduce_71 = happyReduce 5# 9# happyReduction_71-happyReduction_71 (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 happyOut52 happy_x_2 of { (HappyWrap52 happy_var_2) -> - case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> - case happyOut60 happy_x_4 of { (HappyWrap60 happy_var_4) -> - case happyOut61 happy_x_5 of { (HappyWrap61 happy_var_5) -> - happyIn56- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDataNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5))- ) `HappyStk` happyRest}}}}}--happyReduce_72 = happySpecReduce_0 10# happyReduction_72-happyReduction_72 = happyIn57- ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, [])- )--happyReduce_73 = happySpecReduce_3 10# happyReduction_73-happyReduction_73 happy_x_3- happy_x_2- happy_x_1- = case happyOut56 happy_x_1 of { (HappyWrap56 happy_var_1) -> - case happyOut57 happy_x_3 of { (HappyWrap57 happy_var_3) -> - happyIn57- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_74 = happyReduce 4# 11# happyReduction_74-happyReduction_74 (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 happyOut53 happy_x_3 of { (HappyWrap53 happy_var_3) -> - happyIn58- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DeclUsedVars (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))- ) `HappyStk` happyRest}}--happyReduce_75 = happySpecReduce_0 11# happyReduction_75-happyReduction_75 = happyIn58- ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.noDeclUsedVars Language.Rzk.Syntax.Abs.BNFC'NoPosition)- )--happyReduce_76 = happySpecReduce_0 12# happyReduction_76-happyReduction_76 = happyIn59- ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoSectionName Language.Rzk.Syntax.Abs.BNFC'NoPosition)- )--happyReduce_77 = happySpecReduce_1 12# happyReduction_77-happyReduction_77 happy_x_1- = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> - happyIn59- ((fst happy_var_1, Language.Rzk.Syntax.Abs.SomeSectionName (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_78 = happySpecReduce_2 13# happyReduction_78-happyReduction_78 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - happyIn60- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.SomeDataSort (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_79 = happySpecReduce_0 13# happyReduction_79-happyReduction_79 = happyIn60- ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoDataSort Language.Rzk.Syntax.Abs.BNFC'NoPosition)- )--happyReduce_80 = happySpecReduce_3 14# happyReduction_80-happyReduction_80 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut63 happy_x_2 of { (HappyWrap63 happy_var_2) -> - case happyOut66 happy_x_3 of { (HappyWrap66 happy_var_3) -> - happyIn61- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.SomeDataBody (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))- )}}}--happyReduce_81 = happySpecReduce_0 14# happyReduction_81-happyReduction_81 = happyIn61- ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoDataBody Language.Rzk.Syntax.Abs.BNFC'NoPosition)- )--happyReduce_82 = happySpecReduce_3 15# happyReduction_82-happyReduction_82 happy_x_3- happy_x_2- happy_x_1- = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> - case happyOut74 happy_x_2 of { (HappyWrap74 happy_var_2) -> - case happyOut64 happy_x_3 of { (HappyWrap64 happy_var_3) -> - happyIn62- ((fst happy_var_1, Language.Rzk.Syntax.Abs.Constructor (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_3))- )}}}--happyReduce_83 = happySpecReduce_2 15# happyReduction_83-happyReduction_83 happy_x_2- happy_x_1- = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> - case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> - happyIn62- ((fst happy_var_1, Language.Rzk.Syntax.Abs.constructorNoParams (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))- )}}--happyReduce_84 = happySpecReduce_1 16# happyReduction_84-happyReduction_84 happy_x_1- = case happyOut62 happy_x_1 of { (HappyWrap62 happy_var_1) -> - happyIn63- ((fst happy_var_1, (:[]) (snd happy_var_1))- )}--happyReduce_85 = happySpecReduce_3 16# happyReduction_85-happyReduction_85 happy_x_3- happy_x_2- happy_x_1- = case happyOut62 happy_x_1 of { (HappyWrap62 happy_var_1) -> - case happyOut63 happy_x_3 of { (HappyWrap63 happy_var_3) -> - happyIn63- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_86 = happySpecReduce_2 17# happyReduction_86-happyReduction_86 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - happyIn64- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.SomeConstructorType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_87 = happySpecReduce_0 17# happyReduction_87-happyReduction_87 = happyIn64- ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoConstructorType Language.Rzk.Syntax.Abs.BNFC'NoPosition)- )--happyReduce_88 = happyReduce 5# 18# 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)- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut52 happy_x_3 of { (HappyWrap52 happy_var_3) -> - case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> - happyIn65- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DataElim (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5))- ) `HappyStk` happyRest}}}--happyReduce_89 = happyReduce 5# 18# happyReduction_89-happyReduction_89 (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 happyOut52 happy_x_3 of { (HappyWrap52 happy_var_3) -> - case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> - happyIn65- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DataCompute (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5))- ) `HappyStk` happyRest}}}--happyReduce_90 = happySpecReduce_0 19# happyReduction_90-happyReduction_90 = happyIn66- ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, [])- )--happyReduce_91 = happySpecReduce_2 19# happyReduction_91-happyReduction_91 happy_x_2- happy_x_1- = case happyOut65 happy_x_1 of { (HappyWrap65 happy_var_1) -> - case happyOut66 happy_x_2 of { (HappyWrap66 happy_var_2) -> - happyIn66- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))- )}}--happyReduce_92 = happyReduce 4# 20# happyReduction_92-happyReduction_92 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> - case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - happyIn67- ((fst happy_var_1, Language.Rzk.Syntax.Abs.MatchBranch (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_93 = happySpecReduce_3 20# happyReduction_93-happyReduction_93 happy_x_3- happy_x_2- happy_x_1- = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> - case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> - happyIn67- ((fst happy_var_1, Language.Rzk.Syntax.Abs.matchBranchNoParams (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_94 = happyReduce 4# 20# happyReduction_94-happyReduction_94 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> - case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - happyIn67- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_MatchBranch (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_95 = happySpecReduce_3 20# happyReduction_95-happyReduction_95 happy_x_3- happy_x_2- happy_x_1- = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> - case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> - happyIn67- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_matchBranchNoParams (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_96 = happySpecReduce_1 21# happyReduction_96-happyReduction_96 happy_x_1- = case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> - happyIn68- ((fst happy_var_1, (:[]) (snd happy_var_1))- )}--happyReduce_97 = happySpecReduce_3 21# happyReduction_97-happyReduction_97 happy_x_3- happy_x_2- happy_x_1- = case happyOut67 happy_x_1 of { (HappyWrap67 happy_var_1) -> - case happyOut68 happy_x_3 of { (HappyWrap68 happy_var_3) -> - happyIn68- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_98 = happySpecReduce_1 22# happyReduction_98-happyReduction_98 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn69- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_99 = happySpecReduce_1 22# happyReduction_99-happyReduction_99 happy_x_1- = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> - happyIn69- ((fst happy_var_1, Language.Rzk.Syntax.Abs.PatternVar (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_100 = happyReduce 5# 22# happyReduction_100-happyReduction_100 (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 happyOut69 happy_x_2 of { (HappyWrap69 happy_var_2) -> - case happyOut69 happy_x_4 of { (HappyWrap69 happy_var_4) -> - happyIn69- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternPair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_101 = happyReduce 7# 22# happyReduction_101-happyReduction_101 (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 { happy_var_1 -> - case happyOut69 happy_x_2 of { (HappyWrap69 happy_var_2) -> - case happyOut69 happy_x_4 of { (HappyWrap69 happy_var_4) -> - case happyOut72 happy_x_6 of { (HappyWrap72 happy_var_6) -> - happyIn69- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))- ) `HappyStk` happyRest}}}}--happyReduce_102 = happySpecReduce_1 23# happyReduction_102-happyReduction_102 happy_x_1- = case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> - happyIn70- ((fst happy_var_1, (:[]) (snd happy_var_1))- )}--happyReduce_103 = happySpecReduce_2 23# happyReduction_103-happyReduction_103 happy_x_2- happy_x_1- = case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> - case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> - happyIn70- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))- )}}--happyReduce_104 = happySpecReduce_1 24# happyReduction_104-happyReduction_104 happy_x_1- = case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> - happyIn71- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_105 = happySpecReduce_1 25# happyReduction_105-happyReduction_105 happy_x_1- = case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> - happyIn72- ((fst happy_var_1, (:[]) (snd happy_var_1))- )}--happyReduce_106 = happySpecReduce_3 25# happyReduction_106-happyReduction_106 happy_x_3- happy_x_2- happy_x_1- = case happyOut71 happy_x_1 of { (HappyWrap71 happy_var_1) -> - case happyOut72 happy_x_3 of { (HappyWrap72 happy_var_3) -> - happyIn72- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_107 = happySpecReduce_1 26# happyReduction_107-happyReduction_107 happy_x_1- = case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> - happyIn73- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamPattern (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_108 = happyReduce 5# 26# happyReduction_108-happyReduction_108 (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 happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - happyIn73- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_109 = happyReduce 7# 26# happyReduction_109-happyReduction_109 (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 { happy_var_1 -> - case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> - happyIn73- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))- ) `HappyStk` happyRest}}}}--happyReduce_110 = happyReduce 5# 26# happyReduction_110-happyReduction_110 (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 happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> - case happyOut83 happy_x_3 of { (HappyWrap83 happy_var_3) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - happyIn73- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4))- ) `HappyStk` happyRest}}}}--happyReduce_111 = happyReduce 7# 26# happyReduction_111-happyReduction_111 (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 { happy_var_1 -> - case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> - case happyOut83 happy_x_3 of { (HappyWrap83 happy_var_3) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> - happyIn73- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternModalShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))- ) `HappyStk` happyRest}}}}}--happyReduce_112 = happySpecReduce_1 27# happyReduction_112-happyReduction_112 happy_x_1- = case happyOut73 happy_x_1 of { (HappyWrap73 happy_var_1) -> - happyIn74- ((fst happy_var_1, (:[]) (snd happy_var_1))- )}--happyReduce_113 = happySpecReduce_2 27# happyReduction_113-happyReduction_113 happy_x_2- happy_x_1- = case happyOut73 happy_x_1 of { (HappyWrap73 happy_var_1) -> - case happyOut74 happy_x_2 of { (HappyWrap74 happy_var_2) -> - happyIn74- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))- )}}--happyReduce_114 = happySpecReduce_1 28# happyReduction_114-happyReduction_114 happy_x_1- = case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> - happyIn75- ((fst happy_var_1, Language.Rzk.Syntax.Abs.BindPattern (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_115 = happySpecReduce_3 28# happyReduction_115-happyReduction_115 happy_x_3- happy_x_2- happy_x_1- = case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> - case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> - happyIn75- ((fst happy_var_1, Language.Rzk.Syntax.Abs.BindPatternType (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_116 = happySpecReduce_1 29# happyReduction_116-happyReduction_116 happy_x_1- = case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> - happyIn76- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamType (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_117 = happyReduce 5# 29# happyReduction_117-happyReduction_117 (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 happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - happyIn76- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_118 = happyReduce 7# 29# happyReduction_118-happyReduction_118 (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 { happy_var_1 -> - case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> - happyIn76- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))- ) `HappyStk` happyRest}}}}--happyReduce_119 = happyReduce 5# 29# happyReduction_119-happyReduction_119 (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 happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - case happyOut83 happy_x_3 of { (HappyWrap83 happy_var_3) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - happyIn76- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4))- ) `HappyStk` happyRest}}}}--happyReduce_120 = happyReduce 7# 29# happyReduction_120-happyReduction_120 (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 { happy_var_1 -> - case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - case happyOut83 happy_x_3 of { (HappyWrap83 happy_var_3) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> - happyIn76- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermModalShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))- ) `HappyStk` happyRest}}}}}--happyReduce_121 = happySpecReduce_3 30# happyReduction_121-happyReduction_121 happy_x_3- happy_x_2- happy_x_1- = case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> - case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> - happyIn77- ((fst happy_var_1, Language.Rzk.Syntax.Abs.SigmaParam (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_122 = happySpecReduce_3 30# happyReduction_122-happyReduction_122 happy_x_3- happy_x_2- happy_x_1- = case happyOut69 happy_x_1 of { (HappyWrap69 happy_var_1) -> - case happyOut83 happy_x_2 of { (HappyWrap83 happy_var_2) -> - case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> - happyIn77- ((fst happy_var_1, Language.Rzk.Syntax.Abs.SigmaParamModal (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_3))- )}}}--happyReduce_123 = happySpecReduce_1 31# happyReduction_123-happyReduction_123 happy_x_1- = case happyOut77 happy_x_1 of { (HappyWrap77 happy_var_1) -> - happyIn78- ((fst happy_var_1, (:[]) (snd happy_var_1))- )}--happyReduce_124 = happySpecReduce_3 31# happyReduction_124-happyReduction_124 happy_x_3- happy_x_2- happy_x_1- = case happyOut77 happy_x_1 of { (HappyWrap77 happy_var_1) -> - case happyOut78 happy_x_3 of { (HappyWrap78 happy_var_3) -> - happyIn78- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_125 = happySpecReduce_3 32# happyReduction_125-happyReduction_125 happy_x_3- happy_x_2- happy_x_1- = case happyOut91 happy_x_1 of { (HappyWrap91 happy_var_1) -> - case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> - happyIn79- ((fst happy_var_1, Language.Rzk.Syntax.Abs.Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_126 = happySpecReduce_3 32# happyReduction_126-happyReduction_126 happy_x_3- happy_x_2- happy_x_1- = case happyOut91 happy_x_1 of { (HappyWrap91 happy_var_1) -> - case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> - happyIn79- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_127 = happySpecReduce_1 33# happyReduction_127-happyReduction_127 happy_x_1- = case happyOut79 happy_x_1 of { (HappyWrap79 happy_var_1) -> - happyIn80- ((fst happy_var_1, (:[]) (snd happy_var_1))- )}--happyReduce_128 = happySpecReduce_3 33# happyReduction_128-happyReduction_128 happy_x_3- happy_x_2- happy_x_1- = case happyOut79 happy_x_1 of { (HappyWrap79 happy_var_1) -> - case happyOut80 happy_x_3 of { (HappyWrap80 happy_var_3) -> - happyIn80- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_129 = happySpecReduce_1 34# happyReduction_129-happyReduction_129 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn81- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_130 = happySpecReduce_1 34# happyReduction_130-happyReduction_130 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn81- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_131 = happySpecReduce_1 34# happyReduction_131-happyReduction_131 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn81- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_132 = happySpecReduce_1 34# happyReduction_132-happyReduction_132 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn81- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_133 = happySpecReduce_1 34# happyReduction_133-happyReduction_133 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn81- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_134 = happySpecReduce_1 34# happyReduction_134-happyReduction_134 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn81- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_135 = happySpecReduce_1 34# happyReduction_135-happyReduction_135 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn81- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Id (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_136 = happySpecReduce_1 35# happyReduction_136-happyReduction_136 happy_x_1- = case happyOut81 happy_x_1 of { (HappyWrap81 happy_var_1) -> - happyIn82- ((fst happy_var_1, Language.Rzk.Syntax.Abs.Single (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_137 = happySpecReduce_3 35# happyReduction_137-happyReduction_137 happy_x_3- happy_x_2- happy_x_1- = case happyOut81 happy_x_1 of { (HappyWrap81 happy_var_1) -> - case happyOut81 happy_x_3 of { (HappyWrap81 happy_var_3) -> - happyIn82- ((fst happy_var_1, Language.Rzk.Syntax.Abs.Comp (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_138 = happySpecReduce_1 36# happyReduction_138-happyReduction_138 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn83- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonFlat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_139 = happySpecReduce_1 36# happyReduction_139-happyReduction_139 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn83- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonSharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_140 = happySpecReduce_1 36# happyReduction_140-happyReduction_140 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn83- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonOp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_141 = happySpecReduce_1 36# happyReduction_141-happyReduction_141 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn83- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonId (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_142 = happySpecReduce_1 36# happyReduction_142-happyReduction_142 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn83- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonFlat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_143 = happySpecReduce_1 36# happyReduction_143-happyReduction_143 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn83- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonSharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_144 = happySpecReduce_1 36# happyReduction_144-happyReduction_144 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn83- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonOp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_145 = happySpecReduce_1 37# happyReduction_145-happyReduction_145 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Universe (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_146 = happySpecReduce_1 37# happyReduction_146-happyReduction_146 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseCube (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_147 = happySpecReduce_1 37# happyReduction_147-happyReduction_147 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseTope (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_148 = happySpecReduce_1 37# happyReduction_148-happyReduction_148 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_149 = happySpecReduce_1 37# happyReduction_149-happyReduction_149 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_150 = happySpecReduce_1 37# happyReduction_150-happyReduction_150 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_151 = happySpecReduce_1 37# happyReduction_151-happyReduction_151 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_152 = happySpecReduce_1 37# happyReduction_152-happyReduction_152 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_153 = happySpecReduce_1 37# happyReduction_153-happyReduction_153 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_154 = happySpecReduce_1 37# happyReduction_154-happyReduction_154 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_155 = happySpecReduce_1 37# happyReduction_155-happyReduction_155 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_156 = happySpecReduce_1 37# happyReduction_156-happyReduction_156 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_157 = happySpecReduce_1 37# happyReduction_157-happyReduction_157 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_158 = happySpecReduce_1 37# happyReduction_158-happyReduction_158 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_159 = happyReduce 4# 37# happyReduction_159-happyReduction_159 (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 happyOut80 happy_x_3 of { (HappyWrap80 happy_var_3) -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecOr (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))- ) `HappyStk` happyRest}}--happyReduce_160 = happySpecReduce_1 37# happyReduction_160-happyReduction_160 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_161 = happyReduce 5# 37# happyReduction_161-happyReduction_161 (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 happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Pair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_162 = happyReduce 7# 37# happyReduction_162-happyReduction_162 (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 { happy_var_1 -> - case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - case happyOut92 happy_x_6 of { (HappyWrap92 happy_var_6) -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Tuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))- ) `HappyStk` happyRest}}}}--happyReduce_163 = happySpecReduce_3 37# happyReduction_163-happyReduction_163 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut81 happy_x_2 of { (HappyWrap81 happy_var_2) -> - case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModApp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))- )}}}--happyReduce_164 = happySpecReduce_2 37# happyReduction_164-happyReduction_164 happy_x_2- happy_x_1- = case happyOut81 happy_x_1 of { (HappyWrap81 happy_var_1) -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - happyIn84- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ModType (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))- )}}--happyReduce_165 = happySpecReduce_1 37# happyReduction_165-happyReduction_165 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Unit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_166 = happySpecReduce_1 37# happyReduction_166-happyReduction_166 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Refl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_167 = happySpecReduce_3 37# happyReduction_167-happyReduction_167 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTerm (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_168 = happyReduce 5# 37# happyReduction_168-happyReduction_168 (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 happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_169 = happyReduce 14# 37# happyReduction_169-happyReduction_169 (happy_x_14 `HappyStk`- happy_x_13 `HappyStk`- happy_x_12 `HappyStk`- 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 { happy_var_1 -> - case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> - case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> - case happyOut91 happy_x_7 of { (HappyWrap91 happy_var_7) -> - case happyOut91 happy_x_9 of { (HappyWrap91 happy_var_9) -> - case happyOut91 happy_x_11 of { (HappyWrap91 happy_var_11) -> - case happyOut91 happy_x_13 of { (HappyWrap91 happy_var_13) -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.IdJ (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9) (snd happy_var_11) (snd happy_var_13))- ) `HappyStk` happyRest}}}}}}}--happyReduce_170 = happyReduce 5# 37# happyReduction_170-happyReduction_170 (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 happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - case happyOut68 happy_x_4 of { (HappyWrap68 happy_var_4) -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Match (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_171 = happyReduce 7# 37# happyReduction_171-happyReduction_171 (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 { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - case happyOut84 happy_x_4 of { (HappyWrap84 happy_var_4) -> - case happyOut68 happy_x_6 of { (HappyWrap68 happy_var_6) -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.MatchInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))- ) `HappyStk` happyRest}}}}--happyReduce_172 = happySpecReduce_1 37# happyReduction_172-happyReduction_172 happy_x_1- = case happyOut51 happy_x_1 of { (HappyWrap51 happy_var_1) -> - happyIn84- ((fst happy_var_1, Language.Rzk.Syntax.Abs.Hole (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_173 = happySpecReduce_1 37# happyReduction_173-happyReduction_173 happy_x_1- = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> - happyIn84- ((fst happy_var_1, Language.Rzk.Syntax.Abs.Var (fst happy_var_1) (snd happy_var_1))- )}--happyReduce_174 = happySpecReduce_3 37# happyReduction_174-happyReduction_174 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut91 happy_x_2 of { (HappyWrap91 happy_var_2) -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (snd happy_var_2))- )}}--happyReduce_175 = happySpecReduce_1 37# happyReduction_175-happyReduction_175 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_176 = happySpecReduce_1 37# happyReduction_176-happyReduction_176 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_177 = happySpecReduce_1 37# happyReduction_177-happyReduction_177 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_178 = happySpecReduce_1 37# happyReduction_178-happyReduction_178 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_179 = happySpecReduce_1 37# happyReduction_179-happyReduction_179 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_180 = happySpecReduce_1 37# happyReduction_180-happyReduction_180 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_181 = happySpecReduce_1 37# happyReduction_181-happyReduction_181 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_182 = happySpecReduce_1 37# happyReduction_182-happyReduction_182 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn84- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))- )}--happyReduce_183 = happySpecReduce_3 38# happyReduction_183-happyReduction_183 happy_x_3- happy_x_2- happy_x_1- = case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> - case happyOut89 happy_x_3 of { (HappyWrap89 happy_var_3) -> - happyIn85- ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_184 = happySpecReduce_3 38# happyReduction_184-happyReduction_184 happy_x_3- happy_x_2- happy_x_1- = case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> - case happyOut89 happy_x_3 of { (HappyWrap89 happy_var_3) -> - happyIn85- ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeSup (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_185 = happySpecReduce_3 38# happyReduction_185-happyReduction_185 happy_x_3- happy_x_2- happy_x_1- = case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> - case happyOut89 happy_x_3 of { (HappyWrap89 happy_var_3) -> - happyIn85- ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeInf (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_186 = happySpecReduce_1 38# happyReduction_186-happyReduction_186 happy_x_1- = case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> - happyIn85- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_187 = happySpecReduce_3 38# happyReduction_187-happyReduction_187 happy_x_3- happy_x_2- happy_x_1- = case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> - case happyOut89 happy_x_3 of { (HappyWrap89 happy_var_3) -> - happyIn85- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_188 = happySpecReduce_3 39# happyReduction_188-happyReduction_188 happy_x_3- happy_x_2- happy_x_1- = case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> - case happyOut85 happy_x_3 of { (HappyWrap85 happy_var_3) -> - happyIn86- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_189 = happySpecReduce_3 39# happyReduction_189-happyReduction_189 happy_x_3- happy_x_2- happy_x_1- = case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> - case happyOut85 happy_x_3 of { (HappyWrap85 happy_var_3) -> - happyIn86- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_190 = happySpecReduce_1 39# happyReduction_190-happyReduction_190 happy_x_1- = case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> - happyIn86- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_191 = happySpecReduce_3 39# happyReduction_191-happyReduction_191 happy_x_3- happy_x_2- happy_x_1- = case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> - case happyOut85 happy_x_3 of { (HappyWrap85 happy_var_3) -> - happyIn86- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_192 = happySpecReduce_3 39# happyReduction_192-happyReduction_192 happy_x_3- happy_x_2- happy_x_1- = case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> - case happyOut85 happy_x_3 of { (HappyWrap85 happy_var_3) -> - happyIn86- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_193 = happySpecReduce_3 40# happyReduction_193-happyReduction_193 happy_x_3- happy_x_2- happy_x_1- = case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> - case happyOut87 happy_x_3 of { (HappyWrap87 happy_var_3) -> - happyIn87- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_194 = happySpecReduce_1 40# happyReduction_194-happyReduction_194 happy_x_1- = case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> - happyIn87- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_195 = happySpecReduce_3 40# happyReduction_195-happyReduction_195 happy_x_3- happy_x_2- happy_x_1- = case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> - case happyOut87 happy_x_3 of { (HappyWrap87 happy_var_3) -> - happyIn87- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_196 = happySpecReduce_3 41# happyReduction_196-happyReduction_196 happy_x_3- happy_x_2- happy_x_1- = case happyOut87 happy_x_1 of { (HappyWrap87 happy_var_1) -> - case happyOut88 happy_x_3 of { (HappyWrap88 happy_var_3) -> - happyIn88- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_197 = happySpecReduce_1 41# happyReduction_197-happyReduction_197 happy_x_1- = case happyOut87 happy_x_1 of { (HappyWrap87 happy_var_1) -> - happyIn88- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_198 = happySpecReduce_3 41# happyReduction_198-happyReduction_198 happy_x_3- happy_x_2- happy_x_1- = case happyOut87 happy_x_1 of { (HappyWrap87 happy_var_1) -> - case happyOut88 happy_x_3 of { (HappyWrap88 happy_var_3) -> - happyIn88- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_199 = happySpecReduce_2 42# happyReduction_199-happyReduction_199 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_200 = happySpecReduce_2 42# happyReduction_200-happyReduction_200 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_201 = happySpecReduce_2 42# happyReduction_201-happyReduction_201 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_202 = happySpecReduce_2 42# happyReduction_202-happyReduction_202 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_203 = happySpecReduce_2 42# happyReduction_203-happyReduction_203 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_204 = happySpecReduce_2 42# happyReduction_204-happyReduction_204 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_205 = happySpecReduce_2 42# happyReduction_205-happyReduction_205 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_206 = happySpecReduce_2 42# happyReduction_206-happyReduction_206 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_207 = happyReduce 4# 42# happyReduction_207-happyReduction_207 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> - case happyOut80 happy_x_3 of { (HappyWrap80 happy_var_3) -> - happyIn89- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeRestricted (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- ) `HappyStk` happyRest}}--happyReduce_208 = happySpecReduce_2 42# happyReduction_208-happyReduction_208 happy_x_2- happy_x_1- = case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - happyIn89- ((fst happy_var_1, Language.Rzk.Syntax.Abs.App (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))- )}}--happyReduce_209 = happySpecReduce_3 42# happyReduction_209-happyReduction_209 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> - case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModExtract (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))- )}}}--happyReduce_210 = happySpecReduce_2 42# happyReduction_210-happyReduction_210 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_211 = happySpecReduce_2 42# happyReduction_211-happyReduction_211 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_212 = happySpecReduce_1 42# happyReduction_212-happyReduction_212 happy_x_1- = case happyOut84 happy_x_1 of { (HappyWrap84 happy_var_1) -> - happyIn89- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_213 = happySpecReduce_3 42# happyReduction_213-happyReduction_213 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeSup (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))- )}}}--happyReduce_214 = happySpecReduce_3 42# happyReduction_214-happyReduction_214 happy_x_3- happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeInf (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))- )}}}--happyReduce_215 = happySpecReduce_2 42# happyReduction_215-happyReduction_215 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_216 = happySpecReduce_2 42# happyReduction_216-happyReduction_216 happy_x_2- happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> - happyIn89- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))- )}}--happyReduce_217 = happySpecReduce_3 43# happyReduction_217-happyReduction_217 happy_x_3- happy_x_2- happy_x_1- = case happyOut76 happy_x_1 of { (HappyWrap76 happy_var_1) -> - case happyOut90 happy_x_3 of { (HappyWrap90 happy_var_3) -> - happyIn90- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_218 = happyReduce 8# 43# happyReduction_218-happyReduction_218 (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 { happy_var_1 -> - case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> - case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> - case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))- ) `HappyStk` happyRest}}}}--happyReduce_219 = happyReduce 8# 43# happyReduction_219-happyReduction_219 (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 { happy_var_1 -> - case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> - case happyOut83 happy_x_4 of { (HappyWrap83 happy_var_4) -> - case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> - case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5) (snd happy_var_8))- ) `HappyStk` happyRest}}}}}--happyReduce_220 = happyReduce 8# 43# happyReduction_220-happyReduction_220 (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 { happy_var_1 -> - case happyOut77 happy_x_3 of { (HappyWrap77 happy_var_3) -> - case happyOut78 happy_x_5 of { (HappyWrap78 happy_var_5) -> - case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))- ) `HappyStk` happyRest}}}}--happyReduce_221 = happyReduce 5# 43# happyReduction_221-happyReduction_221 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut88 happy_x_1 of { (HappyWrap88 happy_var_1) -> - case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> - case happyOut88 happy_x_5 of { (HappyWrap88 happy_var_5) -> - happyIn90- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeId (fst happy_var_1) (snd happy_var_1) (snd happy_var_3) (snd happy_var_5))- ) `HappyStk` happyRest}}}--happyReduce_222 = happySpecReduce_3 43# happyReduction_222-happyReduction_222 happy_x_3- happy_x_2- happy_x_1- = case happyOut88 happy_x_1 of { (HappyWrap88 happy_var_1) -> - case happyOut88 happy_x_3 of { (HappyWrap88 happy_var_3) -> - happyIn90- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeIdSimple (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_223 = happyReduce 6# 43# happyReduction_223-happyReduction_223 (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 happyOut75 happy_x_2 of { (HappyWrap75 happy_var_2) -> - case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> - case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Let (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))- ) `HappyStk` happyRest}}}}--happyReduce_224 = happyReduce 4# 43# happyReduction_224-happyReduction_224 (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 happyOut74 happy_x_2 of { (HappyWrap74 happy_var_2) -> - case happyOut90 happy_x_4 of { (HappyWrap90 happy_var_4) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_225 = happyReduce 7# 43# happyReduction_225-happyReduction_225 (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 { happy_var_1 -> - case happyOut81 happy_x_2 of { (HappyWrap81 happy_var_2) -> - case happyOut75 happy_x_3 of { (HappyWrap75 happy_var_3) -> - case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> - case happyOut91 happy_x_7 of { (HappyWrap91 happy_var_7) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModBind (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))- ) `HappyStk` happyRest}}}}}--happyReduce_226 = happyReduce 8# 43# happyReduction_226-happyReduction_226 (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 { happy_var_1 -> - case happyOut81 happy_x_3 of { (HappyWrap81 happy_var_3) -> - case happyOut75 happy_x_4 of { (HappyWrap75 happy_var_4) -> - case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> - case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetMod (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))- ) `HappyStk` happyRest}}}}}--happyReduce_227 = happyReduce 9# 43# happyReduction_227-happyReduction_227 (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 { happy_var_1 -> - case happyOut81 happy_x_2 of { (HappyWrap81 happy_var_2) -> - case happyOut81 happy_x_4 of { (HappyWrap81 happy_var_4) -> - case happyOut75 happy_x_5 of { (HappyWrap75 happy_var_5) -> - case happyOut91 happy_x_7 of { (HappyWrap91 happy_var_7) -> - case happyOut91 happy_x_9 of { (HappyWrap91 happy_var_9) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModFramed (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9))- ) `HappyStk` happyRest}}}}}}--happyReduce_228 = happyReduce 9# 43# happyReduction_228-happyReduction_228 (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 { happy_var_1 -> - case happyOut81 happy_x_2 of { (HappyWrap81 happy_var_2) -> - case happyOut75 happy_x_3 of { (HappyWrap75 happy_var_3) -> - case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> - case happyOut91 happy_x_7 of { (HappyWrap91 happy_var_7) -> - case happyOut91 happy_x_9 of { (HappyWrap91 happy_var_9) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModBindInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9))- ) `HappyStk` happyRest}}}}}}--happyReduce_229 = happyReduce 10# 43# happyReduction_229-happyReduction_229 (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 { happy_var_1 -> - case happyOut81 happy_x_3 of { (HappyWrap81 happy_var_3) -> - case happyOut75 happy_x_4 of { (HappyWrap75 happy_var_4) -> - case happyOut91 happy_x_6 of { (HappyWrap91 happy_var_6) -> - case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> - case happyOut91 happy_x_10 of { (HappyWrap91 happy_var_10) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8) (snd happy_var_10))- ) `HappyStk` happyRest}}}}}}--happyReduce_230 = happyReduce 11# 43# happyReduction_230-happyReduction_230 (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 { happy_var_1 -> - case happyOut81 happy_x_2 of { (HappyWrap81 happy_var_2) -> - case happyOut81 happy_x_4 of { (HappyWrap81 happy_var_4) -> - case happyOut75 happy_x_5 of { (HappyWrap75 happy_var_5) -> - case happyOut91 happy_x_7 of { (HappyWrap91 happy_var_7) -> - case happyOut91 happy_x_9 of { (HappyWrap91 happy_var_9) -> - case happyOut91 happy_x_11 of { (HappyWrap91 happy_var_11) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModFramedInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9) (snd happy_var_11))- ) `HappyStk` happyRest}}}}}}}--happyReduce_231 = happySpecReduce_1 43# happyReduction_231-happyReduction_231 happy_x_1- = case happyOut88 happy_x_1 of { (HappyWrap88 happy_var_1) -> - happyIn90- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_232 = happySpecReduce_3 43# happyReduction_232-happyReduction_232 happy_x_3- happy_x_2- happy_x_1- = case happyOut76 happy_x_1 of { (HappyWrap76 happy_var_1) -> - case happyOut90 happy_x_3 of { (HappyWrap90 happy_var_3) -> - happyIn90- ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_233 = happyReduce 8# 43# happyReduction_233-happyReduction_233 (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 { happy_var_1 -> - case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> - case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> - case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))- ) `HappyStk` happyRest}}}}--happyReduce_234 = happyReduce 8# 43# happyReduction_234-happyReduction_234 (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 { happy_var_1 -> - case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> - case happyOut83 happy_x_4 of { (HappyWrap83 happy_var_4) -> - case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> - case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5) (snd happy_var_8))- ) `HappyStk` happyRest}}}}}--happyReduce_235 = happyReduce 8# 43# happyReduction_235-happyReduction_235 (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 { happy_var_1 -> - case happyOut77 happy_x_3 of { (HappyWrap77 happy_var_3) -> - case happyOut78 happy_x_5 of { (HappyWrap78 happy_var_5) -> - case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))- ) `HappyStk` happyRest}}}}--happyReduce_236 = happyReduce 4# 43# happyReduction_236-happyReduction_236 (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 happyOut74 happy_x_2 of { (HappyWrap74 happy_var_2) -> - case happyOut90 happy_x_4 of { (HappyWrap90 happy_var_4) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))- ) `HappyStk` happyRest}}}--happyReduce_237 = happyReduce 8# 43# happyReduction_237-happyReduction_237 (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 { happy_var_1 -> - case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> - case happyOut91 happy_x_5 of { (HappyWrap91 happy_var_5) -> - case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))- ) `HappyStk` happyRest}}}}--happyReduce_238 = happyReduce 8# 43# happyReduction_238-happyReduction_238 (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 { happy_var_1 -> - case happyOut77 happy_x_3 of { (HappyWrap77 happy_var_3) -> - case happyOut78 happy_x_5 of { (HappyWrap78 happy_var_5) -> - case happyOut90 happy_x_8 of { (HappyWrap90 happy_var_8) -> - happyIn90- ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaTupleAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))- ) `HappyStk` happyRest}}}}--happyReduce_239 = happySpecReduce_3 44# happyReduction_239-happyReduction_239 happy_x_3- happy_x_2- happy_x_1- = case happyOut88 happy_x_1 of { (HappyWrap88 happy_var_1) -> - case happyOut90 happy_x_3 of { (HappyWrap90 happy_var_3) -> - happyIn91- ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeAsc (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))- )}}--happyReduce_240 = happySpecReduce_1 44# happyReduction_240-happyReduction_240 happy_x_1- = case happyOut90 happy_x_1 of { (HappyWrap90 happy_var_1) -> - happyIn91- ((fst happy_var_1, (snd happy_var_1))- )}--happyReduce_241 = happySpecReduce_1 45# happyReduction_241-happyReduction_241 happy_x_1- = case happyOut91 happy_x_1 of { (HappyWrap91 happy_var_1) -> - happyIn92- ((fst happy_var_1, (:[]) (snd happy_var_1))- )}--happyReduce_242 = happySpecReduce_3 45# happyReduction_242-happyReduction_242 happy_x_3- happy_x_2- happy_x_1- = case happyOut91 happy_x_1 of { (HappyWrap91 happy_var_1) -> - case happyOut92 happy_x_3 of { (HappyWrap92 happy_var_3) -> - happyIn92- ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))- )}}--happyTerminalToTok term = case term of {- PT _ (TS _ 1) -> 2#;- PT _ (TS _ 2) -> 3#;- PT _ (TS _ 3) -> 4#;- PT _ (TS _ 4) -> 5#;- PT _ (TS _ 5) -> 6#;- PT _ (TS _ 6) -> 7#;- PT _ (TS _ 7) -> 8#;- PT _ (TS _ 8) -> 9#;- PT _ (TS _ 9) -> 10#;- PT _ (TS _ 10) -> 11#;- PT _ (TS _ 11) -> 12#;- PT _ (TS _ 12) -> 13#;- PT _ (TS _ 13) -> 14#;- PT _ (TS _ 14) -> 15#;- PT _ (TS _ 15) -> 16#;- PT _ (TS _ 16) -> 17#;- PT _ (TS _ 17) -> 18#;- PT _ (TS _ 18) -> 19#;- PT _ (TS _ 19) -> 20#;- PT _ (TS _ 20) -> 21#;- PT _ (TS _ 21) -> 22#;- PT _ (TS _ 22) -> 23#;- PT _ (TS _ 23) -> 24#;- PT _ (TS _ 24) -> 25#;- PT _ (TS _ 25) -> 26#;- PT _ (TS _ 26) -> 27#;- PT _ (TS _ 27) -> 28#;- PT _ (TS _ 28) -> 29#;- PT _ (TS _ 29) -> 30#;- PT _ (TS _ 30) -> 31#;- PT _ (TS _ 31) -> 32#;- PT _ (TS _ 32) -> 33#;- PT _ (TS _ 33) -> 34#;- PT _ (TS _ 34) -> 35#;- PT _ (TS _ 35) -> 36#;- PT _ (TS _ 36) -> 37#;- PT _ (TS _ 37) -> 38#;- PT _ (TS _ 38) -> 39#;- PT _ (TS _ 39) -> 40#;- PT _ (TS _ 40) -> 41#;- PT _ (TS _ 41) -> 42#;- PT _ (TS _ 42) -> 43#;- PT _ (TS _ 43) -> 44#;- PT _ (TS _ 44) -> 45#;- PT _ (TS _ 45) -> 46#;- PT _ (TS _ 46) -> 47#;- PT _ (TS _ 47) -> 48#;- PT _ (TS _ 48) -> 49#;- PT _ (TS _ 49) -> 50#;- PT _ (TS _ 50) -> 51#;- PT _ (TS _ 51) -> 52#;- PT _ (TS _ 52) -> 53#;- PT _ (TS _ 53) -> 54#;- PT _ (TS _ 54) -> 55#;- PT _ (TS _ 55) -> 56#;- PT _ (TS _ 56) -> 57#;- PT _ (TS _ 57) -> 58#;- PT _ (TS _ 58) -> 59#;- PT _ (TS _ 59) -> 60#;- PT _ (TS _ 60) -> 61#;- PT _ (TS _ 61) -> 62#;- PT _ (TS _ 62) -> 63#;- PT _ (TS _ 63) -> 64#;- PT _ (TS _ 64) -> 65#;- PT _ (TS _ 65) -> 66#;- PT _ (TS _ 66) -> 67#;- PT _ (TS _ 67) -> 68#;- PT _ (TS _ 68) -> 69#;- PT _ (TS _ 69) -> 70#;- PT _ (TS _ 70) -> 71#;- PT _ (TS _ 71) -> 72#;- PT _ (TS _ 72) -> 73#;- PT _ (TS _ 73) -> 74#;- PT _ (TS _ 74) -> 75#;- PT _ (TS _ 75) -> 76#;- PT _ (TS _ 76) -> 77#;- PT _ (TS _ 77) -> 78#;- PT _ (TS _ 78) -> 79#;- PT _ (TS _ 79) -> 80#;- PT _ (TS _ 80) -> 81#;- PT _ (TS _ 81) -> 82#;- PT _ (TS _ 82) -> 83#;- PT _ (TS _ 83) -> 84#;- PT _ (TS _ 84) -> 85#;- PT _ (TS _ 85) -> 86#;- PT _ (TS _ 86) -> 87#;- PT _ (TS _ 87) -> 88#;- PT _ (TS _ 88) -> 89#;- PT _ (TS _ 89) -> 90#;- PT _ (TS _ 90) -> 91#;- PT _ (TS _ 91) -> 92#;- PT _ (TS _ 92) -> 93#;- PT _ (TS _ 93) -> 94#;- PT _ (TS _ 94) -> 95#;- PT _ (TS _ 95) -> 96#;- PT _ (TS _ 96) -> 97#;- PT _ (TS _ 97) -> 98#;- PT _ (TS _ 98) -> 99#;- PT _ (TS _ 99) -> 100#;- PT _ (TS _ 100) -> 101#;- PT _ (TS _ 101) -> 102#;- PT _ (TS _ 102) -> 103#;- PT _ (TS _ 103) -> 104#;- PT _ (TS _ 104) -> 105#;- PT _ (TS _ 105) -> 106#;- PT _ (TS _ 106) -> 107#;- PT _ (TS _ 107) -> 108#;- PT _ (TS _ 108) -> 109#;- PT _ (TS _ 109) -> 110#;- PT _ (TS _ 110) -> 111#;- PT _ (TS _ 111) -> 112#;- PT _ (TS _ 112) -> 113#;- PT _ (TS _ 113) -> 114#;- PT _ (TS _ 114) -> 115#;- PT _ (TS _ 115) -> 116#;- PT _ (TS _ 116) -> 117#;- PT _ (TS _ 117) -> 118#;- PT _ (TS _ 118) -> 119#;- PT _ (TS _ 119) -> 120#;- PT _ (TL _) -> 121#;- PT _ (T_VarIdentToken _) -> 122#;- PT _ (T_HoleIdentToken _) -> 123#;- _ -> -1#;- }-{-# NOINLINE happyTerminalToTok #-}--happyLex kend _kmore [] = kend notHappyAtAll []-happyLex _kend kmore (tk:tks) = kmore (happyTerminalToTok tk) tk tks-{-# INLINE happyLex #-}--happyNewToken action sts stk = happyLex (\tk -> happyDoAction 124# notHappyAtAll action sts stk) (\i tk -> happyDoAction i tk action sts stk)--happyReport 124# tk explist resume tks = happyReport' tks explist resume-happyReport _ tk explist resume tks = happyReport' (tk:tks) explist (\tks -> resume (Happy_Prelude.tail tks))---happyThen :: () => (Err a) -> (a -> (Err b)) -> (Err b)-happyThen = ((>>=))-happyReturn :: () => a -> (Err a)-happyReturn = (return)-happyThen1 m k tks = ((>>=)) m (\a -> k a tks)-happyFmap1 f m tks = happyThen (m tks) (\a -> happyReturn (f a))-happyReturn1 :: () => a -> b -> (Err a)-happyReturn1 = \a tks -> (return) a-happyReport' :: () => [(Token)] -> [Happy_Prelude.String] -> ([(Token)] -> (Err a)) -> (Err a)-happyReport' = (\tokens expected resume -> happyError tokens)--happyAbort :: () => [(Token)] -> (Err a)-happyAbort = Happy_Prelude.error "Called abort handler in non-resumptive parser"--pModule_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 0# tks) (\x -> happyReturn (let {(HappyWrap50 x') = happyOut50 x} in x'))--pHoleIdent_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 1# tks) (\x -> happyReturn (let {(HappyWrap51 x') = happyOut51 x} in x'))--pVarIdent_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 2# tks) (\x -> happyReturn (let {(HappyWrap52 x') = happyOut52 x} in x'))--pListVarIdent_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 3# tks) (\x -> happyReturn (let {(HappyWrap53 x') = happyOut53 x} in x'))--pLanguageDecl_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 4# tks) (\x -> happyReturn (let {(HappyWrap54 x') = happyOut54 x} in x'))--pLanguage_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 5# tks) (\x -> happyReturn (let {(HappyWrap55 x') = happyOut55 x} in x'))--pCommand_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 6# tks) (\x -> happyReturn (let {(HappyWrap56 x') = happyOut56 x} in x'))--pListCommand_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 7# tks) (\x -> happyReturn (let {(HappyWrap57 x') = happyOut57 x} in x'))--pDeclUsedVars_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 8# tks) (\x -> happyReturn (let {(HappyWrap58 x') = happyOut58 x} in x'))--pSectionName_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 9# tks) (\x -> happyReturn (let {(HappyWrap59 x') = happyOut59 x} in x'))--pDataSort_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 10# tks) (\x -> happyReturn (let {(HappyWrap60 x') = happyOut60 x} in x'))--pDataBody_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 11# tks) (\x -> happyReturn (let {(HappyWrap61 x') = happyOut61 x} in x'))--pConstructor_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 12# tks) (\x -> happyReturn (let {(HappyWrap62 x') = happyOut62 x} in x'))--pListConstructor_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 13# tks) (\x -> happyReturn (let {(HappyWrap63 x') = happyOut63 x} in x'))--pConstructorType_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 14# tks) (\x -> happyReturn (let {(HappyWrap64 x') = happyOut64 x} in x'))--pDataElim_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 15# tks) (\x -> happyReturn (let {(HappyWrap65 x') = happyOut65 x} in x'))--pListDataElim_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 16# tks) (\x -> happyReturn (let {(HappyWrap66 x') = happyOut66 x} in x'))--pMatchBranch_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 17# tks) (\x -> happyReturn (let {(HappyWrap67 x') = happyOut67 x} in x'))--pListMatchBranch_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 18# tks) (\x -> happyReturn (let {(HappyWrap68 x') = happyOut68 x} in x'))--pPattern_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 19# tks) (\x -> happyReturn (let {(HappyWrap69 x') = happyOut69 x} in x'))--pListPattern_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 20# tks) (\x -> happyReturn (let {(HappyWrap70 x') = happyOut70 x} in x'))--pPattern1_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 21# tks) (\x -> happyReturn (let {(HappyWrap71 x') = happyOut71 x} in x'))--pListPattern1_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 22# tks) (\x -> happyReturn (let {(HappyWrap72 x') = happyOut72 x} in x'))--pParam_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 23# tks) (\x -> happyReturn (let {(HappyWrap73 x') = happyOut73 x} in x'))--pListParam_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 24# tks) (\x -> happyReturn (let {(HappyWrap74 x') = happyOut74 x} in x'))--pBind_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 25# tks) (\x -> happyReturn (let {(HappyWrap75 x') = happyOut75 x} in x'))--pParamDecl_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 26# tks) (\x -> happyReturn (let {(HappyWrap76 x') = happyOut76 x} in x'))--pSigmaParam_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 27# tks) (\x -> happyReturn (let {(HappyWrap77 x') = happyOut77 x} in x'))--pListSigmaParam_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 28# tks) (\x -> happyReturn (let {(HappyWrap78 x') = happyOut78 x} in x'))--pRestriction_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 29# tks) (\x -> happyReturn (let {(HappyWrap79 x') = happyOut79 x} in x'))--pListRestriction_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 30# tks) (\x -> happyReturn (let {(HappyWrap80 x') = happyOut80 x} in x'))--pModality_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 31# tks) (\x -> happyReturn (let {(HappyWrap81 x') = happyOut81 x} in x'))--pModComp_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 32# tks) (\x -> happyReturn (let {(HappyWrap82 x') = happyOut82 x} in x'))--pModalColon_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 33# tks) (\x -> happyReturn (let {(HappyWrap83 x') = happyOut83 x} in x'))--pTerm7_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 34# tks) (\x -> happyReturn (let {(HappyWrap84 x') = happyOut84 x} in x'))--pTerm5_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 35# tks) (\x -> happyReturn (let {(HappyWrap85 x') = happyOut85 x} in x'))--pTerm4_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 36# tks) (\x -> happyReturn (let {(HappyWrap86 x') = happyOut86 x} in x'))--pTerm3_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 37# tks) (\x -> happyReturn (let {(HappyWrap87 x') = happyOut87 x} in x'))--pTerm2_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 38# tks) (\x -> happyReturn (let {(HappyWrap88 x') = happyOut88 x} in x'))--pTerm6_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 39# tks) (\x -> happyReturn (let {(HappyWrap89 x') = happyOut89 x} in x'))--pTerm1_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 40# tks) (\x -> happyReturn (let {(HappyWrap90 x') = happyOut90 x} in x'))--pTerm_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 41# tks) (\x -> happyReturn (let {(HappyWrap91 x') = happyOut91 x} in x'))--pListTerm_internal tks = happySomeParser where- happySomeParser = happyThen (happyDoParse 42# tks) (\x -> happyReturn (let {(HappyWrap92 x') = happyOut92 x} in x'))--happySeq = happyDontSeq---type Err = Either String--happyError :: [Token] -> Err a-happyError ts = Left $- "syntax error at " ++ tokenPos ts ++- case ts of- [] -> []- [Err _] -> " due to lexer error"- t:_ -> " before `" ++ (prToken t) ++ "'"--myLexer :: Data.Text.Text -> [Token]-myLexer = tokens---- Entrypoints--pModule :: [Token] -> Err Language.Rzk.Syntax.Abs.Module-pModule = fmap snd . pModule_internal--pHoleIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.HoleIdent-pHoleIdent = fmap snd . pHoleIdent_internal--pVarIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.VarIdent-pVarIdent = fmap snd . pVarIdent_internal--pListVarIdent :: [Token] -> Err [Language.Rzk.Syntax.Abs.VarIdent]-pListVarIdent = fmap snd . pListVarIdent_internal--pLanguageDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.LanguageDecl-pLanguageDecl = fmap snd . pLanguageDecl_internal--pLanguage :: [Token] -> Err Language.Rzk.Syntax.Abs.Language-pLanguage = fmap snd . pLanguage_internal--pCommand :: [Token] -> Err Language.Rzk.Syntax.Abs.Command-pCommand = fmap snd . pCommand_internal--pListCommand :: [Token] -> Err [Language.Rzk.Syntax.Abs.Command]-pListCommand = fmap snd . pListCommand_internal--pDeclUsedVars :: [Token] -> Err Language.Rzk.Syntax.Abs.DeclUsedVars-pDeclUsedVars = fmap snd . pDeclUsedVars_internal--pSectionName :: [Token] -> Err Language.Rzk.Syntax.Abs.SectionName-pSectionName = fmap snd . pSectionName_internal--pDataSort :: [Token] -> Err Language.Rzk.Syntax.Abs.DataSort-pDataSort = fmap snd . pDataSort_internal--pDataBody :: [Token] -> Err Language.Rzk.Syntax.Abs.DataBody-pDataBody = fmap snd . pDataBody_internal--pConstructor :: [Token] -> Err Language.Rzk.Syntax.Abs.Constructor-pConstructor = fmap snd . pConstructor_internal--pListConstructor :: [Token] -> Err [Language.Rzk.Syntax.Abs.Constructor]-pListConstructor = fmap snd . pListConstructor_internal--pConstructorType :: [Token] -> Err Language.Rzk.Syntax.Abs.ConstructorType-pConstructorType = fmap snd . pConstructorType_internal--pDataElim :: [Token] -> Err Language.Rzk.Syntax.Abs.DataElim-pDataElim = fmap snd . pDataElim_internal--pListDataElim :: [Token] -> Err [Language.Rzk.Syntax.Abs.DataElim]-pListDataElim = fmap snd . pListDataElim_internal--pMatchBranch :: [Token] -> Err Language.Rzk.Syntax.Abs.MatchBranch-pMatchBranch = fmap snd . pMatchBranch_internal--pListMatchBranch :: [Token] -> Err [Language.Rzk.Syntax.Abs.MatchBranch]-pListMatchBranch = fmap snd . pListMatchBranch_internal--pPattern :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern-pPattern = fmap snd . pPattern_internal--pListPattern :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]-pListPattern = fmap snd . pListPattern_internal--pPattern1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern-pPattern1 = fmap snd . pPattern1_internal--pListPattern1 :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]-pListPattern1 = fmap snd . pListPattern1_internal--pParam :: [Token] -> Err Language.Rzk.Syntax.Abs.Param-pParam = fmap snd . pParam_internal--pListParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.Param]-pListParam = fmap snd . pListParam_internal--pBind :: [Token] -> Err Language.Rzk.Syntax.Abs.Bind-pBind = fmap snd . pBind_internal--pParamDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.ParamDecl-pParamDecl = fmap snd . pParamDecl_internal--pSigmaParam :: [Token] -> Err Language.Rzk.Syntax.Abs.SigmaParam-pSigmaParam = fmap snd . pSigmaParam_internal--pListSigmaParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.SigmaParam]-pListSigmaParam = fmap snd . pListSigmaParam_internal--pRestriction :: [Token] -> Err Language.Rzk.Syntax.Abs.Restriction-pRestriction = fmap snd . pRestriction_internal--pListRestriction :: [Token] -> Err [Language.Rzk.Syntax.Abs.Restriction]-pListRestriction = fmap snd . pListRestriction_internal--pModality :: [Token] -> Err Language.Rzk.Syntax.Abs.Modality-pModality = fmap snd . pModality_internal--pModComp :: [Token] -> Err Language.Rzk.Syntax.Abs.ModComp-pModComp = fmap snd . pModComp_internal--pModalColon :: [Token] -> Err Language.Rzk.Syntax.Abs.ModalColon-pModalColon = fmap snd . pModalColon_internal--pTerm7 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm7 = fmap snd . pTerm7_internal--pTerm5 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm5 = fmap snd . pTerm5_internal--pTerm4 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm4 = fmap snd . pTerm4_internal--pTerm3 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm3 = fmap snd . pTerm3_internal--pTerm2 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm2 = fmap snd . pTerm2_internal--pTerm6 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm6 = fmap snd . pTerm6_internal--pTerm1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term-pTerm1 = fmap snd . pTerm1_internal+ , pTerm8+ , pTerm5+ , pTerm4+ , pTerm3+ , pTerm2+ , pTerm6+ , pTerm1+ , pTerm7+ , pTerm+ , pListTerm+ ) where++import Prelude++import qualified Language.Rzk.Syntax.Abs+import Language.Rzk.Syntax.Lex+import qualified Data.Text+import qualified Control.Monad as Happy_Prelude+import qualified Data.Bool as Happy_Prelude+import qualified Data.Function as Happy_Prelude+import qualified Data.Int as Happy_Prelude+import qualified Data.List as Happy_Prelude+import qualified Data.Maybe as Happy_Prelude+import qualified Data.String as Happy_Prelude+import qualified Data.Tuple as Happy_Prelude+import qualified GHC.Err as Happy_Prelude+import qualified GHC.Num as Happy_Prelude+import qualified Text.Show as Happy_Prelude+import qualified Data.Array as Happy_Data_Array+import qualified Data.Bits as Bits+import qualified GHC.Exts as Happy_GHC_Exts+import Control.Applicative(Applicative(..))+import Control.Monad (ap)++-- parser produced by Happy Version 2.2++newtype HappyAbsSyn = HappyAbsSyn HappyAny+#if __GLASGOW_HASKELL__ >= 607+type HappyAny = Happy_GHC_Exts.Any+#else+type HappyAny = forall a . a+#endif+newtype HappyWrap48 = HappyWrap48 ((Language.Rzk.Syntax.Abs.BNFC'Position, String))+happyIn48 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, String)) -> (HappyAbsSyn )+happyIn48 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap48 x)+{-# INLINE happyIn48 #-}+happyOut48 :: (HappyAbsSyn ) -> HappyWrap48+happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut48 #-}+newtype HappyWrap49 = HappyWrap49 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken))+happyIn49 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdentToken)) -> (HappyAbsSyn )+happyIn49 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap49 x)+{-# INLINE happyIn49 #-}+happyOut49 :: (HappyAbsSyn ) -> HappyWrap49+happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut49 #-}+newtype HappyWrap50 = HappyWrap50 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken))+happyIn50 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdentToken)) -> (HappyAbsSyn )+happyIn50 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap50 x)+{-# INLINE happyIn50 #-}+happyOut50 :: (HappyAbsSyn ) -> HappyWrap50+happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut50 #-}+newtype HappyWrap51 = HappyWrap51 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module))+happyIn51 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Module)) -> (HappyAbsSyn )+happyIn51 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap51 x)+{-# INLINE happyIn51 #-}+happyOut51 :: (HappyAbsSyn ) -> HappyWrap51+happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut51 #-}+newtype HappyWrap52 = HappyWrap52 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent))+happyIn52 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.HoleIdent)) -> (HappyAbsSyn )+happyIn52 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap52 x)+{-# INLINE happyIn52 #-}+happyOut52 :: (HappyAbsSyn ) -> HappyWrap52+happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut52 #-}+newtype HappyWrap53 = HappyWrap53 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent))+happyIn53 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.VarIdent)) -> (HappyAbsSyn )+happyIn53 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap53 x)+{-# INLINE happyIn53 #-}+happyOut53 :: (HappyAbsSyn ) -> HappyWrap53+happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut53 #-}+newtype HappyWrap54 = HappyWrap54 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent]))+happyIn54 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.VarIdent])) -> (HappyAbsSyn )+happyIn54 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap54 x)+{-# INLINE happyIn54 #-}+happyOut54 :: (HappyAbsSyn ) -> HappyWrap54+happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut54 #-}+newtype HappyWrap55 = HappyWrap55 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl))+happyIn55 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.LanguageDecl)) -> (HappyAbsSyn )+happyIn55 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap55 x)+{-# INLINE happyIn55 #-}+happyOut55 :: (HappyAbsSyn ) -> HappyWrap55+happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut55 #-}+newtype HappyWrap56 = HappyWrap56 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language))+happyIn56 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Language)) -> (HappyAbsSyn )+happyIn56 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap56 x)+{-# INLINE happyIn56 #-}+happyOut56 :: (HappyAbsSyn ) -> HappyWrap56+happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut56 #-}+newtype HappyWrap57 = HappyWrap57 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command))+happyIn57 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Command)) -> (HappyAbsSyn )+happyIn57 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap57 x)+{-# INLINE happyIn57 #-}+happyOut57 :: (HappyAbsSyn ) -> HappyWrap57+happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut57 #-}+newtype HappyWrap58 = HappyWrap58 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command]))+happyIn58 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Command])) -> (HappyAbsSyn )+happyIn58 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap58 x)+{-# INLINE happyIn58 #-}+happyOut58 :: (HappyAbsSyn ) -> HappyWrap58+happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut58 #-}+newtype HappyWrap59 = HappyWrap59 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars))+happyIn59 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DeclUsedVars)) -> (HappyAbsSyn )+happyIn59 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap59 x)+{-# INLINE happyIn59 #-}+happyOut59 :: (HappyAbsSyn ) -> HappyWrap59+happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut59 #-}+newtype HappyWrap60 = HappyWrap60 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName))+happyIn60 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SectionName)) -> (HappyAbsSyn )+happyIn60 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap60 x)+{-# INLINE happyIn60 #-}+happyOut60 :: (HappyAbsSyn ) -> HappyWrap60+happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut60 #-}+newtype HappyWrap61 = HappyWrap61 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataSort))+happyIn61 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataSort)) -> (HappyAbsSyn )+happyIn61 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap61 x)+{-# INLINE happyIn61 #-}+happyOut61 :: (HappyAbsSyn ) -> HappyWrap61+happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut61 #-}+newtype HappyWrap62 = HappyWrap62 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataBody))+happyIn62 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataBody)) -> (HappyAbsSyn )+happyIn62 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap62 x)+{-# INLINE happyIn62 #-}+happyOut62 :: (HappyAbsSyn ) -> HappyWrap62+happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut62 #-}+newtype HappyWrap63 = HappyWrap63 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Constructor))+happyIn63 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Constructor)) -> (HappyAbsSyn )+happyIn63 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap63 x)+{-# INLINE happyIn63 #-}+happyOut63 :: (HappyAbsSyn ) -> HappyWrap63+happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut63 #-}+newtype HappyWrap64 = HappyWrap64 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Constructor]))+happyIn64 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Constructor])) -> (HappyAbsSyn )+happyIn64 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap64 x)+{-# INLINE happyIn64 #-}+happyOut64 :: (HappyAbsSyn ) -> HappyWrap64+happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut64 #-}+newtype HappyWrap65 = HappyWrap65 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ConstructorType))+happyIn65 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ConstructorType)) -> (HappyAbsSyn )+happyIn65 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap65 x)+{-# INLINE happyIn65 #-}+happyOut65 :: (HappyAbsSyn ) -> HappyWrap65+happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut65 #-}+newtype HappyWrap66 = HappyWrap66 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataElim))+happyIn66 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.DataElim)) -> (HappyAbsSyn )+happyIn66 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap66 x)+{-# INLINE happyIn66 #-}+happyOut66 :: (HappyAbsSyn ) -> HappyWrap66+happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut66 #-}+newtype HappyWrap67 = HappyWrap67 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.DataElim]))+happyIn67 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.DataElim])) -> (HappyAbsSyn )+happyIn67 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap67 x)+{-# INLINE happyIn67 #-}+happyOut67 :: (HappyAbsSyn ) -> HappyWrap67+happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut67 #-}+newtype HappyWrap68 = HappyWrap68 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.MatchBranch))+happyIn68 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.MatchBranch)) -> (HappyAbsSyn )+happyIn68 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap68 x)+{-# INLINE happyIn68 #-}+happyOut68 :: (HappyAbsSyn ) -> HappyWrap68+happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut68 #-}+newtype HappyWrap69 = HappyWrap69 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.MatchBranch]))+happyIn69 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.MatchBranch])) -> (HappyAbsSyn )+happyIn69 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap69 x)+{-# INLINE happyIn69 #-}+happyOut69 :: (HappyAbsSyn ) -> HappyWrap69+happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut69 #-}+newtype HappyWrap70 = HappyWrap70 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))+happyIn70 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )+happyIn70 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap70 x)+{-# INLINE happyIn70 #-}+happyOut70 :: (HappyAbsSyn ) -> HappyWrap70+happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut70 #-}+newtype HappyWrap71 = HappyWrap71 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))+happyIn71 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )+happyIn71 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap71 x)+{-# INLINE happyIn71 #-}+happyOut71 :: (HappyAbsSyn ) -> HappyWrap71+happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut71 #-}+newtype HappyWrap72 = HappyWrap72 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern))+happyIn72 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Pattern)) -> (HappyAbsSyn )+happyIn72 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap72 x)+{-# INLINE happyIn72 #-}+happyOut72 :: (HappyAbsSyn ) -> HappyWrap72+happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut72 #-}+newtype HappyWrap73 = HappyWrap73 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern]))+happyIn73 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Pattern])) -> (HappyAbsSyn )+happyIn73 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap73 x)+{-# INLINE happyIn73 #-}+happyOut73 :: (HappyAbsSyn ) -> HappyWrap73+happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut73 #-}+newtype HappyWrap74 = HappyWrap74 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param))+happyIn74 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Param)) -> (HappyAbsSyn )+happyIn74 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap74 x)+{-# INLINE happyIn74 #-}+happyOut74 :: (HappyAbsSyn ) -> HappyWrap74+happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut74 #-}+newtype HappyWrap75 = HappyWrap75 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param]))+happyIn75 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Param])) -> (HappyAbsSyn )+happyIn75 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap75 x)+{-# INLINE happyIn75 #-}+happyOut75 :: (HappyAbsSyn ) -> HappyWrap75+happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut75 #-}+newtype HappyWrap76 = HappyWrap76 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind))+happyIn76 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Bind)) -> (HappyAbsSyn )+happyIn76 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap76 x)+{-# INLINE happyIn76 #-}+happyOut76 :: (HappyAbsSyn ) -> HappyWrap76+happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut76 #-}+newtype HappyWrap77 = HappyWrap77 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl))+happyIn77 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ParamDecl)) -> (HappyAbsSyn )+happyIn77 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap77 x)+{-# INLINE happyIn77 #-}+happyOut77 :: (HappyAbsSyn ) -> HappyWrap77+happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut77 #-}+newtype HappyWrap78 = HappyWrap78 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam))+happyIn78 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.SigmaParam)) -> (HappyAbsSyn )+happyIn78 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap78 x)+{-# INLINE happyIn78 #-}+happyOut78 :: (HappyAbsSyn ) -> HappyWrap78+happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut78 #-}+newtype HappyWrap79 = HappyWrap79 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam]))+happyIn79 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.SigmaParam])) -> (HappyAbsSyn )+happyIn79 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap79 x)+{-# INLINE happyIn79 #-}+happyOut79 :: (HappyAbsSyn ) -> HappyWrap79+happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut79 #-}+newtype HappyWrap80 = HappyWrap80 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction))+happyIn80 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Restriction)) -> (HappyAbsSyn )+happyIn80 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap80 x)+{-# INLINE happyIn80 #-}+happyOut80 :: (HappyAbsSyn ) -> HappyWrap80+happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut80 #-}+newtype HappyWrap81 = HappyWrap81 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction]))+happyIn81 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Restriction])) -> (HappyAbsSyn )+happyIn81 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap81 x)+{-# INLINE happyIn81 #-}+happyOut81 :: (HappyAbsSyn ) -> HappyWrap81+happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut81 #-}+newtype HappyWrap82 = HappyWrap82 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality))+happyIn82 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Modality)) -> (HappyAbsSyn )+happyIn82 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap82 x)+{-# INLINE happyIn82 #-}+happyOut82 :: (HappyAbsSyn ) -> HappyWrap82+happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut82 #-}+newtype HappyWrap83 = HappyWrap83 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp))+happyIn83 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModComp)) -> (HappyAbsSyn )+happyIn83 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap83 x)+{-# INLINE happyIn83 #-}+happyOut83 :: (HappyAbsSyn ) -> HappyWrap83+happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut83 #-}+newtype HappyWrap84 = HappyWrap84 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModalColon))+happyIn84 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.ModalColon)) -> (HappyAbsSyn )+happyIn84 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap84 x)+{-# INLINE happyIn84 #-}+happyOut84 :: (HappyAbsSyn ) -> HappyWrap84+happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut84 #-}+newtype HappyWrap85 = HappyWrap85 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn85 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn85 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap85 x)+{-# INLINE happyIn85 #-}+happyOut85 :: (HappyAbsSyn ) -> HappyWrap85+happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut85 #-}+newtype HappyWrap86 = HappyWrap86 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn86 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn86 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap86 x)+{-# INLINE happyIn86 #-}+happyOut86 :: (HappyAbsSyn ) -> HappyWrap86+happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut86 #-}+newtype HappyWrap87 = HappyWrap87 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn87 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn87 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap87 x)+{-# INLINE happyIn87 #-}+happyOut87 :: (HappyAbsSyn ) -> HappyWrap87+happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut87 #-}+newtype HappyWrap88 = HappyWrap88 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn88 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn88 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap88 x)+{-# INLINE happyIn88 #-}+happyOut88 :: (HappyAbsSyn ) -> HappyWrap88+happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut88 #-}+newtype HappyWrap89 = HappyWrap89 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn89 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn89 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap89 x)+{-# INLINE happyIn89 #-}+happyOut89 :: (HappyAbsSyn ) -> HappyWrap89+happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut89 #-}+newtype HappyWrap90 = HappyWrap90 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn90 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn90 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap90 x)+{-# INLINE happyIn90 #-}+happyOut90 :: (HappyAbsSyn ) -> HappyWrap90+happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut90 #-}+newtype HappyWrap91 = HappyWrap91 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn91 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn91 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap91 x)+{-# INLINE happyIn91 #-}+happyOut91 :: (HappyAbsSyn ) -> HappyWrap91+happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut91 #-}+newtype HappyWrap92 = HappyWrap92 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn92 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn92 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap92 x)+{-# INLINE happyIn92 #-}+happyOut92 :: (HappyAbsSyn ) -> HappyWrap92+happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut92 #-}+newtype HappyWrap93 = HappyWrap93 ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term))+happyIn93 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, Language.Rzk.Syntax.Abs.Term)) -> (HappyAbsSyn )+happyIn93 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap93 x)+{-# INLINE happyIn93 #-}+happyOut93 :: (HappyAbsSyn ) -> HappyWrap93+happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut93 #-}+newtype HappyWrap94 = HappyWrap94 ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term]))+happyIn94 :: ((Language.Rzk.Syntax.Abs.BNFC'Position, [Language.Rzk.Syntax.Abs.Term])) -> (HappyAbsSyn )+happyIn94 x = Happy_GHC_Exts.unsafeCoerce# (HappyWrap94 x)+{-# INLINE happyIn94 #-}+happyOut94 :: (HappyAbsSyn ) -> HappyWrap94+happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOut94 #-}+happyInTok :: (Token) -> (HappyAbsSyn )+happyInTok x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyInTok #-}+happyOutTok :: (HappyAbsSyn ) -> (Token)+happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x+{-# INLINE happyOutTok #-}+++{-# NOINLINE happyTokenStrings #-}+happyTokenStrings = ["'#assume'","'#check'","'#compute'","'#compute-nf'","'#compute-whnf'","'#data'","'#def'","'#define'","'#end'","'#lang'","'#postulate'","'#section'","'#set-option'","'#unset-option'","'#variable'","'#variables'","'$extract$'","'('","')'","'*'","'*_1'","'*\8321'","','","'->'","'/'","'/\\\\'","'0_2'","'0_I'","'0\7522'","'0\8322'","'1'","'1_2'","'1_I'","'1\7522'","'1\8322'","'2'","':'","':='","':_#'","':_b'","':_id'","':_op'","':\7506\7510'","':\9837'","':\9839'","';'","'<='","'='","'==='","'=>'","'=_{'","'BOT'","'CUBE'","'II'","'Sigma'","'TOP'","'TOPE'","'U'","'Unit'","'['","'\\\\'","'\\\\/'","']'","'_#'","'_b'","'_id'","'_op'","'as'","'compute'","'eliminate'","'first'","'flip_op'","'flip\7506\7510'","'idJ'","'in'","'inf'","'into'","'inv_op'","'inv\7506\7510'","'let'","'match'","'mod'","'recBOT'","'recOR'","'refl'","'refl_{'","'rzk-1'","'second'","'sup'","'unflip_op'","'unflip\7506\7510'","'uninv_op'","'uninv\7506\7510'","'unit'","'uses'","'with'","'|'","'|->'","'}'","'\215'","'\931'","'\960\8321'","'\960\8322'","'\7506\7510'","'\8594'","'\8614'","'\8658'","'\8721'","'\8743'","'\8744'","'\8801'","'\8804'","'\8851'","'\8852'","'\8868'","'\8869'","'\9837'","'\9839'","'\120128'","L_quoted","L_VarIdentToken","L_HoleIdentToken","%eof"]++happyActOffsets :: HappyAddr+happyActOffsets = HappyA# "\xff\xff\xff\xff\x9d\xff\xff\xff\xa9\xff\xff\xff\xa9\xff\xff\xff\x23\x00\x00\x00\xdd\xff\xff\xff\xee\x0c\x00\x00\xee\x0c\x00\x00\xdb\xff\xff\xff\xd5\xff\xff\xff\x39\x00\x00\x00\x3b\x00\x00\x00\xfa\xff\xff\xff\xfa\xff\xff\xff\x61\x00\x00\x00\xbd\xff\xff\xff\xbd\xff\xff\xff\x1d\x00\x00\x00\x1d\x00\x00\x00\x41\x00\x00\x00\x41\x00\x00\x00\x41\x00\x00\x00\x41\x00\x00\x00\xc4\x00\x00\x00\xc4\x00\x00\x00\xd4\x00\x00\x00\x59\x00\x00\x00\xd4\x00\x00\x00\xd4\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x8f\x01\x00\x00\x8f\x01\x00\x00\x77\x0a\x00\x00\x93\x02\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xef\xff\xff\xff\xf7\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\xff\xf7\x01\x00\x00\x00\x00\x00\x00\x91\x01\x00\x00\xed\xff\xff\xff\xd8\xff\xff\xff\x54\x00\x00\x00\x43\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x35\x00\x00\x00\x8f\x01\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xcc\x00\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\x82\x02\x00\x00\x45\x02\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\xf7\x01\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\xb1\x00\x00\x00\xef\xff\xff\xff\xfb\xff\xff\xff\xb1\x00\x00\x00\xf5\x00\x00\x00\xb1\x00\x00\x00\xa9\x01\x00\x00\xb1\x00\x00\x00\xb1\x00\x00\x00\x0d\x00\x00\x00\xb1\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1a\x01\x00\x00\xbe\x00\x00\x00\xbe\x00\x00\x00\x27\x01\x00\x00\xd6\x00\x00\x00\x33\x00\x00\x00\xd6\x00\x00\x00\x00\x00\x00\x00\xda\x0c\x00\x00\x35\x01\x00\x00\xdc\x00\x00\x00\x13\x01\x00\x00\x00\x00\x00\x00\xdc\x00\x00\x00\xdc\x00\x00\x00\xa9\x01\x00\x00\x37\x01\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\x22\x01\x00\x00\xfa\x00\x00\x00\x2a\x01\x00\x00\xfa\x00\x00\x00\x00\x00\x00\x00\x86\x01\x00\x00\x24\x01\x00\x00\x24\x01\x00\x00\x2a\x01\x00\x00\x24\x01\x00\x00\x24\x01\x00\x00\x48\x01\x00\x00\x46\x01\x00\x00\x53\x01\x00\x00\x53\x01\x00\x00\xbd\xff\xff\xff\x53\x01\x00\x00\x74\x01\x00\x00\x8d\x01\x00\x00\x6b\x01\x00\x00\x6b\x01\x00\x00\xef\xff\xff\xff\xf4\xff\xff\xff\xa7\x01\x00\x00\x6c\x01\x00\x00\x6c\x01\x00\x00\x6c\x01\x00\x00\x95\x01\x00\x00\x94\x01\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x94\x01\x00\x00\x94\x01\x00\x00\xfe\x01\x00\x00\xf9\x01\x00\x00\xb3\x01\x00\x00\xba\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xba\x01\x00\x00\xba\x01\x00\x00\xba\x01\x00\x00\xba\x01\x00\x00\xba\x01\x00\x00\xba\x01\x00\x00\xbc\x01\x00\x00\xbc\x01\x00\x00\xc4\x01\x00\x00\xc4\x01\x00\x00\xca\x01\x00\x00\xca\x01\x00\x00\x00\x00\x00\x00\xca\x01\x00\x00\xde\x01\x00\x00\xd6\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\xdb\x01\x00\x00\xee\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x02\x00\x00\x34\x02\x00\x00\x39\x02\x00\x00\x00\x00\x00\x00\x3f\x02\x00\x00\x00\x00\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00\x18\x02\x00\x00\x18\x02\x00\x00\x18\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5c\x02\x00\x00\x5d\x02\x00\x00\xee\x0c\x00\x00\x0a\x02\x00\x00\x00\x00\x00\x00\xbd\xff\xff\xff\x0a\x02\x00\x00\x00\x00\x00\x00\x5f\x02\x00\x00\x00\x00\x00\x00\x17\x02\x00\x00\x17\x02\x00\x00\x00\x00\x00\x00\x17\x02\x00\x00\xe6\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x2a\x01\x00\x00\x09\x00\x00\x00\xe3\x0c\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x7b\x02\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x8f\x01\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xef\xff\xff\xff\x79\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\x00\x00\x00\x00\xf5\xff\xff\xff\xef\xff\xff\xff\xf7\x01\x00\x00\x93\x02\x00\x00\x02\x00\x00\x00\x71\x02\x00\x00\x85\x00\x00\x00\x8f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x01\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x2a\x01\x00\x00\x89\x0c\x00\x00\xf7\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xde\x00\x00\x00\xde\x00\x00\x00\xde\x00\x00\x00\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xec\x0c\x00\x00\x8d\x02\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x95\x02\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\x9a\x02\x00\x00\x8f\x01\x00\x00\xef\xff\xff\xff\x56\x02\x00\x00\x93\x02\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xc4\x02\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xf5\x0c\x00\x00\xcb\x02\x00\x00\xfe\x0c\x00\x00\xd4\x02\x00\x00\x92\x02\x00\x00\x00\x00\x00\x00\xa9\x01\x00\x00\xa9\x01\x00\x00\xa9\x01\x00\x00\xa9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\xbb\x02\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\xe3\x02\x00\x00\xe4\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x60\x00\x00\x00\xc8\x00\x00\x00\x15\x01\x00\x00\x16\x01\x00\x00\xa6\x02\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfa\x02\x00\x00\xef\xff\xff\xff\x00\x03\x00\x00\xef\xff\xff\xff\x02\x03\x00\x00\xef\xff\xff\xff\x05\x03\x00\x00\x2a\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\xa7\x00\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\x2a\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xf1\x02\x00\x00\x00\x00\x00\x00\xdc\x02\x00\x00\x93\x02\x00\x00\x4a\x03\x00\x00\x50\x03\x00\x00\x12\x03\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\x3f\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\x22\x00\x00\x00\x5f\x01\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x53\x03\x00\x00\x55\x03\x00\x00\x6e\x03\x00\x00\x76\x03\x00\x00\xef\xff\xff\xff\x3e\x00\x00\x00\x44\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x19\x03\x00\x00\x83\x03\x00\x00\x85\x03\x00\x00\x00\x00\x00\x00\x87\x03\x00\x00\x88\x03\x00\x00\x8e\x03\x00\x00\x8f\x03\x00\x00\x91\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x70\x03\x00\x00\x00\x00\x00\x00\x78\x03\x00\x00\xef\xff\xff\xff\x7d\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x80\x03\x00\x00\xef\xff\xff\xff\x96\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xa6\x03\x00\x00\xac\x03\x00\x00\xb8\x03\x00\x00\x92\x03\x00\x00\xb9\x03\x00\x00\xbc\x03\x00\x00\xbd\x03\x00\x00\xbe\x03\x00\x00\x00\x00\x00\x00\x58\x03\x00\x00\xc3\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xf8\x00\x00\x00\xef\xff\xff\xff\xc1\x03\x00\x00\xc2\x03\x00\x00\xc5\x03\x00\x00\xcc\x03\x00\x00\xcd\x03\x00\x00\xd1\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xca\x03\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xc4\x03\x00\x00\x00\x00\x00\x00\x09\x01\x00\x00\x00\x00\x00\x00\xf4\x03\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\xef\xff\xff\xff\xef\xff\xff\xff\xec\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x03\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xed\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x00\x00\x00\x00\xef\xff\xff\xff\xfd\x03\x00\x00\x00\x00\x00\x00\xef\xff\xff\xff\x04\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#++happyGotoOffsets :: HappyAddr+happyGotoOffsets = HappyA# "\x06\x01\x00\x00\xa3\x00\x00\x00\xa0\x01\x00\x00\x1f\x01\x00\x00\x39\x04\x00\x00\x09\x04\x00\x00\x38\x04\x00\x00\x14\x00\x00\x00\x3d\x04\x00\x00\x3c\x02\x00\x00\x5b\x04\x00\x00\x37\x04\x00\x00\x40\x01\x00\x00\x4e\x02\x00\x00\x58\x04\x00\x00\x5e\x04\x00\x00\xda\x00\x00\x00\xdc\x01\x00\x00\xd1\x00\x00\x00\xae\x01\x00\x00\xe2\x03\x00\x00\xc7\x0c\x00\x00\x8a\x02\x00\x00\xce\x03\x00\x00\xa9\x0c\x00\x00\x9a\x01\x00\x00\x36\x0c\x00\x00\x7c\x03\x00\x00\xd3\x01\x00\x00\x9c\x03\x00\x00\x20\x03\x00\x00\x4f\x04\x00\x00\x60\x01\x00\x00\x51\x04\x00\x00\x5c\x00\x00\x00\x48\x0c\x00\x00\x1c\x0c\x00\x00\xf0\x0b\x00\x00\x93\x0b\x00\x00\xe8\x03\x00\x00\x6a\x0a\x00\x00\x72\x02\x00\x00\xc9\x03\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x01\x00\x00\xda\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\xb8\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x05\x00\x00\x68\x05\x00\x00\x98\x05\x00\x00\x00\x00\x00\x00\xc8\x05\x00\x00\xf8\x05\x00\x00\x28\x06\x00\x00\x87\x01\x00\x00\xd5\x01\x00\x00\x56\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x03\x00\x00\x58\x06\x00\x00\x88\x06\x00\x00\xb8\x06\x00\x00\xe8\x06\x00\x00\x18\x07\x00\x00\x48\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x78\x07\x00\x00\xa8\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\x0a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x07\x00\x00\x00\x00\x00\x00\xd8\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\x74\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x0c\x00\x00\x00\x00\x00\x00\x12\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x04\x00\x00\x8e\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x02\x00\x00\x00\x00\x00\x00\x3a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x02\x00\x00\x59\x04\x00\x00\x6a\x04\x00\x00\x89\x04\x00\x00\x9a\x04\x00\x00\xad\x01\x00\x00\xb0\x01\x00\x00\xee\x01\x00\x00\xe1\x02\x00\x00\xf4\x01\x00\x00\x60\x03\x00\x00\x99\x04\x00\x00\xa0\x04\x00\x00\x42\x02\x00\x00\x24\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x04\x00\x00\xdf\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x04\x00\x00\x00\x00\x00\x00\xbd\x04\x00\x00\xbe\x04\x00\x00\xc5\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x01\x00\x00\x29\x03\x00\x00\x00\x00\x00\x00\xc9\x01\x00\x00\x22\x03\x00\x00\x00\x00\x00\x00\x97\x04\x00\x00\x00\x00\x00\x00\x91\x02\x00\x00\xc6\x02\x00\x00\x00\x00\x00\x00\x78\x02\x00\x00\x00\x00\x00\x00\xb9\x04\x00\x00\xca\x04\x00\x00\x00\x00\x00\x00\x38\x0c\x00\x00\xa2\x04\x00\x00\xad\x04\x00\x00\x00\x00\x00\x00\xe9\x04\x00\x00\x00\x00\x00\x00\x4d\x03\x00\x00\x00\x00\x00\x00\x21\x02\x00\x00\xfa\x04\x00\x00\x19\x05\x00\x00\x2a\x05\x00\x00\x49\x05\x00\x00\x5e\x03\x00\x00\xb3\x04\x00\x00\x18\x04\x00\x00\x48\x04\x00\x00\x78\x04\x00\x00\xa8\x04\x00\x00\xb2\x0b\x00\x00\x5a\x05\x00\x00\x00\x00\x00\x00\x90\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x03\x00\x00\x38\x08\x00\x00\x50\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x03\x00\x00\xb6\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x08\x00\x00\x79\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x0c\x00\x00\xd4\x04\x00\x00\x98\x08\x00\x00\xef\x02\x00\x00\x89\x0a\x00\x00\xc2\x0b\x00\x00\xd1\x0b\x00\x00\xfd\x0b\x00\x00\x0a\x0c\x00\x00\x55\x0c\x00\x00\x62\x0c\x00\x00\x74\x0c\x00\x00\x81\x0c\x00\x00\x00\x00\x00\x00\x99\x0a\x00\x00\xb8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x05\x00\x00\x00\x00\x00\x00\xa9\x05\x00\x00\xba\x05\x00\x00\xd5\x04\x00\x00\x00\x00\x00\x00\xc8\x0a\x00\x00\xe7\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x03\x00\x00\x00\x00\x00\x00\xc7\x04\x00\x00\xd9\x05\x00\x00\xbd\x02\x00\x00\xd2\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x04\x00\x00\x00\x00\x00\x00\xdd\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x08\x00\x00\xc8\x08\x00\x00\xc8\x08\x00\x00\xc8\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x06\x00\x00\x1a\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x39\x06\x00\x00\x4a\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\x69\x06\x00\x00\x7a\x06\x00\x00\xab\x0c\x00\x00\xc6\x0c\x00\x00\xc8\x0c\x00\x00\xcf\x0c\x00\x00\x05\x05\x00\x00\x99\x06\x00\x00\xaa\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc9\x06\x00\x00\x00\x00\x00\x00\xda\x06\x00\x00\x00\x00\x00\x00\xf9\x06\x00\x00\xf4\x04\x00\x00\xfb\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x07\x00\x00\x29\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\xde\x0b\x00\x00\x26\x02\x00\x00\x3a\x07\x00\x00\x89\x02\x00\x00\x59\x07\x00\x00\x6a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x02\x00\x00\x57\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x93\x03\x00\x00\x89\x07\x00\x00\x00\x00\x00\x00\x9a\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x52\x03\x00\x00\xb9\x07\x00\x00\xca\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x07\x00\x00\x00\x00\x00\x00\x0e\x03\x00\x00\x00\x00\x00\x00\xfa\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x08\x00\x00\x00\x00\x00\x00\xf4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\x0c\x00\x00\x00\x00\x00\x00\x49\x08\x00\x00\x00\x00\x00\x00\x5a\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x08\x00\x00\x00\x00\x00\x00\x8a\x08\x00\x00\x00\x00\x00\x00\xa9\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xba\x08\x00\x00\x00\x00\x00\x00\xd9\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xea\x08\x00\x00\x09\x09\x00\x00\x1a\x09\x00\x00\x00\x00\x00\x00\x39\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\x0a\x00\x00\x16\x0b\x00\x00\x26\x0b\x00\x00\x00\x00\x00\x00\x4a\x09\x00\x00\x69\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x0b\x00\x00\x55\x0b\x00\x00\x74\x0b\x00\x00\x84\x0b\x00\x00\xa3\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x09\x00\x00\x00\x00\x00\x00\x99\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x09\x00\x00\xc9\x09\x00\x00\xda\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf9\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x0a\x00\x00\x00\x00\x00\x00\x3a\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#++happyDefActions :: HappyAddr+happyDefActions = HappyA# "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xff\xff\xff\xb3\xff\xff\xff\xb2\xff\xff\xff\xaf\xff\xff\xff\xad\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa7\xff\xff\xff\x00\x00\x00\x00\xa4\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\xff\xff\xff\xce\xff\xff\xff\xcf\xff\xff\xff\x56\xff\xff\xff\x55\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x0d\xff\xff\xff\x44\xff\xff\xff\x40\xff\xff\xff\x3d\xff\xff\xff\x1b\xff\xff\xff\x48\xff\xff\xff\x0b\xff\xff\xff\x2e\xff\xff\xff\x0a\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\xff\xff\xff\x69\xff\xff\xff\x52\xff\xff\xff\x4f\xff\xff\xff\x64\xff\xff\xff\x67\xff\xff\xff\x6a\xff\xff\xff\x51\xff\xff\xff\x4e\xff\xff\xff\x63\xff\xff\xff\x66\xff\xff\xff\x68\xff\xff\xff\x4c\xff\xff\xff\x6c\xff\xff\xff\x50\xff\xff\xff\x00\x00\x00\x00\x4d\xff\xff\xff\x6b\xff\xff\xff\x6d\xff\xff\xff\x5e\xff\xff\xff\x00\x00\x00\x00\x7a\xff\xff\xff\x7c\xff\xff\xff\x77\xff\xff\xff\x78\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x60\xff\xff\xff\x00\x00\x00\x00\x5a\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\xff\xff\xff\x00\x00\x00\x00\x62\xff\xff\xff\x61\xff\xff\xff\x7d\xff\xff\xff\x7b\xff\xff\xff\x65\xff\xff\xff\xd2\xff\xff\xff\xd1\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6f\xff\xff\xff\x70\xff\xff\xff\x71\xff\xff\xff\x6e\xff\xff\xff\x72\xff\xff\xff\x74\xff\xff\xff\x73\xff\xff\xff\x76\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x7f\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\xff\xff\xff\x00\x00\x00\x00\x83\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9c\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x8a\xff\xff\xff\x8c\xff\xff\xff\x00\x00\x00\x00\x93\xff\xff\xff\x8e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xff\xff\xff\x95\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x98\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa4\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\xff\xff\xff\xaa\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\xff\xff\xff\x00\x00\x00\x00\xb2\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xcd\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xff\xff\xff\xd0\xff\xff\xff\xcc\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\xff\xff\x00\x00\x00\x00\xbe\xff\xff\xff\xb3\xff\xff\xff\xbd\xff\xff\xff\xb3\xff\xff\xff\xb3\xff\xff\xff\xb3\xff\xff\xff\xc5\xff\xff\xff\xc4\xff\xff\xff\xc6\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xb6\xff\xff\xff\x00\x00\x00\x00\xb0\xff\xff\xff\xa4\xff\xff\xff\x00\x00\x00\x00\xab\xff\xff\xff\xa7\xff\xff\xff\xa8\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa3\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\xff\xff\xff\x00\x00\x00\x00\x98\xff\xff\xff\x00\x00\x00\x00\x8d\xff\xff\xff\x00\x00\x00\x00\x32\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\xff\xff\xff\x30\xff\xff\xff\x00\x00\x00\x00\x39\xff\xff\xff\x38\xff\xff\xff\x35\xff\xff\xff\x34\xff\xff\xff\x00\x00\x00\x00\x2a\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\xff\xff\xff\x3a\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x37\xff\xff\xff\x36\xff\xff\xff\x2b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x29\xff\xff\xff\x1a\xff\xff\xff\x45\xff\xff\xff\x46\xff\xff\xff\x43\xff\xff\xff\x42\xff\xff\xff\x41\xff\xff\xff\x3f\xff\xff\xff\x3e\xff\xff\xff\x3c\xff\xff\xff\x0c\xff\xff\xff\x09\xff\xff\xff\x31\xff\xff\xff\x00\x00\x00\x00\x54\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2c\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x59\xff\xff\xff\x2d\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\xff\xff\xff\x4a\xff\xff\xff\x49\xff\xff\xff\x4b\xff\xff\xff\x47\xff\xff\xff\x75\xff\xff\xff\x7e\xff\xff\xff\x81\xff\xff\xff\x80\xff\xff\xff\x85\xff\xff\xff\x84\xff\xff\xff\x82\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x8b\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x94\xff\xff\xff\xa1\xff\xff\xff\x9f\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x9d\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xac\xff\xff\xff\xa9\xff\xff\xff\xae\xff\xff\xff\x00\x00\x00\x00\xb5\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xaf\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\xff\xff\xff\xbf\xff\xff\xff\xc0\xff\xff\xff\xc9\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\xff\xff\xff\xaf\xff\xff\xff\xc7\xff\xff\xff\xc1\xff\xff\xff\xb4\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xa2\xff\xff\xff\xa0\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x33\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\xff\xff\xff\x16\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x87\xff\xff\xff\x00\x00\x00\x00\x5d\xff\xff\xff\x00\x00\x00\x00\x89\xff\xff\xff\x00\x00\x00\x00\x85\xff\xff\xff\x84\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\xff\xff\xff\x85\xff\xff\xff\x84\xff\xff\xff\x00\x00\x00\x00\x85\xff\xff\xff\x00\x00\x00\x00\x25\xff\xff\xff\x9a\xff\xff\xff\x00\x00\x00\x00\x90\xff\xff\xff\x00\x00\x00\x00\x92\xff\xff\xff\x00\x00\x00\x00\xa5\xff\xff\xff\xa6\xff\xff\xff\xad\xff\xff\xff\xb7\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\xff\xff\xff\x00\x00\x00\x00\xc3\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x23\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x86\xff\xff\xff\x5c\xff\xff\xff\x88\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\xff\xff\xff\x00\x00\x00\x00\x10\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\xff\xff\xff\x8f\xff\xff\xff\x91\xff\xff\xff\xb9\xff\xff\xff\x00\x00\x00\x00\xbb\xff\xff\xff\x00\x00\x00\x00\xbc\xff\xff\xff\xba\xff\xff\xff\x14\xff\xff\xff\x15\xff\xff\xff\x26\xff\xff\xff\x27\xff\xff\xff\x28\xff\xff\xff\x0e\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\xff\xff\xff\x00\x00\x00\x00\x17\xff\xff\xff\x18\xff\xff\xff\x19\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x1e\xff\xff\xff\x00\x00\x00\x00\x1f\xff\xff\xff\x00\x00\x00\x00\x1d\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x1c\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x57\xff\xff\xff"#++happyCheck :: HappyAddr+happyCheck = HappyA# "\xff\xff\xff\xff\x12\x00\x00\x00\x13\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x13\x00\x00\x00\x1b\x00\x00\x00\x19\x00\x00\x00\x0b\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x3f\x00\x00\x00\x7b\x00\x00\x00\x33\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x13\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x14\x00\x00\x00\x19\x00\x00\x00\x18\x00\x00\x00\x15\x00\x00\x00\x7a\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x31\x00\x00\x00\x3e\x00\x00\x00\x0b\x00\x00\x00\x34\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x14\x00\x00\x00\x58\x00\x00\x00\x14\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x60\x00\x00\x00\x4d\x00\x00\x00\x14\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x6f\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x7a\x00\x00\x00\x4e\x00\x00\x00\x4e\x00\x00\x00\x6c\x00\x00\x00\x5f\x00\x00\x00\x13\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x64\x00\x00\x00\x6a\x00\x00\x00\x6e\x00\x00\x00\x6d\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x26\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x27\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x5f\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x62\x00\x00\x00\x7a\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x6a\x00\x00\x00\x65\x00\x00\x00\x13\x00\x00\x00\x7a\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x25\x00\x00\x00\x62\x00\x00\x00\x7a\x00\x00\x00\x62\x00\x00\x00\x31\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x34\x00\x00\x00\x7c\x00\x00\x00\x4c\x00\x00\x00\x62\x00\x00\x00\x4e\x00\x00\x00\x14\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x18\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x63\x00\x00\x00\x7a\x00\x00\x00\x13\x00\x00\x00\x45\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x6b\x00\x00\x00\x79\x00\x00\x00\x5f\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x02\x00\x00\x00\x4d\x00\x00\x00\x04\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x18\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x7c\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x7a\x00\x00\x00\x13\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x5f\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x53\x00\x00\x00\x18\x00\x00\x00\x7a\x00\x00\x00\x13\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x13\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x5f\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x13\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x26\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x15\x00\x00\x00\x4d\x00\x00\x00\x13\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x13\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x7a\x00\x00\x00\x59\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x5e\x00\x00\x00\x5f\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x03\x00\x00\x00\x13\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x07\x00\x00\x00\x67\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x5f\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x13\x00\x00\x00\x5f\x00\x00\x00\x13\x00\x00\x00\x13\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7c\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x5f\x00\x00\x00\x1a\x00\x00\x00\x13\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x7c\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x13\x00\x00\x00\x7a\x00\x00\x00\x18\x00\x00\x00\x4b\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x65\x00\x00\x00\x4c\x00\x00\x00\x05\x00\x00\x00\x4e\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x18\x00\x00\x00\x7a\x00\x00\x00\x0f\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x7c\x00\x00\x00\x5f\x00\x00\x00\x5f\x00\x00\x00\x4c\x00\x00\x00\x13\x00\x00\x00\x4e\x00\x00\x00\x7c\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x13\x00\x00\x00\x19\x00\x00\x00\x26\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x7a\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x7c\x00\x00\x00\x5f\x00\x00\x00\x14\x00\x00\x00\x5f\x00\x00\x00\x5f\x00\x00\x00\x7c\x00\x00\x00\x18\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x33\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x5f\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x01\x00\x00\x00\x5f\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x05\x00\x00\x00\x7a\x00\x00\x00\x4b\x00\x00\x00\x7a\x00\x00\x00\x7a\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x16\x00\x00\x00\x18\x00\x00\x00\x05\x00\x00\x00\x7c\x00\x00\x00\x01\x00\x00\x00\x5f\x00\x00\x00\x1c\x00\x00\x00\x7a\x00\x00\x00\x05\x00\x00\x00\x15\x00\x00\x00\x5f\x00\x00\x00\x62\x00\x00\x00\x22\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x6c\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x13\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x30\x00\x00\x00\x7a\x00\x00\x00\x32\x00\x00\x00\x16\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x7c\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x01\x00\x00\x00\x61\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x05\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x7c\x00\x00\x00\x7c\x00\x00\x00\x16\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x61\x00\x00\x00\x01\x00\x00\x00\x14\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x05\x00\x00\x00\x4b\x00\x00\x00\x01\x00\x00\x00\x65\x00\x00\x00\x22\x00\x00\x00\x69\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x73\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x01\x00\x00\x00\x5f\x00\x00\x00\x62\x00\x00\x00\x13\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x7a\x00\x00\x00\x7c\x00\x00\x00\x13\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x2f\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x05\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7c\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x7a\x00\x00\x00\x79\x00\x00\x00\x58\x00\x00\x00\x16\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x05\x00\x00\x00\x4b\x00\x00\x00\x01\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x7c\x00\x00\x00\x05\x00\x00\x00\x0c\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x5f\x00\x00\x00\x7c\x00\x00\x00\x13\x00\x00\x00\x2f\x00\x00\x00\x26\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x26\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x31\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x60\x00\x00\x00\x01\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x05\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x7a\x00\x00\x00\x26\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x4b\x00\x00\x00\x7a\x00\x00\x00\x01\x00\x00\x00\x18\x00\x00\x00\x22\x00\x00\x00\x13\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x27\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x16\x00\x00\x00\x16\x00\x00\x00\x05\x00\x00\x00\x18\x00\x00\x00\x19\x00\x00\x00\x5f\x00\x00\x00\x18\x00\x00\x00\x13\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x18\x00\x00\x00\x69\x00\x00\x00\x1c\x00\x00\x00\x1d\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x23\x00\x00\x00\x24\x00\x00\x00\x25\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x01\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x27\x00\x00\x00\x05\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x01\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x05\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x7a\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x53\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x4b\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x5f\x00\x00\x00\x01\x00\x00\x00\x18\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x05\x00\x00\x00\x54\x00\x00\x00\x55\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x69\x00\x00\x00\x18\x00\x00\x00\x0c\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x5f\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x64\x00\x00\x00\x25\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x22\x00\x00\x00\x40\x00\x00\x00\x7a\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x26\x00\x00\x00\x26\x00\x00\x00\x78\x00\x00\x00\x1d\x00\x00\x00\x7a\x00\x00\x00\x7b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x14\x00\x00\x00\x79\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x1d\x00\x00\x00\x27\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x22\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x1c\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x26\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x64\x00\x00\x00\x7a\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x4c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x05\x00\x00\x00\x27\x00\x00\x00\x14\x00\x00\x00\x16\x00\x00\x00\x14\x00\x00\x00\x1d\x00\x00\x00\x27\x00\x00\x00\x0c\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x1e\x00\x00\x00\x1f\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x18\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x7a\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x27\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x1e\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x27\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x27\x00\x00\x00\x14\x00\x00\x00\x16\x00\x00\x00\x27\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x18\x00\x00\x00\x20\x00\x00\x00\x21\x00\x00\x00\x22\x00\x00\x00\x1e\x00\x00\x00\x1c\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x20\x00\x00\x00\x27\x00\x00\x00\x22\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x18\x00\x00\x00\x7a\x00\x00\x00\x05\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x14\x00\x00\x00\x1e\x00\x00\x00\x18\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x18\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x14\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x14\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x1a\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x14\x00\x00\x00\x18\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x4c\x00\x00\x00\x08\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x18\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x4c\x00\x00\x00\x4c\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x0e\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x0d\x00\x00\x00\x11\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x22\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x24\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x08\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x0b\x00\x00\x00\x0b\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x0b\x00\x00\x00\x24\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x22\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x24\x00\x00\x00\x24\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x24\x00\x00\x00\x24\x00\x00\x00\x0e\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x16\x00\x00\x00\x0e\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\x14\x00\x00\x00\x15\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\x28\x00\x00\x00\xff\xff\xff\xff\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x22\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x27\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x00\x00\x1e\x00\x00\x00\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\x18\x00\x00\x00\x19\x00\x00\x00\xff\xff\xff\xff\x1d\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff\x04\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x00\x00\xff\xff\xff\xff\x2c\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x00\x00\x2a\x00\x00\x00\x11\x00\x00\x00\x2c\x00\x00\x00\x18\x00\x00\x00\xff\xff\xff\xff\x22\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\x25\x00\x00\x00\x26\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2c\x00\x00\x00\x05\x00\x00\x00\x26\x00\x00\x00\x05\x00\x00\x00\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x0d\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x05\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\x05\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\x1a\x00\x00\x00\x1b\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\x05\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x16\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00\x16\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x05\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\x16\x00\x00\x00\x16\x00\x00\x00\x16\x00\x00\x00\x18\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\x1a\x00\x00\x00\x1b\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x00\x00\x1b\x00\x00\x00\xff\xff\xff\xff\x16\x00\x00\x00\xff\xff\xff\xff\x18\x00\x00\x00\x19\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x0a\x00\x00\x00\xff\xff\xff\xff\x0c\x00\x00\x00\x0d\x00\x00\x00\x0e\x00\x00\x00\x0f\x00\x00\x00\x10\x00\x00\x00\x11\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\x26\x00\x00\x00\xff\xff\xff\xff\x28\x00\x00\x00\x29\x00\x00\x00\x2a\x00\x00\x00\x2b\x00\x00\x00\x2c\x00\x00\x00\x2d\x00\x00\x00\x2e\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\xb3\x00\x00\x00\xb4\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\xa4\x00\x00\x00\x39\x01\x00\x00\x40\x01\x00\x00\xd9\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x5d\x01\x00\x00\xb0\x01\x00\x00\x37\x01\x00\x00\x7a\x00\x00\x00\x7e\x01\x00\x00\xb7\x00\x00\x00\x62\x01\x00\x00\x9a\x00\x00\x00\xc3\x00\x00\x00\xc4\x00\x00\x00\xde\x01\x00\x00\x55\x01\x00\x00\x76\x01\x00\x00\x11\x01\x00\x00\x79\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x50\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x15\x01\x00\x00\x55\x00\x00\x00\xd9\x00\x00\x00\x16\x01\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\xdc\x01\x00\x00\xd7\x00\x00\x00\xc5\x01\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\xc3\x00\x00\x00\x5e\x00\x00\x00\xc1\x01\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x61\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x38\x01\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x79\x00\x00\x00\x5e\x01\x00\x00\xb1\x01\x00\x00\x7f\x01\x00\x00\x9b\x00\x00\x00\x9a\x00\x00\x00\x6f\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x63\x01\x00\x00\x41\x01\x00\x00\x3a\x01\x00\x00\x73\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\xbf\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xbd\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x9b\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x3f\x00\x00\x00\x40\x00\x00\x00\xdf\x01\x00\x00\x79\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x56\x01\x00\x00\x12\x01\x00\x00\xa4\x00\x00\x00\x79\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x13\x01\x00\x00\x14\x01\x00\x00\x85\x00\x00\x00\xdd\x01\x00\x00\x79\x00\x00\x00\xc6\x01\x00\x00\x15\x01\x00\x00\xbf\x00\x00\x00\xb7\x00\x00\x00\x16\x01\x00\x00\xff\xff\xff\xff\xfd\x01\x00\x00\xc2\x01\x00\x00\xfe\x01\x00\x00\x50\x01\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x51\x01\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x0d\x01\x00\x00\x79\x00\x00\x00\x9a\x00\x00\x00\x36\x01\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x0e\x01\x00\x00\x2e\x00\x00\x00\x9b\x00\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x2f\x00\x00\x00\x5e\x00\x00\x00\xdc\x00\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x35\x01\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\xff\xff\xff\xff\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\x3f\x00\x00\x00\x7d\x00\x00\x00\x79\x00\x00\x00\x32\x01\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x9b\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\xda\x01\x00\x00\xac\x00\x00\x00\xa4\x00\x00\x00\x5b\x01\x00\x00\xdb\x01\x00\x00\x79\x00\x00\x00\xa4\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x2d\x01\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x9b\x00\x00\x00\xad\x00\x00\x00\xae\x00\x00\x00\x9a\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\xb0\x00\x00\x00\xb1\x00\x00\x00\x9a\x01\x00\x00\x5a\x00\x00\x00\x5b\x00\x00\x00\x5c\x00\x00\x00\x5d\x00\x00\x00\x11\x01\x00\x00\x5e\x00\x00\x00\x23\x01\x00\x00\x5f\x00\x00\x00\x60\x00\x00\x00\x1b\x01\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x79\x00\x00\x00\x68\x00\x00\x00\x69\x00\x00\x00\x6a\x00\x00\x00\x6b\x00\x00\x00\x6c\x00\x00\x00\x6d\x00\x00\x00\x6e\x00\x00\x00\xa4\x00\x00\x00\x7d\x00\x00\x00\xdd\x00\x00\x00\x18\x01\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\xde\x00\x00\x00\x70\x00\x00\x00\x71\x00\x00\x00\x72\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x9b\x00\x00\x00\xd9\x00\x00\x00\xda\x00\x00\x00\x9a\x00\x00\x00\x9b\x00\x00\x00\xa4\x00\x00\x00\xa4\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\xff\xff\xff\xff\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x08\x01\x00\x00\x9b\x00\x00\x00\x10\x01\x00\x00\xa4\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\xff\xff\xff\xff\x98\x01\x00\x00\x96\x01\x00\x00\x9a\x00\x00\x00\x79\x00\x00\x00\x0f\x01\x00\x00\x5d\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x12\x01\x00\x00\x0e\x02\x00\x00\xb7\x00\x00\x00\x0f\x02\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x0a\x01\x00\x00\x79\x00\x00\x00\xba\x00\x00\x00\x13\x01\x00\x00\x14\x01\x00\x00\xff\xff\xff\xff\x9b\x00\x00\x00\x6e\x00\x00\x00\x29\x02\x00\x00\x7d\x00\x00\x00\x2a\x02\x00\x00\xff\xff\xff\xff\x41\x00\x00\x00\x42\x00\x00\x00\x9a\x00\x00\x00\x8a\xff\xff\xff\x06\x01\x00\x00\x72\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x79\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\xff\xff\xff\xff\x9b\x00\x00\x00\xc3\x01\x00\x00\x9b\x00\x00\x00\x9b\x00\x00\x00\xff\xff\xff\xff\xc4\x01\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\xff\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x08\x01\x00\x00\x9b\x00\x00\x00\x8e\x00\x00\x00\x8f\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x2e\x00\x00\x00\x9b\x00\x00\x00\x8e\x00\x00\x00\x33\x01\x00\x00\x95\x00\x00\x00\x79\x00\x00\x00\x5d\x00\x00\x00\x79\x00\x00\x00\x79\x00\x00\x00\xb0\x00\x00\x00\xfb\x00\x00\x00\xc3\x00\x00\x00\xdf\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x9e\x00\x00\x00\x02\x01\x00\x00\x95\x00\x00\x00\xff\xff\xff\xff\x2e\x00\x00\x00\x6e\x00\x00\x00\x26\x01\x00\x00\x79\x00\x00\x00\xdb\x00\x00\x00\x11\x01\x00\x00\x9b\x00\x00\x00\xfd\x00\x00\x00\x27\x01\x00\x00\xc3\x00\x00\x00\x86\x01\x00\x00\x72\x00\x00\x00\x8a\xff\xff\xff\x2e\x00\x00\x00\x2e\x00\x00\x00\x9e\x00\x00\x00\x2e\x00\x00\x00\xeb\x00\x00\x00\x95\x00\x00\x00\x00\x01\x00\x00\xea\x00\x00\x00\x9f\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x7d\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x3b\x01\x00\x00\x79\x00\x00\x00\x3c\x01\x00\x00\xab\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\xff\xff\xff\xff\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x2e\x00\x00\x00\xfb\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x95\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xb0\x00\x00\x00\x84\x01\x00\x00\x2e\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\xac\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x08\x01\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x96\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\xfa\x00\x00\x00\x2e\x00\x00\x00\xaf\x00\x00\x00\x97\x00\x00\x00\x98\x00\x00\x00\xe9\x00\x00\x00\x5d\x00\x00\x00\x2e\x00\x00\x00\x12\x01\x00\x00\x24\x01\x00\x00\x72\x00\x00\x00\xe7\x00\x00\x00\x25\x01\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x3d\x01\x00\x00\x3e\x01\x00\x00\x13\x01\x00\x00\x14\x01\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x2e\x00\x00\x00\x6e\x00\x00\x00\xf6\x00\x00\x00\x7d\x00\x00\x00\xd9\x00\x00\x00\xf0\x00\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\x79\x00\x00\x00\xff\xff\xff\xff\xf3\x00\x00\x00\x72\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x2e\x00\x00\x00\x95\x00\x00\x00\x2e\x00\x00\x00\xf2\x00\x00\x00\xd9\x00\x00\x00\xe2\x00\x00\x00\x95\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\xff\xff\xff\xff\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x79\x00\x00\x00\x2e\x00\x00\x00\xd7\x00\x00\x00\x96\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x96\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x97\x00\x00\x00\x74\x01\x00\x00\xbf\x00\x00\x00\x5d\x00\x00\x00\x2e\x00\x00\x00\x97\x00\x00\x00\xd7\x01\x00\x00\xff\xff\xff\xff\xe3\x00\x00\x00\xc0\x00\x00\x00\x62\x00\x00\x00\x63\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\xb7\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x6e\x00\x00\x00\xff\xff\xff\xff\x7d\x00\x00\x00\x91\x01\x00\x00\x90\x01\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\xb8\x00\x00\x00\xb9\x00\x00\x00\x8f\x01\x00\x00\x72\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x8e\x01\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x5e\x01\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xc3\x00\x00\x00\x2e\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\xac\x00\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x89\x01\x00\x00\x88\x01\x00\x00\x79\x00\x00\x00\xb7\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x2e\x00\x00\x00\x2e\x00\x00\x00\xad\x00\x00\x00\x7f\x01\x00\x00\x95\x00\x00\x00\x95\x00\x00\x00\x5d\x00\x00\x00\x79\x00\x00\x00\x2e\x00\x00\x00\x76\x01\x00\x00\x33\x00\x00\x00\x9a\x00\x00\x00\x81\x01\x00\x00\x34\x00\x00\x00\x5c\x01\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x2e\x00\x00\x00\x7b\x00\x00\x00\x96\x00\x00\x00\xa5\x00\x00\x00\xb7\x00\x00\x00\xa6\x00\x00\x00\xa7\x00\x00\x00\x6e\x00\x00\x00\xbb\x01\x00\x00\x7d\x00\x00\x00\x97\x00\x00\x00\xd5\x01\x00\x00\x41\x00\x00\x00\x42\x00\x00\x00\xb8\x00\x00\x00\xf4\x00\x00\x00\xb8\x01\x00\x00\x72\x00\x00\x00\x43\x00\x00\x00\x44\x00\x00\x00\x45\x00\x00\x00\x46\x00\x00\x00\x47\x00\x00\x00\x48\x00\x00\x00\x49\x00\x00\x00\x4a\x00\x00\x00\x4b\x00\x00\x00\x4c\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x78\x00\x00\x00\x2e\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\xb6\x01\x00\x00\xac\x00\x00\x00\x56\x00\x00\x00\x57\x00\x00\x00\x58\x00\x00\x00\x59\x00\x00\x00\x2e\x00\x00\x00\x4d\x00\x00\x00\x4e\x00\x00\x00\x4f\x00\x00\x00\x80\x01\x00\x00\x51\x00\x00\x00\x52\x00\x00\x00\x53\x00\x00\x00\x54\x00\x00\x00\x79\x00\x00\x00\xad\x00\x00\x00\xb2\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x29\x01\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xaf\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x2e\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x5d\x00\x00\x00\xac\x00\x00\x00\x2e\x00\x00\x00\x9b\x00\x00\x00\x2e\x00\x00\x00\xab\x01\x00\x00\xd9\x00\x00\x00\xe0\x00\x00\x00\xbf\x00\x00\x00\x64\x00\x00\x00\x65\x00\x00\x00\x66\x00\x00\x00\x67\x00\x00\x00\x72\x00\x00\x00\xa9\x01\x00\x00\xe8\x00\x00\x00\xad\x00\x00\x00\xd1\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x6e\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x32\x00\x00\x00\xa8\x01\x00\x00\xb1\x01\x00\x00\x76\x00\x00\x00\x77\x00\x00\x00\x33\x00\x00\x00\xa6\x01\x00\x00\x79\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x3d\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\xa1\x01\x00\x00\xa0\x01\x00\x00\x78\x00\x00\x00\x32\x00\x00\x00\x79\x00\x00\x00\x7a\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x4c\x01\x00\x00\x9f\x01\x00\x00\x2e\x00\x00\x00\xe9\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x2e\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xe7\x01\x00\x00\xb7\x00\x00\x00\xe5\x01\x00\x00\x2e\x00\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\xbd\x00\x00\x00\x95\x00\x00\x00\xd9\x00\x00\x00\x85\x01\x00\x00\x33\x00\x00\x00\xb8\x00\x00\x00\x83\x01\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x00\x00\x00\x04\x02\x00\x00\x32\x00\x00\x00\x9e\x00\x00\x00\x2e\x00\x00\x00\x91\x00\x00\x00\x92\x00\x00\x00\x33\x00\x00\x00\x95\x00\x00\x00\x59\x01\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x93\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\xbf\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x2e\x00\x00\x00\x9e\x00\x00\x00\xd3\x01\x00\x00\x79\x00\x00\x00\x95\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\xb6\x01\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xd0\x01\x00\x00\xce\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x2e\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xcf\x01\x00\x00\xbf\x00\x00\x00\xcb\x01\x00\x00\x03\x02\x00\x00\x96\x00\x00\x00\x02\x02\x00\x00\x32\x00\x00\x00\xfc\x01\x00\x00\xe6\x00\x00\x00\x91\x00\x00\x00\x76\x01\x00\x00\x33\x00\x00\x00\x97\x00\x00\x00\xc8\x01\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x93\x00\x00\x00\x32\x00\x00\x00\xd0\x01\x00\x00\x2e\x00\x00\x00\x91\x00\x00\x00\x6f\x01\x00\x00\x33\x00\x00\x00\x95\x00\x00\x00\x01\x02\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x93\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x02\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x2e\x00\x00\x00\x96\x00\x00\x00\x79\x00\x00\x00\x2e\x00\x00\x00\x95\x00\x00\x00\xf9\x01\x00\x00\xbd\x00\x00\x00\x95\x00\x00\x00\xf8\x01\x00\x00\x9b\x00\x00\x00\xf7\x01\x00\x00\xf6\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\xee\x01\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xf5\x01\x00\x00\xf4\x01\x00\x00\xec\x01\x00\x00\xf3\x01\x00\x00\x66\x01\x00\x00\x20\x02\x00\x00\x32\x00\x00\x00\x9e\x00\x00\x00\x19\x02\x00\x00\x91\x00\x00\x00\x60\x01\x00\x00\x33\x00\x00\x00\x67\x01\x00\x00\xcc\x01\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x93\x00\x00\x00\x32\x00\x00\x00\x1c\x02\x00\x00\x2e\x00\x00\x00\x94\x00\x00\x00\x1e\x02\x00\x00\x33\x00\x00\x00\x95\x00\x00\x00\x1b\x02\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x93\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x1a\x02\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x2e\x00\x00\x00\x64\x01\x00\x00\x18\x02\x00\x00\x79\x00\x00\x00\x95\x00\x00\x00\x17\x02\x00\x00\x16\x02\x00\x00\x15\x02\x00\x00\x13\x02\x00\x00\x65\x01\x00\x00\x0c\x02\x00\x00\x0b\x02\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x0a\x02\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x09\x02\x00\x00\x08\x02\x00\x00\x2e\x02\x00\x00\x2e\x00\x00\x00\xa0\x00\x00\x00\x07\x02\x00\x00\x32\x00\x00\x00\x95\x00\x00\x00\xa4\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x7a\x00\x00\x00\x32\x00\x00\x00\xa9\x00\x00\x00\xaa\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x32\x01\x00\x00\x28\x02\x00\x00\x39\x02\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x2b\x02\x00\x00\xd5\x00\x00\x00\x7f\x00\x00\x00\x2e\x00\x00\x00\x3b\x00\x00\x00\x3c\x02\x00\x00\x32\x00\x00\x00\x95\x00\x00\x00\x3e\x02\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x21\x01\x00\x00\x32\x00\x00\x00\x02\x01\x00\x00\x03\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x16\x01\x00\x00\x33\x02\x00\x00\x37\x02\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xd7\x00\x00\x00\xd4\x00\x00\x00\x6d\x01\x00\x00\x2e\x00\x00\x00\x3b\x00\x00\x00\xbb\x00\x00\x00\x32\x00\x00\x00\x95\x00\x00\x00\xc1\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xf8\x00\x00\x00\x32\x00\x00\x00\xa9\x00\x00\x00\x00\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xf3\x00\x00\x00\xbd\x00\x00\x00\xb5\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xb4\x00\x00\x00\x90\x00\x00\x00\x6c\x01\x00\x00\x2e\x00\x00\x00\x3b\x00\x00\x00\x86\x00\x00\x00\x32\x00\x00\x00\x95\x00\x00\x00\x23\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xef\x00\x00\x00\x32\x00\x00\x00\xa9\x00\x00\x00\xfd\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xee\x00\x00\x00\x0a\x01\x00\x00\xe5\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xe4\x00\x00\x00\x8c\x01\x00\x00\x6b\x01\x00\x00\x2e\x00\x00\x00\x3b\x00\x00\x00\xe1\x00\x00\x00\x32\x00\x00\x00\x95\x00\x00\x00\x82\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xed\x00\x00\x00\x32\x00\x00\x00\xa9\x00\x00\x00\x00\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xec\x00\x00\x00\x8b\x01\x00\x00\x8a\x01\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x89\x01\x00\x00\x78\x01\x00\x00\x6a\x01\x00\x00\x2e\x00\x00\x00\x3b\x00\x00\x00\x6e\x01\x00\x00\x32\x00\x00\x00\x95\x00\x00\x00\x58\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x7c\x01\x00\x00\x32\x00\x00\x00\x08\x01\x00\x00\xb4\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x7b\x01\x00\x00\x4e\x01\x00\x00\xbb\x01\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xab\x01\x00\x00\x0a\x01\x00\x00\xe2\x01\x00\x00\x2e\x00\x00\x00\x3e\x01\x00\x00\x93\x01\x00\x00\x32\x00\x00\x00\x95\x00\x00\x00\xe1\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x77\x01\x00\x00\x32\x00\x00\x00\xa6\x01\x00\x00\xee\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x73\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x72\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x71\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2f\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x70\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x68\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x56\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xbf\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xbe\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xbd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xb3\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xad\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xa4\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xa3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xa2\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xa1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x9d\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x9c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x92\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x91\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xe7\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xe5\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xe3\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xdf\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xd6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xd4\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xd3\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xcb\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xc9\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xc7\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xc6\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x05\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x03\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xfe\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xfa\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5f\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xf0\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xef\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x57\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xec\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xea\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4d\x01\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\xe9\x01\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x1e\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x34\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x01\x00\x00\x2e\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x1c\x02\x00\x00\x32\x00\x00\x00\xad\x00\x00\x00\xf9\x01\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x11\x02\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\xac\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x33\x00\x00\x00\xad\x00\x00\x00\x13\x02\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x10\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x0f\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x0c\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x2c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x2b\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x21\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x20\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x35\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x34\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x33\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x31\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x37\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3a\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x39\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x38\x00\x00\x00\x39\x00\x00\x00\x3a\x00\x00\x00\x3b\x00\x00\x00\x3c\x02\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x7e\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x4b\x01\x00\x00\x3b\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x42\x01\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x41\x01\x00\x00\x3b\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\xb9\x01\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\xb8\x01\x00\x00\x3b\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x30\x02\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x2f\x02\x00\x00\x3b\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x2e\x02\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x26\x02\x00\x00\x3b\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x25\x02\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x24\x02\x00\x00\x3b\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x23\x02\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x80\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x32\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x7d\x00\x00\x00\x39\x00\x00\x00\x22\x02\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x69\x01\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x4a\x01\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\x49\x01\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x37\x00\x00\x00\xd8\x01\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x82\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x48\x01\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x36\x00\x00\x00\x47\x01\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x2e\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x33\x00\x00\x00\x52\x01\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x35\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x53\x01\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\x7a\x01\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x46\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x2f\x00\x00\x00\x33\x00\x00\x00\x30\x00\x00\x00\x31\x00\x00\x00\x34\x00\x00\x00\x45\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x44\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x01\x00\x00\x81\x00\x00\x00\xf6\x00\x00\x00\x3b\x00\x00\x00\x51\x01\x00\x00\x00\x00\x00\x00\x33\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x43\x01\x00\x00\xa1\x00\x00\x00\xf7\x00\x00\x00\x2e\x00\x00\x00\x81\x00\x00\x00\x2e\x00\x00\x00\x3b\x00\x00\x00\x95\x00\x00\x00\x52\x01\x00\x00\x95\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\x9a\x01\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\x95\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x95\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\xa2\x00\x00\x00\xa1\x00\x00\x00\x9b\x01\x00\x00\x2e\x00\x00\x00\x2e\x00\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\x95\x00\x00\x00\x95\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x2e\x00\x00\x00\xa0\x00\x00\x00\xa1\x00\x00\x00\x30\x01\x00\x00\x95\x00\x00\x00\xa1\x00\x00\x00\x04\x01\x00\x00\x2e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x95\x00\x00\x00\xa0\x00\x00\x00\xa5\x00\x00\x00\xa0\x00\x00\x00\xa8\x00\x00\x00\xa1\x00\x00\x00\x98\x01\x00\x00\xa1\x00\x00\x00\x96\x01\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa1\x00\x00\x00\x94\x01\x00\x00\x00\x00\x00\x00\xa5\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x00\x00\xf1\x01\x00\x00\xc6\x00\x00\x00\xc7\x00\x00\x00\xc8\x00\x00\x00\xc9\x00\x00\x00\xca\x00\x00\x00\xcb\x00\x00\x00\xcc\x00\x00\x00\xcd\x00\x00\x00\xce\x00\x00\x00\x00\x00\x00\x00\xcf\x00\x00\x00\xd0\x00\x00\x00\xd1\x00\x00\x00\xd2\x00\x00\x00\xd3\x00\x00\x00\xd4\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\x7a\x01\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\xbd\x01\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\xad\x01\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\xaa\x01\x00\x00\x00\x00\x00\x00\x88\x00\x00\x00\x89\x00\x00\x00\x8a\x00\x00\x00\x8b\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 (44, 246) [+ (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)+ ]++happyRuleArr :: HappyAddr+happyRuleArr = HappyA# "\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x06\x00\x00\x00\x09\x00\x00\x00\x05\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x04\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x02\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x09\x00\x00\x00\x07\x00\x00\x00\x09\x00\x00\x00\x06\x00\x00\x00\x09\x00\x00\x00\x05\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x03\x00\x00\x00\x0b\x00\x00\x00\x04\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x01\x00\x00\x00\x0d\x00\x00\x00\x02\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x03\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x03\x00\x00\x00\x0f\x00\x00\x00\x02\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x03\x00\x00\x00\x11\x00\x00\x00\x02\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x12\x00\x00\x00\x05\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x02\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x14\x00\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x15\x00\x00\x00\x03\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x16\x00\x00\x00\x05\x00\x00\x00\x16\x00\x00\x00\x07\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x17\x00\x00\x00\x02\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x19\x00\x00\x00\x03\x00\x00\x00\x1a\x00\x00\x00\x01\x00\x00\x00\x1a\x00\x00\x00\x05\x00\x00\x00\x1a\x00\x00\x00\x07\x00\x00\x00\x1a\x00\x00\x00\x05\x00\x00\x00\x1a\x00\x00\x00\x07\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x1b\x00\x00\x00\x02\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x1c\x00\x00\x00\x03\x00\x00\x00\x1d\x00\x00\x00\x01\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x07\x00\x00\x00\x1d\x00\x00\x00\x05\x00\x00\x00\x1d\x00\x00\x00\x07\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1e\x00\x00\x00\x03\x00\x00\x00\x1f\x00\x00\x00\x01\x00\x00\x00\x1f\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x03\x00\x00\x00\x20\x00\x00\x00\x03\x00\x00\x00\x21\x00\x00\x00\x01\x00\x00\x00\x21\x00\x00\x00\x03\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x22\x00\x00\x00\x01\x00\x00\x00\x23\x00\x00\x00\x01\x00\x00\x00\x23\x00\x00\x00\x03\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x24\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x04\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x07\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x03\x00\x00\x00\x25\x00\x00\x00\x05\x00\x00\x00\x25\x00\x00\x00\x0e\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x03\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x25\x00\x00\x00\x01\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x26\x00\x00\x00\x01\x00\x00\x00\x26\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x01\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x27\x00\x00\x00\x03\x00\x00\x00\x28\x00\x00\x00\x03\x00\x00\x00\x28\x00\x00\x00\x01\x00\x00\x00\x28\x00\x00\x00\x03\x00\x00\x00\x29\x00\x00\x00\x03\x00\x00\x00\x29\x00\x00\x00\x01\x00\x00\x00\x29\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x04\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x01\x00\x00\x00\x2a\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x03\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2a\x00\x00\x00\x02\x00\x00\x00\x2b\x00\x00\x00\x03\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x05\x00\x00\x00\x2b\x00\x00\x00\x03\x00\x00\x00\x2b\x00\x00\x00\x06\x00\x00\x00\x2b\x00\x00\x00\x04\x00\x00\x00\x2b\x00\x00\x00\x07\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x09\x00\x00\x00\x2b\x00\x00\x00\x09\x00\x00\x00\x2b\x00\x00\x00\x0a\x00\x00\x00\x2b\x00\x00\x00\x0b\x00\x00\x00\x2b\x00\x00\x00\x01\x00\x00\x00\x2b\x00\x00\x00\x03\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x04\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2b\x00\x00\x00\x08\x00\x00\x00\x2c\x00\x00\x00\x03\x00\x00\x00\x2c\x00\x00\x00\x02\x00\x00\x00\x2c\x00\x00\x00\x05\x00\x00\x00\x2c\x00\x00\x00\x07\x00\x00\x00\x2c\x00\x00\x00\x06\x00\x00\x00\x2c\x00\x00\x00\x08\x00\x00\x00\x2c\x00\x00\x00\x01\x00\x00\x00\x2d\x00\x00\x00\x03\x00\x00\x00\x2d\x00\x00\x00\x01\x00\x00\x00\x2e\x00\x00\x00\x01\x00\x00\x00\x2e\x00\x00\x00\x03\x00\x00\x00"#++happyCatchStates :: [Happy_Prelude.Int]+happyCatchStates = []++happy_n_terms = 125 :: Happy_Prelude.Int+happy_n_nonterms = 47 :: Happy_Prelude.Int++happy_n_starts = 44 :: Happy_Prelude.Int++happyReduce_44 = happySpecReduce_1 0# happyReduction_44+happyReduction_44 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn48+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (Data.Text.unpack ((\(PT _ (TL s)) -> s) happy_var_1)))+ )}++happyReduce_45 = happySpecReduce_1 1# happyReduction_45+happyReduction_45 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn49+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.VarIdentToken (tokenText happy_var_1))+ )}++happyReduce_46 = happySpecReduce_1 2# happyReduction_46+happyReduction_46 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn50+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.HoleIdentToken (tokenText happy_var_1))+ )}++happyReduce_47 = happySpecReduce_2 3# happyReduction_47+happyReduction_47 happy_x_2+ happy_x_1+ = case happyOut55 happy_x_1 of { (HappyWrap55 happy_var_1) -> + case happyOut58 happy_x_2 of { (HappyWrap58 happy_var_2) -> + happyIn51+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.Module (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))+ )}}++happyReduce_48 = happySpecReduce_1 4# happyReduction_48+happyReduction_48 happy_x_1+ = case happyOut50 happy_x_1 of { (HappyWrap50 happy_var_1) -> + happyIn52+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.HoleIdent (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_49 = happySpecReduce_1 5# happyReduction_49+happyReduction_49 happy_x_1+ = case happyOut49 happy_x_1 of { (HappyWrap49 happy_var_1) -> + happyIn53+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.VarIdent (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_50 = happySpecReduce_1 6# happyReduction_50+happyReduction_50 happy_x_1+ = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> + happyIn54+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_51 = happySpecReduce_2 6# happyReduction_51+happyReduction_51 happy_x_2+ happy_x_1+ = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> + case happyOut54 happy_x_2 of { (HappyWrap54 happy_var_2) -> + happyIn54+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))+ )}}++happyReduce_52 = happySpecReduce_3 7# happyReduction_52+happyReduction_52 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut56 happy_x_2 of { (HappyWrap56 happy_var_2) -> + happyIn55+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LanguageDecl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_53 = happySpecReduce_1 8# happyReduction_53+happyReduction_53 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn56+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Rzk1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_54 = happyReduce 4# 9# happyReduction_54+happyReduction_54 (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 happyOut48 happy_x_2 of { (HappyWrap48 happy_var_2) -> + case happyOut48 happy_x_4 of { (HappyWrap48 happy_var_4) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_55 = happySpecReduce_2 9# happyReduction_55+happyReduction_55 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut48 happy_x_2 of { (HappyWrap48 happy_var_2) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandUnsetOption (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_56 = happyReduce 4# 9# happyReduction_56+happyReduction_56 (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 happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCheck (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_57 = happySpecReduce_2 9# happyReduction_57+happyReduction_57 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandCompute (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_58 = happySpecReduce_2 9# happyReduction_58+happyReduction_58 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeWHNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_59 = happySpecReduce_2 9# happyReduction_59+happyReduction_59 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandComputeNF (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_60 = happyReduce 6# 9# happyReduction_60+happyReduction_60 (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 happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> + case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> + case happyOut75 happy_x_4 of { (HappyWrap75 happy_var_4) -> + case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandPostulate (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}}++happyReduce_61 = happyReduce 5# 9# 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 happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> + case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> + case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandPostulateNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5))+ ) `HappyStk` happyRest}}}}++happyReduce_62 = happyReduce 4# 9# happyReduction_62+happyReduction_62 (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 happyOut54 happy_x_2 of { (HappyWrap54 happy_var_2) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandAssume (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_63 = happyReduce 4# 9# happyReduction_63+happyReduction_63 (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 happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariable (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_64 = happyReduce 4# 9# happyReduction_64+happyReduction_64 (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 happyOut54 happy_x_2 of { (HappyWrap54 happy_var_2) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandVariables (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_65 = happySpecReduce_2 9# happyReduction_65+happyReduction_65 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut60 happy_x_2 of { (HappyWrap60 happy_var_2) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSection (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_66 = happySpecReduce_2 9# happyReduction_66+happyReduction_66 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut60 happy_x_2 of { (HappyWrap60 happy_var_2) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandSectionEnd (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_67 = happyReduce 8# 9# happyReduction_67+happyReduction_67 (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 { happy_var_1 -> + case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> + case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> + case happyOut75 happy_x_4 of { (HappyWrap75 happy_var_4) -> + case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> + case happyOut93 happy_x_8 of { (HappyWrap93 happy_var_8) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandDefine (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}}}++happyReduce_68 = happyReduce 7# 9# happyReduction_68+happyReduction_68 (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 { happy_var_1 -> + case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> + case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> + case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> + case happyOut93 happy_x_7 of { (HappyWrap93 happy_var_7) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefineNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))+ ) `HappyStk` happyRest}}}}}++happyReduce_69 = happyReduce 8# 9# happyReduction_69+happyReduction_69 (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 { happy_var_1 -> + case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> + case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> + case happyOut75 happy_x_4 of { (HappyWrap75 happy_var_4) -> + case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> + case happyOut93 happy_x_8 of { (HappyWrap93 happy_var_8) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDef (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}}}++happyReduce_70 = happyReduce 7# 9# happyReduction_70+happyReduction_70 (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 { happy_var_1 -> + case happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> + case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> + case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> + case happyOut93 happy_x_7 of { (HappyWrap93 happy_var_7) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDefNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))+ ) `HappyStk` happyRest}}}}}++happyReduce_71 = happyReduce 6# 9# happyReduction_71+happyReduction_71 (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 happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> + case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> + case happyOut75 happy_x_4 of { (HappyWrap75 happy_var_4) -> + case happyOut61 happy_x_5 of { (HappyWrap61 happy_var_5) -> + case happyOut62 happy_x_6 of { (HappyWrap62 happy_var_6) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CommandData (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}}}++happyReduce_72 = happyReduce 5# 9# happyReduction_72+happyReduction_72 (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 happyOut53 happy_x_2 of { (HappyWrap53 happy_var_2) -> + case happyOut59 happy_x_3 of { (HappyWrap59 happy_var_3) -> + case happyOut61 happy_x_4 of { (HappyWrap61 happy_var_4) -> + case happyOut62 happy_x_5 of { (HappyWrap62 happy_var_5) -> + happyIn57+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.commandDataNoParams (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5))+ ) `HappyStk` happyRest}}}}}++happyReduce_73 = happySpecReduce_0 10# happyReduction_73+happyReduction_73 = happyIn58+ ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, [])+ )++happyReduce_74 = happySpecReduce_3 10# happyReduction_74+happyReduction_74 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut57 happy_x_1 of { (HappyWrap57 happy_var_1) -> + case happyOut58 happy_x_3 of { (HappyWrap58 happy_var_3) -> + happyIn58+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_75 = happyReduce 4# 11# happyReduction_75+happyReduction_75 (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 happyOut54 happy_x_3 of { (HappyWrap54 happy_var_3) -> + happyIn59+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DeclUsedVars (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))+ ) `HappyStk` happyRest}}++happyReduce_76 = happySpecReduce_0 11# happyReduction_76+happyReduction_76 = happyIn59+ ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.noDeclUsedVars Language.Rzk.Syntax.Abs.BNFC'NoPosition)+ )++happyReduce_77 = happySpecReduce_0 12# happyReduction_77+happyReduction_77 = happyIn60+ ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoSectionName Language.Rzk.Syntax.Abs.BNFC'NoPosition)+ )++happyReduce_78 = happySpecReduce_1 12# happyReduction_78+happyReduction_78 happy_x_1+ = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> + happyIn60+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.SomeSectionName (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_79 = happySpecReduce_2 13# happyReduction_79+happyReduction_79 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + happyIn61+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.SomeDataSort (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_80 = happySpecReduce_0 13# happyReduction_80+happyReduction_80 = happyIn61+ ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoDataSort Language.Rzk.Syntax.Abs.BNFC'NoPosition)+ )++happyReduce_81 = happySpecReduce_3 14# happyReduction_81+happyReduction_81 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut64 happy_x_2 of { (HappyWrap64 happy_var_2) -> + case happyOut67 happy_x_3 of { (HappyWrap67 happy_var_3) -> + happyIn62+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.SomeDataBody (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))+ )}}}++happyReduce_82 = happySpecReduce_0 14# happyReduction_82+happyReduction_82 = happyIn62+ ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoDataBody Language.Rzk.Syntax.Abs.BNFC'NoPosition)+ )++happyReduce_83 = happySpecReduce_3 15# happyReduction_83+happyReduction_83 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> + case happyOut75 happy_x_2 of { (HappyWrap75 happy_var_2) -> + case happyOut65 happy_x_3 of { (HappyWrap65 happy_var_3) -> + happyIn63+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.Constructor (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_3))+ )}}}++happyReduce_84 = happySpecReduce_2 15# happyReduction_84+happyReduction_84 happy_x_2+ happy_x_1+ = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> + case happyOut65 happy_x_2 of { (HappyWrap65 happy_var_2) -> + happyIn63+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.constructorNoParams (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))+ )}}++happyReduce_85 = happySpecReduce_1 16# happyReduction_85+happyReduction_85 happy_x_1+ = case happyOut63 happy_x_1 of { (HappyWrap63 happy_var_1) -> + happyIn64+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_86 = happySpecReduce_3 16# happyReduction_86+happyReduction_86 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut63 happy_x_1 of { (HappyWrap63 happy_var_1) -> + case happyOut64 happy_x_3 of { (HappyWrap64 happy_var_3) -> + happyIn64+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_87 = happySpecReduce_2 17# happyReduction_87+happyReduction_87 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + happyIn65+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.SomeConstructorType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_88 = happySpecReduce_0 17# happyReduction_88+happyReduction_88 = happyIn65+ ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, Language.Rzk.Syntax.Abs.NoConstructorType Language.Rzk.Syntax.Abs.BNFC'NoPosition)+ )++happyReduce_89 = happyReduce 5# 18# happyReduction_89+happyReduction_89 (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 happyOut53 happy_x_3 of { (HappyWrap53 happy_var_3) -> + case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> + happyIn66+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DataElim (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5))+ ) `HappyStk` happyRest}}}++happyReduce_90 = happyReduce 5# 18# 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)+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut53 happy_x_3 of { (HappyWrap53 happy_var_3) -> + case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> + happyIn66+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.DataCompute (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5))+ ) `HappyStk` happyRest}}}++happyReduce_91 = happySpecReduce_0 19# happyReduction_91+happyReduction_91 = happyIn67+ ((Language.Rzk.Syntax.Abs.BNFC'NoPosition, [])+ )++happyReduce_92 = happySpecReduce_2 19# happyReduction_92+happyReduction_92 happy_x_2+ happy_x_1+ = case happyOut66 happy_x_1 of { (HappyWrap66 happy_var_1) -> + case happyOut67 happy_x_2 of { (HappyWrap67 happy_var_2) -> + happyIn67+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))+ )}}++happyReduce_93 = happyReduce 4# 20# happyReduction_93+happyReduction_93 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + happyIn68+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.MatchBranch (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_94 = happySpecReduce_3 20# happyReduction_94+happyReduction_94 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> + case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> + happyIn68+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.matchBranchNoParams (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_95 = happyReduce 4# 20# happyReduction_95+happyReduction_95 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + happyIn68+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_MatchBranch (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_96 = happySpecReduce_3 20# happyReduction_96+happyReduction_96 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> + case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> + happyIn68+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_matchBranchNoParams (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_97 = happySpecReduce_1 21# happyReduction_97+happyReduction_97 happy_x_1+ = case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> + happyIn69+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_98 = happySpecReduce_3 21# happyReduction_98+happyReduction_98 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut68 happy_x_1 of { (HappyWrap68 happy_var_1) -> + case happyOut69 happy_x_3 of { (HappyWrap69 happy_var_3) -> + happyIn69+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_99 = happySpecReduce_1 22# happyReduction_99+happyReduction_99 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_100 = happySpecReduce_1 22# happyReduction_100+happyReduction_100 happy_x_1+ = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> + happyIn70+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.PatternVar (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_101 = happyReduce 5# 22# 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 { happy_var_1 -> + case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> + case happyOut70 happy_x_4 of { (HappyWrap70 happy_var_4) -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternPair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_102 = happyReduce 7# 22# happyReduction_102+happyReduction_102 (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 { happy_var_1 -> + case happyOut70 happy_x_2 of { (HappyWrap70 happy_var_2) -> + case happyOut70 happy_x_4 of { (HappyWrap70 happy_var_4) -> + case happyOut73 happy_x_6 of { (HappyWrap73 happy_var_6) -> + happyIn70+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.PatternTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}++happyReduce_103 = happySpecReduce_1 23# happyReduction_103+happyReduction_103 happy_x_1+ = case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> + happyIn71+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_104 = happySpecReduce_2 23# happyReduction_104+happyReduction_104 happy_x_2+ happy_x_1+ = case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + happyIn71+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))+ )}}++happyReduce_105 = happySpecReduce_1 24# happyReduction_105+happyReduction_105 happy_x_1+ = case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> + happyIn72+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_106 = happySpecReduce_1 25# happyReduction_106+happyReduction_106 happy_x_1+ = case happyOut72 happy_x_1 of { (HappyWrap72 happy_var_1) -> + happyIn73+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_107 = happySpecReduce_3 25# happyReduction_107+happyReduction_107 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut72 happy_x_1 of { (HappyWrap72 happy_var_1) -> + case happyOut73 happy_x_3 of { (HappyWrap73 happy_var_3) -> + happyIn73+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_108 = happySpecReduce_1 26# happyReduction_108+happyReduction_108 happy_x_1+ = case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> + happyIn74+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamPattern (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_109 = happyReduce 5# 26# happyReduction_109+happyReduction_109 (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 happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + happyIn74+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_110 = happyReduce 7# 26# happyReduction_110+happyReduction_110 (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 { happy_var_1 -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> + happyIn74+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}++happyReduce_111 = happyReduce 5# 26# happyReduction_111+happyReduction_111 (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 happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + happyIn74+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4))+ ) `HappyStk` happyRest}}}}++happyReduce_112 = happyReduce 7# 26# happyReduction_112+happyReduction_112 (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 { happy_var_1 -> + case happyOut71 happy_x_2 of { (HappyWrap71 happy_var_2) -> + case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> + happyIn74+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamPatternModalShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}}++happyReduce_113 = happySpecReduce_1 27# happyReduction_113+happyReduction_113 happy_x_1+ = case happyOut74 happy_x_1 of { (HappyWrap74 happy_var_1) -> + happyIn75+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_114 = happySpecReduce_2 27# happyReduction_114+happyReduction_114 happy_x_2+ happy_x_1+ = case happyOut74 happy_x_1 of { (HappyWrap74 happy_var_1) -> + case happyOut75 happy_x_2 of { (HappyWrap75 happy_var_2) -> + happyIn75+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_2))+ )}}++happyReduce_115 = happySpecReduce_1 28# happyReduction_115+happyReduction_115 happy_x_1+ = case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> + happyIn76+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.BindPattern (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_116 = happySpecReduce_3 28# happyReduction_116+happyReduction_116 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> + case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> + happyIn76+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.BindPatternType (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_117 = happySpecReduce_1 29# happyReduction_117+happyReduction_117 happy_x_1+ = case happyOut90 happy_x_1 of { (HappyWrap90 happy_var_1) -> + happyIn77+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ParamType (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_118 = happyReduce 5# 29# happyReduction_118+happyReduction_118 (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 happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + happyIn77+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_119 = happyReduce 7# 29# happyReduction_119+happyReduction_119 (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 { happy_var_1 -> + case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> + happyIn77+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}++happyReduce_120 = happyReduce 5# 29# happyReduction_120+happyReduction_120 (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 happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + happyIn77+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermModalType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4))+ ) `HappyStk` happyRest}}}}++happyReduce_121 = happyReduce 7# 29# happyReduction_121+happyReduction_121 (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 { happy_var_1 -> + case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + case happyOut84 happy_x_3 of { (HappyWrap84 happy_var_3) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> + happyIn77+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ParamTermModalShape (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}}++happyReduce_122 = happySpecReduce_3 30# happyReduction_122+happyReduction_122 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> + case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> + happyIn78+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.SigmaParam (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_123 = happySpecReduce_3 30# happyReduction_123+happyReduction_123 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut70 happy_x_1 of { (HappyWrap70 happy_var_1) -> + case happyOut84 happy_x_2 of { (HappyWrap84 happy_var_2) -> + case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> + happyIn78+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.SigmaParamModal (fst happy_var_1) (snd happy_var_1) (snd happy_var_2) (snd happy_var_3))+ )}}}++happyReduce_124 = happySpecReduce_1 31# happyReduction_124+happyReduction_124 happy_x_1+ = case happyOut78 happy_x_1 of { (HappyWrap78 happy_var_1) -> + happyIn79+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_125 = happySpecReduce_3 31# happyReduction_125+happyReduction_125 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut78 happy_x_1 of { (HappyWrap78 happy_var_1) -> + case happyOut79 happy_x_3 of { (HappyWrap79 happy_var_3) -> + happyIn79+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_126 = happySpecReduce_3 32# happyReduction_126+happyReduction_126 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut93 happy_x_1 of { (HappyWrap93 happy_var_1) -> + case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> + happyIn80+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_127 = happySpecReduce_3 32# happyReduction_127+happyReduction_127 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut93 happy_x_1 of { (HappyWrap93 happy_var_1) -> + case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> + happyIn80+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_Restriction (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_128 = happySpecReduce_1 33# happyReduction_128+happyReduction_128 happy_x_1+ = case happyOut80 happy_x_1 of { (HappyWrap80 happy_var_1) -> + happyIn81+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_129 = happySpecReduce_3 33# happyReduction_129+happyReduction_129 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut80 happy_x_1 of { (HappyWrap80 happy_var_1) -> + case happyOut81 happy_x_3 of { (HappyWrap81 happy_var_3) -> + happyIn81+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_130 = happySpecReduce_1 34# happyReduction_130+happyReduction_130 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn82+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_131 = happySpecReduce_1 34# happyReduction_131+happyReduction_131 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn82+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Flat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_132 = happySpecReduce_1 34# happyReduction_132+happyReduction_132 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn82+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_133 = happySpecReduce_1 34# happyReduction_133+happyReduction_133 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn82+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Sharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_134 = happySpecReduce_1 34# happyReduction_134+happyReduction_134 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn82+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_135 = happySpecReduce_1 34# happyReduction_135+happyReduction_135 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn82+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Op (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_136 = happySpecReduce_1 34# happyReduction_136+happyReduction_136 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn82+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Id (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_137 = happySpecReduce_1 35# happyReduction_137+happyReduction_137 happy_x_1+ = case happyOut82 happy_x_1 of { (HappyWrap82 happy_var_1) -> + happyIn83+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.Single (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_138 = happySpecReduce_3 35# happyReduction_138+happyReduction_138 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut82 happy_x_1 of { (HappyWrap82 happy_var_1) -> + case happyOut82 happy_x_3 of { (HappyWrap82 happy_var_3) -> + happyIn83+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.Comp (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_139 = happySpecReduce_1 36# happyReduction_139+happyReduction_139 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn84+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonFlat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_140 = happySpecReduce_1 36# happyReduction_140+happyReduction_140 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn84+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonSharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_141 = happySpecReduce_1 36# happyReduction_141+happyReduction_141 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn84+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonOp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_142 = happySpecReduce_1 36# happyReduction_142+happyReduction_142 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn84+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModalColonId (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_143 = happySpecReduce_1 36# happyReduction_143+happyReduction_143 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn84+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonFlat (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_144 = happySpecReduce_1 36# happyReduction_144+happyReduction_144 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn84+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonSharp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_145 = happySpecReduce_1 36# happyReduction_145+happyReduction_145 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn84+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_ModalColonOp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_146 = happySpecReduce_1 37# happyReduction_146+happyReduction_146 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Universe (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_147 = happySpecReduce_1 37# happyReduction_147+happyReduction_147 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseCube (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_148 = happySpecReduce_1 37# happyReduction_148+happyReduction_148 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.UniverseTope (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_149 = happySpecReduce_1 37# happyReduction_149+happyReduction_149 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_150 = happySpecReduce_1 37# happyReduction_150+happyReduction_150 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_151 = happySpecReduce_1 37# happyReduction_151+happyReduction_151 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_152 = happySpecReduce_1 37# happyReduction_152+happyReduction_152 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_153 = happySpecReduce_1 37# happyReduction_153+happyReduction_153 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_154 = happySpecReduce_1 37# happyReduction_154+happyReduction_154 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_155 = happySpecReduce_1 37# happyReduction_155+happyReduction_155 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_156 = happySpecReduce_1 37# happyReduction_156+happyReduction_156 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeI_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_157 = happySpecReduce_1 37# happyReduction_157+happyReduction_157 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_158 = happySpecReduce_1 37# happyReduction_158+happyReduction_158 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_159 = happySpecReduce_1 37# happyReduction_159+happyReduction_159 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_160 = happyReduce 4# 37# happyReduction_160+happyReduction_160 (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 happyOut81 happy_x_3 of { (HappyWrap81 happy_var_3) -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.RecOr (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3))+ ) `HappyStk` happyRest}}++happyReduce_161 = happySpecReduce_1 37# happyReduction_161+happyReduction_161 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeUnit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_162 = happyReduce 5# 37# happyReduction_162+happyReduction_162 (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 happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Pair (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_163 = happyReduce 7# 37# happyReduction_163+happyReduction_163 (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 { happy_var_1 -> + case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + case happyOut94 happy_x_6 of { (HappyWrap94 happy_var_6) -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Tuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}++happyReduce_164 = happySpecReduce_1 37# happyReduction_164+happyReduction_164 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Unit (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_165 = happySpecReduce_1 37# happyReduction_165+happyReduction_165 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Refl (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_166 = happySpecReduce_3 37# happyReduction_166+happyReduction_166 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTerm (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_167 = happyReduce 5# 37# happyReduction_167+happyReduction_167 (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 happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ReflTermType (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_168 = happyReduce 14# 37# happyReduction_168+happyReduction_168 (happy_x_14 `HappyStk`+ happy_x_13 `HappyStk`+ happy_x_12 `HappyStk`+ 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 { happy_var_1 -> + case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> + case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> + case happyOut93 happy_x_7 of { (HappyWrap93 happy_var_7) -> + case happyOut93 happy_x_9 of { (HappyWrap93 happy_var_9) -> + case happyOut93 happy_x_11 of { (HappyWrap93 happy_var_11) -> + case happyOut93 happy_x_13 of { (HappyWrap93 happy_var_13) -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.IdJ (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9) (snd happy_var_11) (snd happy_var_13))+ ) `HappyStk` happyRest}}}}}}}++happyReduce_169 = happySpecReduce_1 37# happyReduction_169+happyReduction_169 happy_x_1+ = case happyOut52 happy_x_1 of { (HappyWrap52 happy_var_1) -> + happyIn85+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.Hole (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_170 = happySpecReduce_1 37# happyReduction_170+happyReduction_170 happy_x_1+ = case happyOut53 happy_x_1 of { (HappyWrap53 happy_var_1) -> + happyIn85+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.Var (fst happy_var_1) (snd happy_var_1))+ )}++happyReduce_171 = happySpecReduce_3 37# happyReduction_171+happyReduction_171 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut93 happy_x_2 of { (HappyWrap93 happy_var_2) -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), (snd happy_var_2))+ )}}++happyReduce_172 = happySpecReduce_1 37# happyReduction_172+happyReduction_172 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeUnitStar (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_173 = happySpecReduce_1 37# happyReduction_173+happyReduction_173 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_174 = happySpecReduce_1 37# happyReduction_174+happyReduction_174 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Cube2_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_175 = happySpecReduce_1 37# happyReduction_175+happyReduction_175 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_176 = happySpecReduce_1 37# happyReduction_176+happyReduction_176 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI_0 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_177 = happySpecReduce_1 37# happyReduction_177+happyReduction_177 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_CubeI_1 (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_178 = happySpecReduce_1 37# happyReduction_178+happyReduction_178 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeTop (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_179 = happySpecReduce_1 37# happyReduction_179+happyReduction_179 happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + happyIn85+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TopeBottom (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)))+ )}++happyReduce_180 = happySpecReduce_3 38# happyReduction_180+happyReduction_180 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> + case happyOut90 happy_x_3 of { (HappyWrap90 happy_var_3) -> + happyIn86+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_181 = happySpecReduce_3 38# happyReduction_181+happyReduction_181 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> + case happyOut90 happy_x_3 of { (HappyWrap90 happy_var_3) -> + happyIn86+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeSup (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_182 = happySpecReduce_3 38# happyReduction_182+happyReduction_182 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> + case happyOut90 happy_x_3 of { (HappyWrap90 happy_var_3) -> + happyIn86+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.CubeInf (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_183 = happySpecReduce_1 38# happyReduction_183+happyReduction_183 happy_x_1+ = case happyOut90 happy_x_1 of { (HappyWrap90 happy_var_1) -> + happyIn86+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_184 = happySpecReduce_3 38# happyReduction_184+happyReduction_184 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> + case happyOut90 happy_x_3 of { (HappyWrap90 happy_var_3) -> + happyIn86+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ascii_CubeProduct (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_185 = happySpecReduce_3 39# happyReduction_185+happyReduction_185 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> + case happyOut86 happy_x_3 of { (HappyWrap86 happy_var_3) -> + happyIn87+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_186 = happySpecReduce_3 39# happyReduction_186+happyReduction_186 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> + case happyOut86 happy_x_3 of { (HappyWrap86 happy_var_3) -> + happyIn87+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_187 = happySpecReduce_1 39# happyReduction_187+happyReduction_187 happy_x_1+ = case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> + happyIn87+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_188 = happySpecReduce_3 39# happyReduction_188+happyReduction_188 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> + case happyOut86 happy_x_3 of { (HappyWrap86 happy_var_3) -> + happyIn87+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_189 = happySpecReduce_3 39# happyReduction_189+happyReduction_189 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut86 happy_x_1 of { (HappyWrap86 happy_var_1) -> + case happyOut86 happy_x_3 of { (HappyWrap86 happy_var_3) -> + happyIn87+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeLEQ (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_190 = happySpecReduce_3 40# happyReduction_190+happyReduction_190 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut87 happy_x_1 of { (HappyWrap87 happy_var_1) -> + case happyOut88 happy_x_3 of { (HappyWrap88 happy_var_3) -> + happyIn88+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_191 = happySpecReduce_1 40# happyReduction_191+happyReduction_191 happy_x_1+ = case happyOut87 happy_x_1 of { (HappyWrap87 happy_var_1) -> + happyIn88+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_192 = happySpecReduce_3 40# happyReduction_192+happyReduction_192 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut87 happy_x_1 of { (HappyWrap87 happy_var_1) -> + case happyOut88 happy_x_3 of { (HappyWrap88 happy_var_3) -> + happyIn88+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeAnd (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_193 = happySpecReduce_3 41# happyReduction_193+happyReduction_193 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut88 happy_x_1 of { (HappyWrap88 happy_var_1) -> + case happyOut89 happy_x_3 of { (HappyWrap89 happy_var_3) -> + happyIn89+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_194 = happySpecReduce_1 41# happyReduction_194+happyReduction_194 happy_x_1+ = case happyOut88 happy_x_1 of { (HappyWrap88 happy_var_1) -> + happyIn89+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_195 = happySpecReduce_3 41# happyReduction_195+happyReduction_195 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut88 happy_x_1 of { (HappyWrap88 happy_var_1) -> + case happyOut89 happy_x_3 of { (HappyWrap89 happy_var_3) -> + happyIn89+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TopeOr (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_196 = happySpecReduce_2 42# happyReduction_196+happyReduction_196 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_197 = happySpecReduce_2 42# happyReduction_197+happyReduction_197 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TopeInv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_198 = happySpecReduce_2 42# happyReduction_198+happyReduction_198 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_199 = happySpecReduce_2 42# happyReduction_199+happyReduction_199 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TopeUninv (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_200 = happySpecReduce_2 42# happyReduction_200+happyReduction_200 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_201 = happySpecReduce_2 42# happyReduction_201+happyReduction_201 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeFlip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_202 = happySpecReduce_2 42# happyReduction_202+happyReduction_202 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_203 = happySpecReduce_2 42# happyReduction_203+happyReduction_203 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeUnflip (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_204 = happyReduce 4# 42# happyReduction_204+happyReduction_204 (happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut90 happy_x_1 of { (HappyWrap90 happy_var_1) -> + case happyOut81 happy_x_3 of { (HappyWrap81 happy_var_3) -> + happyIn90+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeRestricted (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ ) `HappyStk` happyRest}}++happyReduce_205 = happySpecReduce_2 42# happyReduction_205+happyReduction_205 happy_x_2+ happy_x_1+ = case happyOut90 happy_x_1 of { (HappyWrap90 happy_var_1) -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + happyIn90+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.App (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))+ )}}++happyReduce_206 = happySpecReduce_3 42# happyReduction_206+happyReduction_206 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut83 happy_x_2 of { (HappyWrap83 happy_var_2) -> + case happyOut92 happy_x_3 of { (HappyWrap92 happy_var_3) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModExtract (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))+ )}}}++happyReduce_207 = happySpecReduce_2 42# happyReduction_207+happyReduction_207 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_208 = happySpecReduce_2 42# happyReduction_208+happyReduction_208 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_209 = happySpecReduce_1 42# happyReduction_209+happyReduction_209 happy_x_1+ = case happyOut92 happy_x_1 of { (HappyWrap92 happy_var_1) -> + happyIn90+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_210 = happySpecReduce_3 42# happyReduction_210+happyReduction_210 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + case happyOut92 happy_x_3 of { (HappyWrap92 happy_var_3) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeSup (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))+ )}}}++happyReduce_211 = happySpecReduce_3 42# happyReduction_211+happyReduction_211 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + case happyOut92 happy_x_3 of { (HappyWrap92 happy_var_3) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_CubeInf (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))+ )}}}++happyReduce_212 = happySpecReduce_2 42# happyReduction_212+happyReduction_212 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_First (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_213 = happySpecReduce_2 42# happyReduction_213+happyReduction_213 happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + happyIn90+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Second (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2))+ )}}++happyReduce_214 = happySpecReduce_3 43# happyReduction_214+happyReduction_214 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut77 happy_x_1 of { (HappyWrap77 happy_var_1) -> + case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> + happyIn91+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_215 = happyReduce 8# 43# happyReduction_215+happyReduction_215 (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 { happy_var_1 -> + case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> + case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> + case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}++happyReduce_216 = happyReduce 8# 43# happyReduction_216+happyReduction_216 (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 { happy_var_1 -> + case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> + case happyOut84 happy_x_4 of { (HappyWrap84 happy_var_4) -> + case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> + case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}}++happyReduce_217 = happyReduce 8# 43# happyReduction_217+happyReduction_217 (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 { happy_var_1 -> + case happyOut78 happy_x_3 of { (HappyWrap78 happy_var_3) -> + case happyOut79 happy_x_5 of { (HappyWrap79 happy_var_5) -> + case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}++happyReduce_218 = happyReduce 5# 43# happyReduction_218+happyReduction_218 (happy_x_5 `HappyStk`+ happy_x_4 `HappyStk`+ happy_x_3 `HappyStk`+ happy_x_2 `HappyStk`+ happy_x_1 `HappyStk`+ happyRest)+ = case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> + case happyOut93 happy_x_3 of { (HappyWrap93 happy_var_3) -> + case happyOut89 happy_x_5 of { (HappyWrap89 happy_var_5) -> + happyIn91+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeId (fst happy_var_1) (snd happy_var_1) (snd happy_var_3) (snd happy_var_5))+ ) `HappyStk` happyRest}}}++happyReduce_219 = happySpecReduce_3 43# happyReduction_219+happyReduction_219 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> + case happyOut89 happy_x_3 of { (HappyWrap89 happy_var_3) -> + happyIn91+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeIdSimple (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_220 = happyReduce 6# 43# happyReduction_220+happyReduction_220 (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 happyOut76 happy_x_2 of { (HappyWrap76 happy_var_2) -> + case happyOut93 happy_x_4 of { (HappyWrap93 happy_var_4) -> + case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Let (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}++happyReduce_221 = happyReduce 4# 43# happyReduction_221+happyReduction_221 (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 happyOut75 happy_x_2 of { (HappyWrap75 happy_var_2) -> + case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_222 = happyReduce 7# 43# happyReduction_222+happyReduction_222 (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 { happy_var_1 -> + case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> + case happyOut76 happy_x_3 of { (HappyWrap76 happy_var_3) -> + case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> + case happyOut93 happy_x_7 of { (HappyWrap93 happy_var_7) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModBind (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))+ ) `HappyStk` happyRest}}}}}++happyReduce_223 = happyReduce 8# 43# happyReduction_223+happyReduction_223 (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 { happy_var_1 -> + case happyOut82 happy_x_3 of { (HappyWrap82 happy_var_3) -> + case happyOut76 happy_x_4 of { (HappyWrap76 happy_var_4) -> + case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> + case happyOut93 happy_x_8 of { (HappyWrap93 happy_var_8) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetMod (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}}++happyReduce_224 = happyReduce 9# 43# happyReduction_224+happyReduction_224 (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 { happy_var_1 -> + case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> + case happyOut82 happy_x_4 of { (HappyWrap82 happy_var_4) -> + case happyOut76 happy_x_5 of { (HappyWrap76 happy_var_5) -> + case happyOut93 happy_x_7 of { (HappyWrap93 happy_var_7) -> + case happyOut93 happy_x_9 of { (HappyWrap93 happy_var_9) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModFramed (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9))+ ) `HappyStk` happyRest}}}}}}++happyReduce_225 = happyReduce 9# 43# happyReduction_225+happyReduction_225 (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 { happy_var_1 -> + case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> + case happyOut76 happy_x_3 of { (HappyWrap76 happy_var_3) -> + case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> + case happyOut93 happy_x_7 of { (HappyWrap93 happy_var_7) -> + case happyOut93 happy_x_9 of { (HappyWrap93 happy_var_9) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModBindInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9))+ ) `HappyStk` happyRest}}}}}}++happyReduce_226 = happyReduce 10# 43# happyReduction_226+happyReduction_226 (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 { happy_var_1 -> + case happyOut82 happy_x_3 of { (HappyWrap82 happy_var_3) -> + case happyOut76 happy_x_4 of { (HappyWrap76 happy_var_4) -> + case happyOut93 happy_x_6 of { (HappyWrap93 happy_var_6) -> + case happyOut93 happy_x_8 of { (HappyWrap93 happy_var_8) -> + case happyOut93 happy_x_10 of { (HappyWrap93 happy_var_10) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_6) (snd happy_var_8) (snd happy_var_10))+ ) `HappyStk` happyRest}}}}}}++happyReduce_227 = happyReduce 11# 43# happyReduction_227+happyReduction_227 (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 { happy_var_1 -> + case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> + case happyOut82 happy_x_4 of { (HappyWrap82 happy_var_4) -> + case happyOut76 happy_x_5 of { (HappyWrap76 happy_var_5) -> + case happyOut93 happy_x_7 of { (HappyWrap93 happy_var_7) -> + case happyOut93 happy_x_9 of { (HappyWrap93 happy_var_9) -> + case happyOut93 happy_x_11 of { (HappyWrap93 happy_var_11) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.LetModFramedInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_5) (snd happy_var_7) (snd happy_var_9) (snd happy_var_11))+ ) `HappyStk` happyRest}}}}}}}++happyReduce_228 = happySpecReduce_1 43# happyReduction_228+happyReduction_228 happy_x_1+ = case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> + happyIn91+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_229 = happySpecReduce_3 43# happyReduction_229+happyReduction_229 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut77 happy_x_1 of { (HappyWrap77 happy_var_1) -> + case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> + happyIn91+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ASCII_TypeFun (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_230 = happyReduce 8# 43# happyReduction_230+happyReduction_230 (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 { happy_var_1 -> + case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> + case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> + case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigma (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}++happyReduce_231 = happyReduce 8# 43# happyReduction_231+happyReduction_231 (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 { happy_var_1 -> + case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> + case happyOut84 happy_x_4 of { (HappyWrap84 happy_var_4) -> + case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> + case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ascii_TypeSigmaModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_4) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}}++happyReduce_232 = happyReduce 8# 43# happyReduction_232+happyReduction_232 (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 { happy_var_1 -> + case happyOut78 happy_x_3 of { (HappyWrap78 happy_var_3) -> + case happyOut79 happy_x_5 of { (HappyWrap79 happy_var_5) -> + case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_TypeSigmaTuple (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}++happyReduce_233 = happyReduce 4# 43# happyReduction_233+happyReduction_233 (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 happyOut75 happy_x_2 of { (HappyWrap75 happy_var_2) -> + case happyOut91 happy_x_4 of { (HappyWrap91 happy_var_4) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ASCII_Lambda (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_234 = happyReduce 8# 43# happyReduction_234+happyReduction_234 (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 { happy_var_1 -> + case happyOut70 happy_x_3 of { (HappyWrap70 happy_var_3) -> + case happyOut93 happy_x_5 of { (HappyWrap93 happy_var_5) -> + case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}++happyReduce_235 = happyReduce 8# 43# happyReduction_235+happyReduction_235 (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 { happy_var_1 -> + case happyOut78 happy_x_3 of { (HappyWrap78 happy_var_3) -> + case happyOut79 happy_x_5 of { (HappyWrap79 happy_var_5) -> + case happyOut91 happy_x_8 of { (HappyWrap91 happy_var_8) -> + happyIn91+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.unicode_TypeSigmaTupleAlt (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_3) (snd happy_var_5) (snd happy_var_8))+ ) `HappyStk` happyRest}}}}++happyReduce_236 = happySpecReduce_3 44# happyReduction_236+happyReduction_236 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> + case happyOut92 happy_x_3 of { (HappyWrap92 happy_var_3) -> + happyIn92+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.ModApp (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3))+ )}}}++happyReduce_237 = happySpecReduce_2 44# happyReduction_237+happyReduction_237 happy_x_2+ happy_x_1+ = case happyOut82 happy_x_1 of { (HappyWrap82 happy_var_1) -> + case happyOut92 happy_x_2 of { (HappyWrap92 happy_var_2) -> + happyIn92+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.ModType (fst happy_var_1) (snd happy_var_1) (snd happy_var_2))+ )}}++happyReduce_238 = happyReduce 5# 44# 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)+ = case happyOutTok happy_x_1 of { happy_var_1 -> + case happyOut85 happy_x_2 of { (HappyWrap85 happy_var_2) -> + case happyOut69 happy_x_4 of { (HappyWrap69 happy_var_4) -> + happyIn92+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.Match (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4))+ ) `HappyStk` happyRest}}}++happyReduce_239 = happyReduce 7# 44# happyReduction_239+happyReduction_239 (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 { happy_var_1 -> + case happyOut85 happy_x_2 of { (HappyWrap85 happy_var_2) -> + case happyOut85 happy_x_4 of { (HappyWrap85 happy_var_4) -> + case happyOut69 happy_x_6 of { (HappyWrap69 happy_var_6) -> + happyIn92+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.MatchInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_4) (snd happy_var_6))+ ) `HappyStk` happyRest}}}}++happyReduce_240 = happyReduce 6# 44# happyReduction_240+happyReduction_240 (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 happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> + case happyOut85 happy_x_3 of { (HappyWrap85 happy_var_3) -> + case happyOut69 happy_x_5 of { (HappyWrap69 happy_var_5) -> + happyIn92+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.MatchModal (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5))+ ) `HappyStk` happyRest}}}}++happyReduce_241 = happyReduce 8# 44# happyReduction_241+happyReduction_241 (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 { happy_var_1 -> + case happyOut82 happy_x_2 of { (HappyWrap82 happy_var_2) -> + case happyOut85 happy_x_3 of { (HappyWrap85 happy_var_3) -> + case happyOut85 happy_x_5 of { (HappyWrap85 happy_var_5) -> + case happyOut69 happy_x_7 of { (HappyWrap69 happy_var_7) -> + happyIn92+ ((uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1), Language.Rzk.Syntax.Abs.MatchModalInto (uncurry Language.Rzk.Syntax.Abs.BNFC'Position (tokenLineCol happy_var_1)) (snd happy_var_2) (snd happy_var_3) (snd happy_var_5) (snd happy_var_7))+ ) `HappyStk` happyRest}}}}}++happyReduce_242 = happySpecReduce_1 44# happyReduction_242+happyReduction_242 happy_x_1+ = case happyOut85 happy_x_1 of { (HappyWrap85 happy_var_1) -> + happyIn92+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_243 = happySpecReduce_3 45# happyReduction_243+happyReduction_243 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut89 happy_x_1 of { (HappyWrap89 happy_var_1) -> + case happyOut91 happy_x_3 of { (HappyWrap91 happy_var_3) -> + happyIn93+ ((fst happy_var_1, Language.Rzk.Syntax.Abs.TypeAsc (fst happy_var_1) (snd happy_var_1) (snd happy_var_3))+ )}}++happyReduce_244 = happySpecReduce_1 45# happyReduction_244+happyReduction_244 happy_x_1+ = case happyOut91 happy_x_1 of { (HappyWrap91 happy_var_1) -> + happyIn93+ ((fst happy_var_1, (snd happy_var_1))+ )}++happyReduce_245 = happySpecReduce_1 46# happyReduction_245+happyReduction_245 happy_x_1+ = case happyOut93 happy_x_1 of { (HappyWrap93 happy_var_1) -> + happyIn94+ ((fst happy_var_1, (:[]) (snd happy_var_1))+ )}++happyReduce_246 = happySpecReduce_3 46# happyReduction_246+happyReduction_246 happy_x_3+ happy_x_2+ happy_x_1+ = case happyOut93 happy_x_1 of { (HappyWrap93 happy_var_1) -> + case happyOut94 happy_x_3 of { (HappyWrap94 happy_var_3) -> + happyIn94+ ((fst happy_var_1, (:) (snd happy_var_1) (snd happy_var_3))+ )}}++happyTerminalToTok term = case term of {+ PT _ (TS _ 1) -> 2#;+ PT _ (TS _ 2) -> 3#;+ PT _ (TS _ 3) -> 4#;+ PT _ (TS _ 4) -> 5#;+ PT _ (TS _ 5) -> 6#;+ PT _ (TS _ 6) -> 7#;+ PT _ (TS _ 7) -> 8#;+ PT _ (TS _ 8) -> 9#;+ PT _ (TS _ 9) -> 10#;+ PT _ (TS _ 10) -> 11#;+ PT _ (TS _ 11) -> 12#;+ PT _ (TS _ 12) -> 13#;+ PT _ (TS _ 13) -> 14#;+ PT _ (TS _ 14) -> 15#;+ PT _ (TS _ 15) -> 16#;+ PT _ (TS _ 16) -> 17#;+ PT _ (TS _ 17) -> 18#;+ PT _ (TS _ 18) -> 19#;+ PT _ (TS _ 19) -> 20#;+ PT _ (TS _ 20) -> 21#;+ PT _ (TS _ 21) -> 22#;+ PT _ (TS _ 22) -> 23#;+ PT _ (TS _ 23) -> 24#;+ PT _ (TS _ 24) -> 25#;+ PT _ (TS _ 25) -> 26#;+ PT _ (TS _ 26) -> 27#;+ PT _ (TS _ 27) -> 28#;+ PT _ (TS _ 28) -> 29#;+ PT _ (TS _ 29) -> 30#;+ PT _ (TS _ 30) -> 31#;+ PT _ (TS _ 31) -> 32#;+ PT _ (TS _ 32) -> 33#;+ PT _ (TS _ 33) -> 34#;+ PT _ (TS _ 34) -> 35#;+ PT _ (TS _ 35) -> 36#;+ PT _ (TS _ 36) -> 37#;+ PT _ (TS _ 37) -> 38#;+ PT _ (TS _ 38) -> 39#;+ PT _ (TS _ 39) -> 40#;+ PT _ (TS _ 40) -> 41#;+ PT _ (TS _ 41) -> 42#;+ PT _ (TS _ 42) -> 43#;+ PT _ (TS _ 43) -> 44#;+ PT _ (TS _ 44) -> 45#;+ PT _ (TS _ 45) -> 46#;+ PT _ (TS _ 46) -> 47#;+ PT _ (TS _ 47) -> 48#;+ PT _ (TS _ 48) -> 49#;+ PT _ (TS _ 49) -> 50#;+ PT _ (TS _ 50) -> 51#;+ PT _ (TS _ 51) -> 52#;+ PT _ (TS _ 52) -> 53#;+ PT _ (TS _ 53) -> 54#;+ PT _ (TS _ 54) -> 55#;+ PT _ (TS _ 55) -> 56#;+ PT _ (TS _ 56) -> 57#;+ PT _ (TS _ 57) -> 58#;+ PT _ (TS _ 58) -> 59#;+ PT _ (TS _ 59) -> 60#;+ PT _ (TS _ 60) -> 61#;+ PT _ (TS _ 61) -> 62#;+ PT _ (TS _ 62) -> 63#;+ PT _ (TS _ 63) -> 64#;+ PT _ (TS _ 64) -> 65#;+ PT _ (TS _ 65) -> 66#;+ PT _ (TS _ 66) -> 67#;+ PT _ (TS _ 67) -> 68#;+ PT _ (TS _ 68) -> 69#;+ PT _ (TS _ 69) -> 70#;+ PT _ (TS _ 70) -> 71#;+ PT _ (TS _ 71) -> 72#;+ PT _ (TS _ 72) -> 73#;+ PT _ (TS _ 73) -> 74#;+ PT _ (TS _ 74) -> 75#;+ PT _ (TS _ 75) -> 76#;+ PT _ (TS _ 76) -> 77#;+ PT _ (TS _ 77) -> 78#;+ PT _ (TS _ 78) -> 79#;+ PT _ (TS _ 79) -> 80#;+ PT _ (TS _ 80) -> 81#;+ PT _ (TS _ 81) -> 82#;+ PT _ (TS _ 82) -> 83#;+ PT _ (TS _ 83) -> 84#;+ PT _ (TS _ 84) -> 85#;+ PT _ (TS _ 85) -> 86#;+ PT _ (TS _ 86) -> 87#;+ PT _ (TS _ 87) -> 88#;+ PT _ (TS _ 88) -> 89#;+ PT _ (TS _ 89) -> 90#;+ PT _ (TS _ 90) -> 91#;+ PT _ (TS _ 91) -> 92#;+ PT _ (TS _ 92) -> 93#;+ PT _ (TS _ 93) -> 94#;+ PT _ (TS _ 94) -> 95#;+ PT _ (TS _ 95) -> 96#;+ PT _ (TS _ 96) -> 97#;+ PT _ (TS _ 97) -> 98#;+ PT _ (TS _ 98) -> 99#;+ PT _ (TS _ 99) -> 100#;+ PT _ (TS _ 100) -> 101#;+ PT _ (TS _ 101) -> 102#;+ PT _ (TS _ 102) -> 103#;+ PT _ (TS _ 103) -> 104#;+ PT _ (TS _ 104) -> 105#;+ PT _ (TS _ 105) -> 106#;+ PT _ (TS _ 106) -> 107#;+ PT _ (TS _ 107) -> 108#;+ PT _ (TS _ 108) -> 109#;+ PT _ (TS _ 109) -> 110#;+ PT _ (TS _ 110) -> 111#;+ PT _ (TS _ 111) -> 112#;+ PT _ (TS _ 112) -> 113#;+ PT _ (TS _ 113) -> 114#;+ PT _ (TS _ 114) -> 115#;+ PT _ (TS _ 115) -> 116#;+ PT _ (TS _ 116) -> 117#;+ PT _ (TS _ 117) -> 118#;+ PT _ (TS _ 118) -> 119#;+ PT _ (TS _ 119) -> 120#;+ PT _ (TL _) -> 121#;+ PT _ (T_VarIdentToken _) -> 122#;+ PT _ (T_HoleIdentToken _) -> 123#;+ _ -> -1#;+ }+{-# NOINLINE happyTerminalToTok #-}++happyLex kend _kmore [] = kend notHappyAtAll []+happyLex _kend kmore (tk:tks) = kmore (happyTerminalToTok tk) tk tks+{-# INLINE happyLex #-}++happyNewToken action sts stk = happyLex (\tk -> happyDoAction 124# notHappyAtAll action sts stk) (\i tk -> happyDoAction i tk action sts stk)++happyReport 124# tk explist resume tks = happyReport' tks explist resume+happyReport _ tk explist resume tks = happyReport' (tk:tks) explist (\tks -> resume (Happy_Prelude.tail tks))+++happyThen :: () => (Err a) -> (a -> (Err b)) -> (Err b)+happyThen = ((>>=))+happyReturn :: () => a -> (Err a)+happyReturn = (return)+happyThen1 m k tks = ((>>=)) m (\a -> k a tks)+happyFmap1 f m tks = happyThen (m tks) (\a -> happyReturn (f a))+happyReturn1 :: () => a -> b -> (Err a)+happyReturn1 = \a tks -> (return) a+happyReport' :: () => [(Token)] -> [Happy_Prelude.String] -> ([(Token)] -> (Err a)) -> (Err a)+happyReport' = (\tokens expected resume -> happyError tokens)++happyAbort :: () => [(Token)] -> (Err a)+happyAbort = Happy_Prelude.error "Called abort handler in non-resumptive parser"++pModule_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 0# tks) (\x -> happyReturn (let {(HappyWrap51 x') = happyOut51 x} in x'))++pHoleIdent_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 1# tks) (\x -> happyReturn (let {(HappyWrap52 x') = happyOut52 x} in x'))++pVarIdent_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 2# tks) (\x -> happyReturn (let {(HappyWrap53 x') = happyOut53 x} in x'))++pListVarIdent_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 3# tks) (\x -> happyReturn (let {(HappyWrap54 x') = happyOut54 x} in x'))++pLanguageDecl_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 4# tks) (\x -> happyReturn (let {(HappyWrap55 x') = happyOut55 x} in x'))++pLanguage_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 5# tks) (\x -> happyReturn (let {(HappyWrap56 x') = happyOut56 x} in x'))++pCommand_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 6# tks) (\x -> happyReturn (let {(HappyWrap57 x') = happyOut57 x} in x'))++pListCommand_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 7# tks) (\x -> happyReturn (let {(HappyWrap58 x') = happyOut58 x} in x'))++pDeclUsedVars_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 8# tks) (\x -> happyReturn (let {(HappyWrap59 x') = happyOut59 x} in x'))++pSectionName_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 9# tks) (\x -> happyReturn (let {(HappyWrap60 x') = happyOut60 x} in x'))++pDataSort_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 10# tks) (\x -> happyReturn (let {(HappyWrap61 x') = happyOut61 x} in x'))++pDataBody_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 11# tks) (\x -> happyReturn (let {(HappyWrap62 x') = happyOut62 x} in x'))++pConstructor_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 12# tks) (\x -> happyReturn (let {(HappyWrap63 x') = happyOut63 x} in x'))++pListConstructor_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 13# tks) (\x -> happyReturn (let {(HappyWrap64 x') = happyOut64 x} in x'))++pConstructorType_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 14# tks) (\x -> happyReturn (let {(HappyWrap65 x') = happyOut65 x} in x'))++pDataElim_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 15# tks) (\x -> happyReturn (let {(HappyWrap66 x') = happyOut66 x} in x'))++pListDataElim_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 16# tks) (\x -> happyReturn (let {(HappyWrap67 x') = happyOut67 x} in x'))++pMatchBranch_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 17# tks) (\x -> happyReturn (let {(HappyWrap68 x') = happyOut68 x} in x'))++pListMatchBranch_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 18# tks) (\x -> happyReturn (let {(HappyWrap69 x') = happyOut69 x} in x'))++pPattern_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 19# tks) (\x -> happyReturn (let {(HappyWrap70 x') = happyOut70 x} in x'))++pListPattern_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 20# tks) (\x -> happyReturn (let {(HappyWrap71 x') = happyOut71 x} in x'))++pPattern1_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 21# tks) (\x -> happyReturn (let {(HappyWrap72 x') = happyOut72 x} in x'))++pListPattern1_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 22# tks) (\x -> happyReturn (let {(HappyWrap73 x') = happyOut73 x} in x'))++pParam_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 23# tks) (\x -> happyReturn (let {(HappyWrap74 x') = happyOut74 x} in x'))++pListParam_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 24# tks) (\x -> happyReturn (let {(HappyWrap75 x') = happyOut75 x} in x'))++pBind_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 25# tks) (\x -> happyReturn (let {(HappyWrap76 x') = happyOut76 x} in x'))++pParamDecl_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 26# tks) (\x -> happyReturn (let {(HappyWrap77 x') = happyOut77 x} in x'))++pSigmaParam_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 27# tks) (\x -> happyReturn (let {(HappyWrap78 x') = happyOut78 x} in x'))++pListSigmaParam_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 28# tks) (\x -> happyReturn (let {(HappyWrap79 x') = happyOut79 x} in x'))++pRestriction_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 29# tks) (\x -> happyReturn (let {(HappyWrap80 x') = happyOut80 x} in x'))++pListRestriction_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 30# tks) (\x -> happyReturn (let {(HappyWrap81 x') = happyOut81 x} in x'))++pModality_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 31# tks) (\x -> happyReturn (let {(HappyWrap82 x') = happyOut82 x} in x'))++pModComp_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 32# tks) (\x -> happyReturn (let {(HappyWrap83 x') = happyOut83 x} in x'))++pModalColon_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 33# tks) (\x -> happyReturn (let {(HappyWrap84 x') = happyOut84 x} in x'))++pTerm8_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 34# tks) (\x -> happyReturn (let {(HappyWrap85 x') = happyOut85 x} in x'))++pTerm5_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 35# tks) (\x -> happyReturn (let {(HappyWrap86 x') = happyOut86 x} in x'))++pTerm4_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 36# tks) (\x -> happyReturn (let {(HappyWrap87 x') = happyOut87 x} in x'))++pTerm3_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 37# tks) (\x -> happyReturn (let {(HappyWrap88 x') = happyOut88 x} in x'))++pTerm2_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 38# tks) (\x -> happyReturn (let {(HappyWrap89 x') = happyOut89 x} in x'))++pTerm6_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 39# tks) (\x -> happyReturn (let {(HappyWrap90 x') = happyOut90 x} in x'))++pTerm1_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 40# tks) (\x -> happyReturn (let {(HappyWrap91 x') = happyOut91 x} in x'))++pTerm7_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 41# tks) (\x -> happyReturn (let {(HappyWrap92 x') = happyOut92 x} in x'))++pTerm_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 42# tks) (\x -> happyReturn (let {(HappyWrap93 x') = happyOut93 x} in x'))++pListTerm_internal tks = happySomeParser where+ happySomeParser = happyThen (happyDoParse 43# tks) (\x -> happyReturn (let {(HappyWrap94 x') = happyOut94 x} in x'))++happySeq = happyDontSeq+++type Err = Either String++happyError :: [Token] -> Err a+happyError ts = Left $+ "syntax error at " ++ tokenPos ts +++ case ts of+ [] -> []+ [Err _] -> " due to lexer error"+ t:_ -> " before `" ++ (prToken t) ++ "'"++myLexer :: Data.Text.Text -> [Token]+myLexer = tokens++-- Entrypoints++pModule :: [Token] -> Err Language.Rzk.Syntax.Abs.Module+pModule = fmap snd . pModule_internal++pHoleIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.HoleIdent+pHoleIdent = fmap snd . pHoleIdent_internal++pVarIdent :: [Token] -> Err Language.Rzk.Syntax.Abs.VarIdent+pVarIdent = fmap snd . pVarIdent_internal++pListVarIdent :: [Token] -> Err [Language.Rzk.Syntax.Abs.VarIdent]+pListVarIdent = fmap snd . pListVarIdent_internal++pLanguageDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.LanguageDecl+pLanguageDecl = fmap snd . pLanguageDecl_internal++pLanguage :: [Token] -> Err Language.Rzk.Syntax.Abs.Language+pLanguage = fmap snd . pLanguage_internal++pCommand :: [Token] -> Err Language.Rzk.Syntax.Abs.Command+pCommand = fmap snd . pCommand_internal++pListCommand :: [Token] -> Err [Language.Rzk.Syntax.Abs.Command]+pListCommand = fmap snd . pListCommand_internal++pDeclUsedVars :: [Token] -> Err Language.Rzk.Syntax.Abs.DeclUsedVars+pDeclUsedVars = fmap snd . pDeclUsedVars_internal++pSectionName :: [Token] -> Err Language.Rzk.Syntax.Abs.SectionName+pSectionName = fmap snd . pSectionName_internal++pDataSort :: [Token] -> Err Language.Rzk.Syntax.Abs.DataSort+pDataSort = fmap snd . pDataSort_internal++pDataBody :: [Token] -> Err Language.Rzk.Syntax.Abs.DataBody+pDataBody = fmap snd . pDataBody_internal++pConstructor :: [Token] -> Err Language.Rzk.Syntax.Abs.Constructor+pConstructor = fmap snd . pConstructor_internal++pListConstructor :: [Token] -> Err [Language.Rzk.Syntax.Abs.Constructor]+pListConstructor = fmap snd . pListConstructor_internal++pConstructorType :: [Token] -> Err Language.Rzk.Syntax.Abs.ConstructorType+pConstructorType = fmap snd . pConstructorType_internal++pDataElim :: [Token] -> Err Language.Rzk.Syntax.Abs.DataElim+pDataElim = fmap snd . pDataElim_internal++pListDataElim :: [Token] -> Err [Language.Rzk.Syntax.Abs.DataElim]+pListDataElim = fmap snd . pListDataElim_internal++pMatchBranch :: [Token] -> Err Language.Rzk.Syntax.Abs.MatchBranch+pMatchBranch = fmap snd . pMatchBranch_internal++pListMatchBranch :: [Token] -> Err [Language.Rzk.Syntax.Abs.MatchBranch]+pListMatchBranch = fmap snd . pListMatchBranch_internal++pPattern :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern+pPattern = fmap snd . pPattern_internal++pListPattern :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]+pListPattern = fmap snd . pListPattern_internal++pPattern1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Pattern+pPattern1 = fmap snd . pPattern1_internal++pListPattern1 :: [Token] -> Err [Language.Rzk.Syntax.Abs.Pattern]+pListPattern1 = fmap snd . pListPattern1_internal++pParam :: [Token] -> Err Language.Rzk.Syntax.Abs.Param+pParam = fmap snd . pParam_internal++pListParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.Param]+pListParam = fmap snd . pListParam_internal++pBind :: [Token] -> Err Language.Rzk.Syntax.Abs.Bind+pBind = fmap snd . pBind_internal++pParamDecl :: [Token] -> Err Language.Rzk.Syntax.Abs.ParamDecl+pParamDecl = fmap snd . pParamDecl_internal++pSigmaParam :: [Token] -> Err Language.Rzk.Syntax.Abs.SigmaParam+pSigmaParam = fmap snd . pSigmaParam_internal++pListSigmaParam :: [Token] -> Err [Language.Rzk.Syntax.Abs.SigmaParam]+pListSigmaParam = fmap snd . pListSigmaParam_internal++pRestriction :: [Token] -> Err Language.Rzk.Syntax.Abs.Restriction+pRestriction = fmap snd . pRestriction_internal++pListRestriction :: [Token] -> Err [Language.Rzk.Syntax.Abs.Restriction]+pListRestriction = fmap snd . pListRestriction_internal++pModality :: [Token] -> Err Language.Rzk.Syntax.Abs.Modality+pModality = fmap snd . pModality_internal++pModComp :: [Token] -> Err Language.Rzk.Syntax.Abs.ModComp+pModComp = fmap snd . pModComp_internal++pModalColon :: [Token] -> Err Language.Rzk.Syntax.Abs.ModalColon+pModalColon = fmap snd . pModalColon_internal++pTerm8 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm8 = fmap snd . pTerm8_internal++pTerm5 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm5 = fmap snd . pTerm5_internal++pTerm4 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm4 = fmap snd . pTerm4_internal++pTerm3 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm3 = fmap snd . pTerm3_internal++pTerm2 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm2 = fmap snd . pTerm2_internal++pTerm6 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm6 = fmap snd . pTerm6_internal++pTerm1 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm1 = fmap snd . pTerm1_internal++pTerm7 :: [Token] -> Err Language.Rzk.Syntax.Abs.Term+pTerm7 = fmap snd . pTerm7_internal pTerm :: [Token] -> Err Language.Rzk.Syntax.Abs.Term pTerm = fmap snd . pTerm_internal
src/Language/Rzk/Syntax/Print.hs view
@@ -321,22 +321,22 @@ instance Print (Language.Rzk.Syntax.Abs.Term' a) where prt i = \case- Language.Rzk.Syntax.Abs.Universe _ -> prPrec i 7 (concatD [doc (showString "U")])- Language.Rzk.Syntax.Abs.UniverseCube _ -> prPrec i 7 (concatD [doc (showString "CUBE")])- Language.Rzk.Syntax.Abs.UniverseTope _ -> prPrec i 7 (concatD [doc (showString "TOPE")])- Language.Rzk.Syntax.Abs.CubeUnit _ -> prPrec i 7 (concatD [doc (showString "1")])- Language.Rzk.Syntax.Abs.CubeUnitStar _ -> prPrec i 7 (concatD [doc (showString "*\8321")])- Language.Rzk.Syntax.Abs.Cube2 _ -> prPrec i 7 (concatD [doc (showString "2")])- Language.Rzk.Syntax.Abs.Cube2_0 _ -> prPrec i 7 (concatD [doc (showString "0\8322")])- Language.Rzk.Syntax.Abs.Cube2_1 _ -> prPrec i 7 (concatD [doc (showString "1\8322")])- Language.Rzk.Syntax.Abs.CubeI _ -> prPrec i 7 (concatD [doc (showString "\120128")])- Language.Rzk.Syntax.Abs.CubeI_0 _ -> prPrec i 7 (concatD [doc (showString "0\7522")])- Language.Rzk.Syntax.Abs.CubeI_1 _ -> prPrec i 7 (concatD [doc (showString "1\7522")])+ Language.Rzk.Syntax.Abs.Universe _ -> prPrec i 8 (concatD [doc (showString "U")])+ Language.Rzk.Syntax.Abs.UniverseCube _ -> prPrec i 8 (concatD [doc (showString "CUBE")])+ Language.Rzk.Syntax.Abs.UniverseTope _ -> prPrec i 8 (concatD [doc (showString "TOPE")])+ Language.Rzk.Syntax.Abs.CubeUnit _ -> prPrec i 8 (concatD [doc (showString "1")])+ Language.Rzk.Syntax.Abs.CubeUnitStar _ -> prPrec i 8 (concatD [doc (showString "*\8321")])+ Language.Rzk.Syntax.Abs.Cube2 _ -> prPrec i 8 (concatD [doc (showString "2")])+ Language.Rzk.Syntax.Abs.Cube2_0 _ -> prPrec i 8 (concatD [doc (showString "0\8322")])+ Language.Rzk.Syntax.Abs.Cube2_1 _ -> prPrec i 8 (concatD [doc (showString "1\8322")])+ Language.Rzk.Syntax.Abs.CubeI _ -> prPrec i 8 (concatD [doc (showString "\120128")])+ Language.Rzk.Syntax.Abs.CubeI_0 _ -> prPrec i 8 (concatD [doc (showString "0\7522")])+ Language.Rzk.Syntax.Abs.CubeI_1 _ -> prPrec i 8 (concatD [doc (showString "1\7522")]) Language.Rzk.Syntax.Abs.CubeProduct _ term1 term2 -> prPrec i 5 (concatD [prt 5 term1, doc (showString "\215"), prt 6 term2]) Language.Rzk.Syntax.Abs.CubeSup _ term1 term2 -> prPrec i 5 (concatD [prt 5 term1, doc (showString "\8852"), prt 6 term2]) Language.Rzk.Syntax.Abs.CubeInf _ term1 term2 -> prPrec i 5 (concatD [prt 5 term1, doc (showString "\8851"), prt 6 term2])- Language.Rzk.Syntax.Abs.TopeTop _ -> prPrec i 7 (concatD [doc (showString "\8868")])- Language.Rzk.Syntax.Abs.TopeBottom _ -> prPrec i 7 (concatD [doc (showString "\8869")])+ Language.Rzk.Syntax.Abs.TopeTop _ -> prPrec i 8 (concatD [doc (showString "\8868")])+ Language.Rzk.Syntax.Abs.TopeBottom _ -> prPrec i 8 (concatD [doc (showString "\8869")]) Language.Rzk.Syntax.Abs.TopeEQ _ term1 term2 -> prPrec i 4 (concatD [prt 5 term1, doc (showString "\8801"), prt 5 term2]) Language.Rzk.Syntax.Abs.TopeLEQ _ term1 term2 -> prPrec i 4 (concatD [prt 5 term1, doc (showString "\8804"), prt 5 term2]) Language.Rzk.Syntax.Abs.TopeAnd _ term1 term2 -> prPrec i 3 (concatD [prt 4 term1, doc (showString "\8743"), prt 3 term2])@@ -345,21 +345,21 @@ Language.Rzk.Syntax.Abs.TopeUninv _ term -> prPrec i 6 (concatD [doc (showString "uninv\7506\7510"), prt 7 term]) Language.Rzk.Syntax.Abs.CubeFlip _ term -> prPrec i 6 (concatD [doc (showString "flip\7506\7510"), prt 7 term]) Language.Rzk.Syntax.Abs.CubeUnflip _ term -> prPrec i 6 (concatD [doc (showString "unflip\7506\7510"), prt 7 term])- Language.Rzk.Syntax.Abs.RecBottom _ -> prPrec i 7 (concatD [doc (showString "recBOT")])- Language.Rzk.Syntax.Abs.RecOr _ restrictions -> prPrec i 7 (concatD [doc (showString "recOR"), doc (showString "("), prt 0 restrictions, doc (showString ")")])+ Language.Rzk.Syntax.Abs.RecBottom _ -> prPrec i 8 (concatD [doc (showString "recBOT")])+ Language.Rzk.Syntax.Abs.RecOr _ restrictions -> prPrec i 8 (concatD [doc (showString "recOR"), doc (showString "("), prt 0 restrictions, doc (showString ")")]) Language.Rzk.Syntax.Abs.TypeFun _ paramdecl term -> prPrec i 1 (concatD [prt 0 paramdecl, doc (showString "\8594"), prt 1 term]) Language.Rzk.Syntax.Abs.TypeSigma _ pattern_ term1 term2 -> prPrec i 1 (concatD [doc (showString "\931"), doc (showString "("), prt 0 pattern_, doc (showString ":"), prt 0 term1, doc (showString ")"), doc (showString ","), prt 1 term2]) Language.Rzk.Syntax.Abs.TypeSigmaModal _ pattern_ modalcolon term1 term2 -> prPrec i 1 (concatD [doc (showString "\931"), doc (showString "("), prt 0 pattern_, prt 0 modalcolon, prt 0 term1, doc (showString ")"), doc (showString ","), prt 1 term2]) Language.Rzk.Syntax.Abs.TypeSigmaTuple _ sigmaparam sigmaparams term -> prPrec i 1 (concatD [doc (showString "\931"), doc (showString "("), prt 0 sigmaparam, doc (showString ","), prt 0 sigmaparams, doc (showString ")"), doc (showString ","), prt 1 term])- Language.Rzk.Syntax.Abs.TypeUnit _ -> prPrec i 7 (concatD [doc (showString "Unit")])+ Language.Rzk.Syntax.Abs.TypeUnit _ -> prPrec i 8 (concatD [doc (showString "Unit")]) Language.Rzk.Syntax.Abs.TypeId _ term1 term2 term3 -> prPrec i 1 (concatD [prt 2 term1, doc (showString "=_{"), prt 0 term2, doc (showString "}"), prt 2 term3]) Language.Rzk.Syntax.Abs.TypeIdSimple _ term1 term2 -> prPrec i 1 (concatD [prt 2 term1, doc (showString "="), prt 2 term2]) Language.Rzk.Syntax.Abs.TypeRestricted _ term restrictions -> prPrec i 6 (concatD [prt 6 term, doc (showString "["), prt 0 restrictions, doc (showString "]")]) Language.Rzk.Syntax.Abs.Let _ bind term1 term2 -> prPrec i 1 (concatD [doc (showString "let"), prt 0 bind, doc (showString ":="), prt 0 term1, doc (showString "in"), prt 0 term2]) Language.Rzk.Syntax.Abs.App _ term1 term2 -> prPrec i 6 (concatD [prt 6 term1, prt 7 term2]) Language.Rzk.Syntax.Abs.Lambda _ params term -> prPrec i 1 (concatD [doc (showString "\\"), prt 0 params, doc (showString "\8594"), prt 1 term])- Language.Rzk.Syntax.Abs.Pair _ term1 term2 -> prPrec i 7 (concatD [doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ")")])- Language.Rzk.Syntax.Abs.Tuple _ term1 term2 terms -> prPrec i 7 (concatD [doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ","), prt 0 terms, doc (showString ")")])+ Language.Rzk.Syntax.Abs.Pair _ term1 term2 -> prPrec i 8 (concatD [doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ")")])+ Language.Rzk.Syntax.Abs.Tuple _ term1 term2 terms -> prPrec i 8 (concatD [doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ","), prt 0 terms, doc (showString ")")]) Language.Rzk.Syntax.Abs.ModApp _ modality term -> prPrec i 7 (concatD [doc (showString "mod"), prt 0 modality, prt 7 term]) Language.Rzk.Syntax.Abs.ModType _ modality term -> prPrec i 7 (concatD [prt 0 modality, prt 7 term]) Language.Rzk.Syntax.Abs.ModExtract _ modcomp term -> prPrec i 6 (concatD [doc (showString "$extract$"), prt 0 modcomp, prt 7 term])@@ -371,24 +371,26 @@ Language.Rzk.Syntax.Abs.LetModFramedInto _ modality1 modality2 bind term1 term2 term3 -> prPrec i 1 (concatD [doc (showString "let"), prt 0 modality1, doc (showString "mod"), prt 0 modality2, prt 0 bind, doc (showString ":="), prt 0 term1, doc (showString "into"), prt 0 term2, doc (showString "in"), prt 0 term3]) Language.Rzk.Syntax.Abs.First _ term -> prPrec i 6 (concatD [doc (showString "\960\8321"), prt 7 term]) Language.Rzk.Syntax.Abs.Second _ term -> prPrec i 6 (concatD [doc (showString "\960\8322"), prt 7 term])- Language.Rzk.Syntax.Abs.Unit _ -> prPrec i 7 (concatD [doc (showString "unit")])- Language.Rzk.Syntax.Abs.Refl _ -> prPrec i 7 (concatD [doc (showString "refl")])- Language.Rzk.Syntax.Abs.ReflTerm _ term -> prPrec i 7 (concatD [doc (showString "refl_{"), prt 0 term, doc (showString "}")])- Language.Rzk.Syntax.Abs.ReflTermType _ term1 term2 -> prPrec i 7 (concatD [doc (showString "refl_{"), prt 0 term1, doc (showString ":"), prt 0 term2, doc (showString "}")])- Language.Rzk.Syntax.Abs.IdJ _ term1 term2 term3 term4 term5 term6 -> prPrec i 7 (concatD [doc (showString "idJ"), doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ","), prt 0 term3, doc (showString ","), prt 0 term4, doc (showString ","), prt 0 term5, doc (showString ","), prt 0 term6, doc (showString ")")])- Language.Rzk.Syntax.Abs.Match _ term matchbranchs -> prPrec i 7 (concatD [doc (showString "match"), prt 7 term, doc (showString "("), prt 0 matchbranchs, doc (showString ")")])- Language.Rzk.Syntax.Abs.MatchInto _ term1 term2 matchbranchs -> prPrec i 7 (concatD [doc (showString "match"), prt 7 term1, doc (showString "into"), prt 7 term2, doc (showString "("), prt 0 matchbranchs, doc (showString ")")])- Language.Rzk.Syntax.Abs.Hole _ holeident -> prPrec i 7 (concatD [prt 0 holeident])- Language.Rzk.Syntax.Abs.Var _ varident -> prPrec i 7 (concatD [prt 0 varident])+ Language.Rzk.Syntax.Abs.Unit _ -> prPrec i 8 (concatD [doc (showString "unit")])+ Language.Rzk.Syntax.Abs.Refl _ -> prPrec i 8 (concatD [doc (showString "refl")])+ Language.Rzk.Syntax.Abs.ReflTerm _ term -> prPrec i 8 (concatD [doc (showString "refl_{"), prt 0 term, doc (showString "}")])+ Language.Rzk.Syntax.Abs.ReflTermType _ term1 term2 -> prPrec i 8 (concatD [doc (showString "refl_{"), prt 0 term1, doc (showString ":"), prt 0 term2, doc (showString "}")])+ Language.Rzk.Syntax.Abs.IdJ _ term1 term2 term3 term4 term5 term6 -> prPrec i 8 (concatD [doc (showString "idJ"), doc (showString "("), prt 0 term1, doc (showString ","), prt 0 term2, doc (showString ","), prt 0 term3, doc (showString ","), prt 0 term4, doc (showString ","), prt 0 term5, doc (showString ","), prt 0 term6, doc (showString ")")])+ Language.Rzk.Syntax.Abs.Match _ term matchbranchs -> prPrec i 7 (concatD [doc (showString "match"), prt 8 term, doc (showString "("), prt 0 matchbranchs, doc (showString ")")])+ Language.Rzk.Syntax.Abs.MatchInto _ term1 term2 matchbranchs -> prPrec i 7 (concatD [doc (showString "match"), prt 8 term1, doc (showString "into"), prt 8 term2, doc (showString "("), prt 0 matchbranchs, doc (showString ")")])+ Language.Rzk.Syntax.Abs.MatchModal _ modality term matchbranchs -> prPrec i 7 (concatD [doc (showString "match"), prt 0 modality, prt 8 term, doc (showString "("), prt 0 matchbranchs, doc (showString ")")])+ Language.Rzk.Syntax.Abs.MatchModalInto _ modality term1 term2 matchbranchs -> prPrec i 7 (concatD [doc (showString "match"), prt 0 modality, prt 8 term1, doc (showString "into"), prt 8 term2, doc (showString "("), prt 0 matchbranchs, doc (showString ")")])+ Language.Rzk.Syntax.Abs.Hole _ holeident -> prPrec i 8 (concatD [prt 0 holeident])+ Language.Rzk.Syntax.Abs.Var _ varident -> prPrec i 8 (concatD [prt 0 varident]) Language.Rzk.Syntax.Abs.TypeAsc _ term1 term2 -> prPrec i 0 (concatD [prt 2 term1, doc (showString "as"), prt 1 term2])- Language.Rzk.Syntax.Abs.ASCII_CubeUnitStar _ -> prPrec i 7 (concatD [doc (showString "*_1")])- Language.Rzk.Syntax.Abs.ASCII_Cube2_0 _ -> prPrec i 7 (concatD [doc (showString "0_2")])- Language.Rzk.Syntax.Abs.ASCII_Cube2_1 _ -> prPrec i 7 (concatD [doc (showString "1_2")])- Language.Rzk.Syntax.Abs.ASCII_CubeI _ -> prPrec i 7 (concatD [doc (showString "II")])- Language.Rzk.Syntax.Abs.ASCII_CubeI_0 _ -> prPrec i 7 (concatD [doc (showString "0_I")])- Language.Rzk.Syntax.Abs.ASCII_CubeI_1 _ -> prPrec i 7 (concatD [doc (showString "1_I")])- Language.Rzk.Syntax.Abs.ASCII_TopeTop _ -> prPrec i 7 (concatD [doc (showString "TOP")])- Language.Rzk.Syntax.Abs.ASCII_TopeBottom _ -> prPrec i 7 (concatD [doc (showString "BOT")])+ Language.Rzk.Syntax.Abs.ASCII_CubeUnitStar _ -> prPrec i 8 (concatD [doc (showString "*_1")])+ Language.Rzk.Syntax.Abs.ASCII_Cube2_0 _ -> prPrec i 8 (concatD [doc (showString "0_2")])+ Language.Rzk.Syntax.Abs.ASCII_Cube2_1 _ -> prPrec i 8 (concatD [doc (showString "1_2")])+ Language.Rzk.Syntax.Abs.ASCII_CubeI _ -> prPrec i 8 (concatD [doc (showString "II")])+ Language.Rzk.Syntax.Abs.ASCII_CubeI_0 _ -> prPrec i 8 (concatD [doc (showString "0_I")])+ Language.Rzk.Syntax.Abs.ASCII_CubeI_1 _ -> prPrec i 8 (concatD [doc (showString "1_I")])+ Language.Rzk.Syntax.Abs.ASCII_TopeTop _ -> prPrec i 8 (concatD [doc (showString "TOP")])+ Language.Rzk.Syntax.Abs.ASCII_TopeBottom _ -> prPrec i 8 (concatD [doc (showString "BOT")]) Language.Rzk.Syntax.Abs.ASCII_TopeEQ _ term1 term2 -> prPrec i 4 (concatD [prt 5 term1, doc (showString "==="), prt 5 term2]) Language.Rzk.Syntax.Abs.ASCII_TopeLEQ _ term1 term2 -> prPrec i 4 (concatD [prt 5 term1, doc (showString "<="), prt 5 term2]) Language.Rzk.Syntax.Abs.ASCII_TopeAnd _ term1 term2 -> prPrec i 3 (concatD [prt 4 term1, doc (showString "/\\"), prt 3 term2])
src/Language/Rzk/VSCode/ReferenceIndex.hs view
@@ -453,6 +453,10 @@ Rzk.Match _ scrut bs -> goTerm file env scrut ++ concatMap (matchBranchScope file env) bs Rzk.MatchInto _ scrut motive bs -> goTerm file env scrut ++ goTerm file env motive ++ concatMap (matchBranchScope file env) bs+ Rzk.MatchModal _ _ scrut bs ->+ goTerm file env scrut ++ concatMap (matchBranchScope file env) bs+ Rzk.MatchModalInto _ _ scrut motive bs ->+ goTerm file env scrut ++ goTerm file env motive ++ concatMap (matchBranchScope file env) bs Rzk.TypeAsc _ a b -> goTerm file env a ++ goTerm file env b Rzk.Universe{} -> []
src/Language/Rzk/VSCode/Tokenize.hs view
@@ -313,6 +313,15 @@ [ go scrut , go motive , foldMap tokenizeMatchBranch branches ]+ MatchModal _loc md scrut branches -> concat+ [ tokenizeModality md+ , go scrut+ , foldMap tokenizeMatchBranch branches ]+ MatchModalInto _loc md scrut motive branches -> concat+ [ tokenizeModality md+ , go scrut+ , go motive+ , foldMap tokenizeMatchBranch branches ] ModType _loc md type_ -> concat [tokenizeModality md, go type_] ModApp _loc md te -> concat [tokenizeModality md, go te]
src/Rzk/Diagnostic.hs view
@@ -7,14 +7,15 @@ -- pre-formatted string. The core library produces these; the LSP maps them to -- LSP diagnostics, and the CLI can emit them as JSON (@rzk typecheck --json@). ----- Locations are line-level: rzk currently retains only file + line at the point--- an error is produced (the column is discarded, and core terms keep no--- per-node position), so diagnostics point at the enclosing command's line.+-- Locations give the source node's line and column when available, otherwise+-- the nearest enclosing position retained by the checker. module Rzk.Diagnostic where +import Data.List (intercalate) import Data.Aeson (ToJSON (..), Value (String), object, (.=)) +import Language.Rzk.Foil.Names (TModality (Id)) import Rzk.TypeCheck -- | Diagnostic severity, mirroring the usual LSP levels.@@ -35,7 +36,7 @@ -- -- > { "severity": "error" | "warning" | "information" | "hint" -- > , "code": <string> -- "hole", or a TypeError tag (e.g. "TypeErrorUnify")--- > , "location": { "file": <string|null>, "line": <int|null> } | null+-- > , "location": { "file": <string|null>, "line": <int|null>, "column": <int|null> } | null -- > , "message": <string> -- human-facing prose (the CLI/LSP display text) -- > , "hole": <HoleData> | null -- present only for hole diagnostics (see 'HoleData') -- > }@@ -46,7 +47,7 @@ data Diagnostic = Diagnostic { diagnosticSeverity :: Severity , diagnosticCode :: String -- ^ stable category, e.g. @\"TypeErrorUnify\"@ or @\"hole\"@- , diagnosticLocation :: Maybe LocationInfo -- ^ file + line (line-level granularity)+ , diagnosticLocation :: Maybe LocationInfo -- ^ file, line and column when available , diagnosticMessage :: String , diagnosticHole :: Maybe HoleData -- ^ structured hole payload ('Nothing' for type errors) } deriving (Eq, Show)@@ -61,11 +62,18 @@ -- > { "name": <string|null> -- the ?name, if the hole was named -- > , "goal": <string> -- the expected type (the goal) -- > , "shape": { "binder": <string>, "tope": <string> } | null--- > , "termVars": [ { "name": <string>, "type": <string> }, ... ]--- > , "cubeVars": [ { "name": <string>, "type": <string> }, ... ]--- > , "topes": [ <string>, ... ] -- local tope assumptions (excludes ⊤)+-- > , "termVars": [ <entry>, ... ]+-- > , "cubeVars": [ <entry>, ... ]+-- > , "topes": [ <string>, ... ] -- tope assumptions in force (excludes ⊤)+-- > , "topeInfo": [ { "tope": <string>, <modal> }, ... ] -- all tope assumptions -- > } --+-- where an @<entry>@ is @{ "name": <string>, "type": <string>, <modal> }@ and+-- @<modal>@ is @"modality": <string>, "locks": <string>, "accessible": <bool>@:+-- the declared modality, the locks accumulated since, and whether the entry+-- can be used at the hole. An inaccessible tope is not in force, so it appears+-- in @topeInfo@ but not in @topes@.+-- -- Notes for consumers: -- -- * @shape@ is non-null only for a shape-restricted /argument/ goal, where the@@ -78,11 +86,28 @@ { holeDataName :: Maybe String -- ^ the @?name@, if named , holeDataGoal :: String -- ^ the goal (expected type) , holeDataShape :: Maybe (String, String) -- ^ (binder, tope) for a shape-argument goal- , holeDataTermVars :: [(String, String)] -- ^ local hypotheses: (name, type)- , holeDataCubeVars :: [(String, String)] -- ^ local cube variables: (name, type)- , holeDataTopes :: [String] -- ^ local tope assumptions (excluding ⊤)+ , holeDataTermVars :: [HoleDataEntry]+ , holeDataCubeVars :: [HoleDataEntry]+ , holeDataTopes :: [HoleDataTope] } deriving (Eq, Show) +data HoleDataEntry = HoleDataEntry+ { holeDataEntryName :: String+ , holeDataEntryType :: String+ , holeDataEntryMode :: HoleModalData+ } deriving (Eq, Show)++data HoleDataTope = HoleDataTope+ { holeDataTopeValue :: String+ , holeDataTopeMode :: HoleModalData+ } deriving (Eq, Show)++data HoleModalData = HoleModalData+ { holeModalModality :: String+ , holeModalLocks :: String+ , holeModalAccessible :: Bool+ } deriving (Eq, Show)+ instance ToJSON Severity where toJSON = String . \case SeverityError -> "error"@@ -115,17 +140,32 @@ , "shape" .= fmap shapeToJSON holeDataShape , "termVars" .= map entryToJSON holeDataTermVars , "cubeVars" .= map entryToJSON holeDataCubeVars- , "topes" .= holeDataTopes+ , "topes" .= [ holeDataTopeValue t | t <- holeDataTopes+ , holeModalAccessible (holeDataTopeMode t) ]+ , "topeInfo" .= map topeToJSON holeDataTopes ] where shapeToJSON (binder, tope) = object [ "binder" .= binder, "tope" .= tope ]- entryToJSON (name, ty) = object [ "name" .= name, "type" .= ty ]+ entryToJSON HoleDataEntry{..} = object+ [ "name" .= holeDataEntryName, "type" .= holeDataEntryType+ , "modality" .= holeModalModality holeDataEntryMode+ , "locks" .= holeModalLocks holeDataEntryMode+ , "accessible" .= holeModalAccessible holeDataEntryMode+ ]+ topeToJSON HoleDataTope{..} = object+ [ "tope" .= holeDataTopeValue+ , "modality" .= holeModalModality holeDataTopeMode+ , "locks" .= holeModalLocks holeDataTopeMode+ , "accessible" .= holeModalAccessible holeDataTopeMode+ ] -- | A stable tag for a type error, used as its diagnostic code. Independent of -- the variable type, so it survives the scoped-error unfolding. typeErrorTag :: TypeError n -> String typeErrorTag = \case TypeErrorOther{} -> "TypeErrorOther"+ TypeErrorRSTT{} -> "TypeErrorRSTT"+ TypeErrorSchematic{} -> "TypeErrorSchematic" TypeErrorUnify{} -> "TypeErrorUnify" TypeErrorUnifyTerms{} -> "TypeErrorUnifyTerms" TypeErrorNotPair{} -> "TypeErrorNotPair"@@ -213,6 +253,80 @@ , diagnosticHole = Nothing } +diagnoseCheckWarning (RSTTScopeWarning extension feature loc) = Diagnostic+ { diagnosticSeverity = SeverityWarning+ , diagnosticCode = case extension of+ RSTTModal -> "RSTTModalWarning"+ RSTTInterval -> "RSTTIntervalWarning"+ RSTTInductive -> "RSTTInductiveWarning"+ RSTTShapeDependency -> "RSTTShapeDependencyWarning"+ RSTTUnsupported -> "RSTTSyntaxWarning"+ RSTTSchematic -> "RSTTSchematicWarning"+ , diagnosticLocation = loc+ , diagnosticMessage = feature <> " is outside RSTT"+ , diagnosticHole = Nothing+ }+diagnoseCheckWarning (RSTTIncompleteWarning reason loc) = Diagnostic+ { diagnosticSeverity = SeverityWarning+ , diagnosticCode = "RSTTIncompleteWarning"+ , diagnosticLocation = loc+ , diagnosticMessage = reason+ , diagnosticHole = Nothing+ }+diagnoseCheckWarning (RSTTHoleWarning loc) = Diagnostic+ { diagnosticSeverity = SeverityWarning+ , diagnosticCode = "RSTTHoleWarning"+ , diagnosticLocation = loc+ , diagnosticMessage = "RSTT fragment check has an unfinished obligation"+ , diagnosticHole = Nothing+ }+diagnoseCheckWarning (OverhangWarning what tope topes loc) = Diagnostic+ { diagnosticSeverity = SeverityWarning+ , diagnosticCode = "OverhangWarning"+ , diagnosticLocation = loc+ , diagnosticMessage =+ what <> " overhangs the local tope context: " <> tope+ <> " does not entail " <> intercalate " ∧ " topes+ , diagnosticHole = Nothing+ }++diagnoseCheckWarning (TopeFamilyDomainWarning family domain loc) = Diagnostic+ { diagnosticSeverity = SeverityWarning+ , diagnosticCode = "TopeFamilyDomainWarning"+ , diagnosticLocation = loc+ , diagnosticMessage =+ "tope family " <> family+ <> " is not included in its declared domain " <> domain+ <> "; it is read as its intersection with the domain"+ , diagnosticHole = Nothing+ }++diagnoseCheckWarning (FreeStandingRestrictionWarning defName ty use loc) = Diagnostic+ { diagnosticSeverity = SeverityWarning+ , diagnosticCode = "FreeStandingRestrictionWarning"+ , diagnosticLocation = loc+ , diagnosticMessage =+ "free-standing restriction assumed at " <> place <> ": " <> ty+ <> " (in " <> show defName <> ")"+ , diagnosticHole = Nothing+ }+ where+ place = case use of+ UseBinder -> "a binder"+ UseMotive -> "an eliminator motive"+ UseData -> "a type passed as data"+ UseIdentity -> "the type of an identity type"+ UseConcluded -> "a concluded type, off the spine of codomains"+diagnoseCheckWarning (MetaBinderWarning defName varName ty loc) = Diagnostic+ { diagnosticSeverity = SeverityWarning+ , diagnosticCode = "MetaBinderWarning"+ , diagnosticLocation = loc+ , diagnosticMessage =+ "schematic binder inside a term: " <> show varName <> " : " <> ty+ <> " is bound below the parameter prefix (in " <> show defName <> ")"+ , diagnosticHole = Nothing+ }+ -- | A checker warning as a human-readable line (the CLI). ppCheckWarning :: CheckWarning -> String ppCheckWarning = ("Warning: " <>) . diagnosticMessage . diagnoseCheckWarning@@ -248,10 +362,23 @@ , holeDataShape = fmap (\(s, tope) -> (show s, show tope)) holeGoalShape , holeDataTermVars = map entry holeTermVars , holeDataCubeVars = map entry holeCubeVars- , holeDataTopes = map show holeTopes+ , holeDataTopes = map topeEntry holeTopes } where- entry e = (show (holeEntryName e), show (holeEntryType e))+ entry e = HoleDataEntry+ { holeDataEntryName = show (holeEntryName e)+ , holeDataEntryType = show (holeEntryType e)+ , holeDataEntryMode = modalData (holeEntryMode e)+ }+ topeEntry e = HoleDataTope+ { holeDataTopeValue = show (holeTopeValue e)+ , holeDataTopeMode = modalData (holeTopeMode e)+ }+ modalData mode = HoleModalData+ { holeModalModality = ppModality (holeItemModality mode)+ , holeModalLocks = ppModality (holeItemLocks mode)+ , holeModalAccessible = holeItemAccessible mode+ } -- | Render a hole's goal and local context (the structured query) for display, -- separating term variables, cube variables, and tope assumptions.@@ -266,7 +393,10 @@ <> section "cube variables" holeCubeVars <> (if null holeTopes then []- else " tope context:" : [ " " <> show t | t <- holeTopes ])+ else " tope context:"+ : [ " " <> availability (holeItemAccessible (holeTopeMode entry))+ <> show (holeTopeValue entry) <> modalSuffix (holeTopeMode entry)+ | entry <- holeTopes ]) where -- a shape goal reads (binder : cube | tope); otherwise just the type goalStr = case holeGoalShape of@@ -275,8 +405,17 @@ section title entries | null entries = [] | otherwise = (" " <> title <> ":")- : [ " " <> show (holeEntryName e) <> " : " <> show (holeEntryType e)+ : [ " " <> availability (holeItemAccessible (holeEntryMode e))+ <> show (holeEntryName e) <> " : " <> show (holeEntryType e)+ <> modalSuffix (holeEntryMode e) | e <- entries ]+ availability True = ""+ availability False = "× "+ modalSuffix mode+ | holeItemModality mode == Id && holeItemLocks mode == Id = ""+ | otherwise =+ " [modality: " <> ppModality (holeItemModality mode)+ <> ", locks: " <> ppModality (holeItemLocks mode) <> "]" ppLocationInfo :: LocationInfo -> String ppLocationInfo (LocationInfo mpath mline mcol) =
src/Rzk/TypeCheck/Context.hs view
@@ -9,32 +9,14 @@ {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-} --- | The typing context on free-foil.------ The successor of @Rzk.TypeCheck@'s @Context var@. Two things change, and they--- are the point of the migration.------ [A variable is a name, and so is a top-level entry.] A free-foil term refers to--- a variable by 'Foil.Name' (an @Int@), and by nothing else: there is no way to--- put a 'VarIdent' inside a term. So a top-level definition is a name too, bound--- in the outermost scope with no binder above it, and the hypotheses — global and--- local alike — are one 'Foil.NameMap', looked up in constant time. The old--- context was an association list keyed by a @var@ whose equality walked an--- @S@-chain; @lookupVarInfo@ alone was 11.5% of the checker's time. The surface--- name of an entry is resolved through 'ctxNamed'.------ This also gives sections their natural shape. A @#assume@d assumption is an--- ordinary binder, so the definitions of a section are checked in its scope, and--- closing the section abstracts the assumption by pairing its binder with the--- body — no rewrite of the elaborated terms (see @Rzk.TypeCheck.Decl@).+-- | The typing context for the free-foil core. Local hypotheses and top-level+-- entries are keyed by 'Foil.Name'; separate fields retain surface identifiers+-- and binding order for elaboration and display. ----- [Entering a binder rebuilds nothing.] 'enterBinder' extends the scope and--- sinks the rest of the context by coercion, so it costs O(1) rather than a walk--- of the context. The old @enterScopeContext@ mapped @S \<$\>@ over the whole--- context, rebuilding every elaborated term it held; the heap profile showed--- those forced copies retaining most of the live heap, and @GlobalScopeInfo@ /--- @globalEmbed@ (PR #277) exist only to keep that shift off the ~1500 top-level--- entries. All of that machinery is gone.+-- Entering a binder carries scoped terms into the extended scope by coercion+-- and records the new entry. Section assumptions are ordinary bindings;+-- closing a section abstracts dependencies and rewrites uses of the resulting+-- parameterised definitions (see "Rzk.TypeCheck.Decl"). module Rzk.TypeCheck.Context where import Control.Monad.Foil (DExt, Distinct, NameBinder,@@ -90,9 +72,14 @@ Nothing -> loc Just (line, col) -> loc { locationLine = Just line, locationColumn = Just col } +-- | Schematic validation is cached separately from ordinary typechecking.+data SchematicStatus = SchematicUnchecked | SchematicChecked | SchematicRejected+ deriving (Eq)+ -- | What is known about a hypothesis, local or top-level. data VarInfo n = VarInfo- { varType :: TermT n+ { varSchematicStatus :: SchematicStatus+ , varType :: TermT n , varValue :: Maybe (TermT n) , varModality :: TModality , varModAccum :: TModality@@ -137,7 +124,7 @@ -- after the parameters, and the 0-based positions of its recursive -- fields (each contributes an induction hypothesis right after the -- field in the method)- | DataElimKind Int Int ElimKind+ | DataElimKind TModality Int Int ElimKind -- ^ an eliminator: the number of methods (one per constructor, in -- declaration order) and the number of indices of the family; the -- spine is parameters, motive, methods, indices, scrutinee@@ -263,18 +250,36 @@ , ctxHintLemmas :: [VarIdent] -- ^ Named top-level definitions a hole's candidate list may draw on, beyond -- the local hypotheses (see 'withHintLemmas').+ , ctxRSTTSafe :: RSTTSafeMode+ -- ^ Off by default: the fragment checks multiply the checking time of a+ -- large development several times over. Set with+ -- @#set-option "rstt-safe" = "warn" | "error" | "off"@ or @--rstt-safe@.+ , ctxRSTTSafeOverride :: Maybe RSTTSafeMode+ -- ^ A CLI selection applies throughout the run, despite source options. , ctxWarnOverhang :: Bool- -- ^ When 'True', a restriction face or @recOR@ guard that overhangs the- -- local tope context (is not entailed by it, while still overlapping it)- -- is reported with a non-fatal hint. Off by default: deciding the- -- overhang costs a solver entailment per face and guard, and the overhang- -- is legitimate (see @happy-restrict-face-not-contained@). Enabled with- -- @#set-option "warn-overhang" "yes"@. The /disjointness/ error next to- -- it is unaffected: a vacuous face is always rejected.+ -- ^ Warn when a face or guard overlaps but does not entail the local tope+ -- context. Off by default; disjoint faces remain errors. , ctxMetaPrefixSensitivity :: MetaPrefixSensitivity -- ^ How sensitively the meta-parameter layer check classifies use -- positions (see "Rzk.TypeCheck.MetaPrefix"). Strict by default; set -- with @#set-option "warn-meta-prefix" = "off" | "structural" | "strict"@.+ , ctxWarnTopeFamilyDomain :: Bool+ -- ^ When 'True' (the default), a tope family checked against a domain+ -- type that it is not included in is reported with a warning: the+ -- checker reads it as its intersection with the domain (see the λ case of+ -- 'typecheck'), so the family checked differs from the family written.+ -- Costs nothing beyond the entailment that decides the intersection.+ -- Disabled with @#set-option "warn-tope-family-domain" = "no"@.+ , ctxStandaloneWarnFreeStandingRestriction :: Bool+ -- ^ Standalone restriction check, disabled by default.+ -- RSTT-safe mode enables the check regardless of this setting.+ , ctxStandaloneWarnShapeDependency :: Bool+ -- ^ Standalone shape-dependency check, disabled by default: it is the+ -- costly part of the fragment checks.+ -- RSTT-safe mode enables the check regardless of this setting.+ , ctxStandaloneWarnMetaBinder :: Bool+ -- ^ Standalone schematic-binder check, disabled by default.+ -- RSTT-safe mode enables the check regardless of this setting. } -- | The sensitivity levels of the meta-parameter layer check.@@ -319,8 +324,14 @@ , ctxHolesAreErrors = True , ctxDeferHoleMismatches = True , ctxHintLemmas = []+ , ctxRSTTSafe = RSTTSafeOff+ , ctxRSTTSafeOverride = Nothing , ctxWarnOverhang = False , ctxMetaPrefixSensitivity = MetaPrefixStrict+ , ctxWarnTopeFamilyDomain = True+ , ctxStandaloneWarnFreeStandingRestriction = False+ , ctxStandaloneWarnShapeDependency = False+ , ctxStandaloneWarnMetaBinder = False } -- | The tope context of an empty context: @⊤@ holds under every modality.@@ -530,6 +541,10 @@ isAccessible :: ModalTope n -> Bool isAccessible mt = coe (tModVar mt) (tModAccum mt) +isVarAccessible :: VarInfo n -> Bool+isVarAccessible info =+ varIsTopLevel info || coe (varModality info) (varModAccum info)+ filterAccessible :: [ModalTope n] -> [ModalTope n] filterAccessible = filter isAccessible @@ -562,3 +577,33 @@ -- than being deferred (see 'ctxDeferHoleMismatches'). structuralHoleUnify :: Context n -> Context n structuralHoleUnify ctx = ctx { ctxDeferHoleMismatches = False }++-- | Policy for reporting RSTT fragment violations.+data RSTTSafeMode = RSTTSafeOff | RSTTSafeWarn | RSTTSafeError+ deriving (Eq, Show, Read)++rsttSafeMode :: Context n -> RSTTSafeMode+rsttSafeMode ctx = case ctxRSTTSafeOverride ctx of+ Just mode -> mode+ Nothing -> ctxRSTTSafe ctx++rsttSafeEnabled :: Context n -> Bool+rsttSafeEnabled ctx = rsttSafeMode ctx /= RSTTSafeOff++-- | Whether to check free-standing restrictions, including RSTT-safe requirements.+ctxWarnFreeStandingRestriction :: Context n -> Bool+ctxWarnFreeStandingRestriction ctx =+ rsttSafeEnabled ctx || ctxStandaloneWarnFreeStandingRestriction ctx++-- | Whether to check shape dependencies, including RSTT-safe requirements.+ctxWarnShapeDependency :: Context n -> Bool+ctxWarnShapeDependency ctx = rsttSafeEnabled ctx || ctxStandaloneWarnShapeDependency ctx++-- | Whether to check schematic binders, including RSTT-safe requirements.+ctxWarnMetaBinder :: Context n -> Bool+ctxWarnMetaBinder ctx = rsttSafeEnabled ctx || ctxStandaloneWarnMetaBinder ctx++effectiveMetaPrefixSensitivity :: Context n -> MetaPrefixSensitivity+effectiveMetaPrefixSensitivity ctx+ | rsttSafeEnabled ctx = MetaPrefixStrict+ | otherwise = ctxMetaPrefixSensitivity ctx
src/Rzk/TypeCheck/Decl.hs view
@@ -29,6 +29,8 @@ import Data.Data (Data, cast, gmapQ) import Control.Monad.Reader (ask, asks, local) import Data.List (intercalate)+import qualified Data.IntMap.Strict as IntMap+import qualified Data.IntSet as IntSet import qualified Data.Map as Map import qualified Data.Text as T import Debug.Trace (trace)@@ -50,6 +52,8 @@ import Rzk.TypeCheck.Error import Rzk.TypeCheck.Eval import Rzk.TypeCheck.Judgements+import qualified Rzk.TypeCheck.Fragment.RSTT as RSTT+import Rzk.TypeCheck.Schematic (recordSchematicDeclaration) import Rzk.TypeCheck.MetaPrefix import Rzk.TypeCheck.Monad import Rzk.TypeCheck.Render@@ -127,6 +131,10 @@ checkTopLevelDuplicate name metaPrefix <- metaPrefixOf ty recordMetaPrefixUses name ty mval+ -- Postulates and failed definitions supply assumptions, so require ext-style types.+ RSTT.recordFragmentUses name ty mval+ (isAssumption || maybe True (const False) mval)+ schematicStatus <- recordSchematicDeclaration name ty mval ctx <- ask Foil.withFresh (ctxScope ctx) $ \binder -> do let info = VarInfo@@ -140,6 +148,7 @@ , varDeclaredAssumptions = usedVars , varLocation = ctxLocation ctx , varDataRole = mrole+ , varSchematicStatus = schematicStatus , varMetaPrefix = metaPrefix } ctx' = recordInSection (Foil.nameOf binder) (enterBinder binder info [] ctx)@@ -200,6 +209,8 @@ tolerateUnused = lenient && sectionHasHole (kept0, errs') <- collectSectionDecls tolerateUnused errs [] infos+ -- Section abstraction changes dependency signatures and applications.+ modifyLog $ \log -> log { logSchematicCache = IntSet.empty, logSchematicObjectFamilies = IntMap.empty } -- Abstracting over the section's assumptions rewrote the entries' types, -- which can change their meta-parameter prefix (an assumption such as@@ -295,16 +306,15 @@ | otherwise = collectSectionDecls tolerate errs (entry : recent) rest --- | Abstract one assumption out of the definitions that come after it.------ A definition that mentions the assumption gains it as an explicit parameter, and--- every later definition that mentions /that/ definition is rewritten to apply it--- to the assumption. A definition that mentions it without declaring it in its--- @uses@ clause is an implicit assumption, and an error. -- | Whether an assumption was taken up by (abstracted into) any definition -- that followed it in its section. data AssumptionUse = AssumptionUsed | AssumptionUnused +-- | Abstract an assumption out of the definitions that depend on it, and+-- rewrite later uses of those definitions to supply the assumption.+-- Dependencies present only through other names' types need @uses@;+-- explicit occurrences in the written type or body need no such clause.+-- Datatype formers abstracted with their family are exempt from this check. makeAssumptionExplicit :: forall n. Distinct n => (Foil.Name n, VarInfo n)@@ -372,7 +382,8 @@ :: Distinct n => Foil.Scope n -> Foil.Name n -> VarInfo n -> VarInfo n -> VarInfo n abstractOver scope a aInfo info = info- { varType = newType+ { varSchematicStatus = SchematicUnchecked+ , varType = newType , varValue = fmap abstractValue (varValue info) , varModality = Id , varModAccum = Id@@ -400,7 +411,8 @@ applyToAssumption scope a (defName, defInfo) info | varIsAssumption info = info | otherwise = info- { varType = rewrite (varType info)+ { varSchematicStatus = SchematicUnchecked+ , varType = rewrite (varType info) , varValue = rewrite <$> varValue info } where@@ -433,8 +445,12 @@ "no" -> localHideTerm False _ -> const $ issueTypeError $ TypeErrorOther "unknown value for \"render-hide-term\" (use \"yes\" or \"no\")"--- The overhang hint costs a solver entailment per restriction face and recOR--- guard, so it is off by default and opted into per module (or scope).+setOption "rstt-safe" = \case+ "warn" -> local $ \ctx -> ctx { ctxRSTTSafe = RSTTSafeWarn }+ "error" -> local $ \ctx -> ctx { ctxRSTTSafe = RSTTSafeError }+ "off" -> local $ \ctx -> ctx { ctxRSTTSafe = RSTTSafeOff }+ _ -> const $ issueTypeError $ TypeErrorOther "unknown rstt-safe mode (use warn, error, or off)"+-- Opt-in: overhang checking adds a solver query per face or guard. setOption "warn-overhang" = \case "yes" -> localWarnOverhang True "no" -> localWarnOverhang False@@ -448,6 +464,29 @@ "strict" -> localMetaPrefixSensitivity MetaPrefixStrict _ -> const $ issueTypeError $ TypeErrorOther "unknown value for \"warn-meta-prefix\" (use \"off\", \"structural\", or \"strict\")"+-- A tope family not included in its declared domain is read as the+-- intersection with the domain; the warning says so. On by default.+setOption "warn-tope-family-domain" = \case+ "yes" -> localWarnTopeFamilyDomain True+ "no" -> localWarnTopeFamilyDomain False+ _ -> const $+ issueTypeError $ TypeErrorOther "unknown value for \"warn-tope-family-domain\" (use \"yes\" or \"no\")"+-- Standalone fragment settings; active safe mode enables these checks.+setOption "warn-free-standing-restriction" = \case+ "yes" -> localWarnFreeStandingRestriction True+ "no" -> localWarnFreeStandingRestriction False+ _ -> const $+ issueTypeError $ TypeErrorOther "unknown value for \"warn-free-standing-restriction\" (use \"yes\" or \"no\")"+setOption "warn-shape-dependency" = \case+ "yes" -> localWarnShapeDependency True+ "no" -> localWarnShapeDependency False+ _ -> const $+ issueTypeError $ TypeErrorOther "unknown value for \"warn-shape-dependency\" (use \"yes\" or \"no\")"+setOption "warn-meta-binder" = \case+ "yes" -> localWarnMetaBinder True+ "no" -> localWarnMetaBinder False+ _ -> const $+ issueTypeError $ TypeErrorOther "unknown value for \"warn-meta-binder\" (use \"yes\" or \"no\")" setOption optionName = const $ const $ issueTypeError $ TypeErrorOther ("unknown option " <> show optionName) @@ -455,9 +494,18 @@ unsetOption "verbosity" = localVerbosity (ctxVerbosity emptyContext) unsetOption "render" = localRenderBackend (ctxRenderBackend emptyContext) unsetOption "render-hide-term" = localHideTerm (ctxRenderHideTerm emptyContext)+unsetOption "rstt-safe" = local $ \ctx -> ctx { ctxRSTTSafe = ctxRSTTSafe emptyContext } unsetOption "warn-overhang" = localWarnOverhang (ctxWarnOverhang emptyContext) unsetOption "warn-meta-prefix" = localMetaPrefixSensitivity (ctxMetaPrefixSensitivity emptyContext)+unsetOption "warn-tope-family-domain" =+ localWarnTopeFamilyDomain (ctxWarnTopeFamilyDomain emptyContext)+unsetOption "warn-free-standing-restriction" =+ localWarnFreeStandingRestriction (ctxStandaloneWarnFreeStandingRestriction emptyContext)+unsetOption "warn-shape-dependency" =+ localWarnShapeDependency (ctxStandaloneWarnShapeDependency emptyContext)+unsetOption "warn-meta-binder" =+ localWarnMetaBinder (ctxStandaloneWarnMetaBinder emptyContext) unsetOption optionName = const $ issueTypeError $ TypeErrorOther ("unknown option " <> show optionName) @@ -488,8 +536,8 @@ -- terms by hand. -- -- The declaration grammar already covers the later stages; this checker--- rejects what it does not support (cube/shape and modal constructor--- fields, function-typed recursive fields).+-- rejects what it does not support (cube and shape parameters and indices,+-- modal type fields, function-typed recursive fields). -- | The index telescope of the sort. The sort must be @U@ (no indices) or a -- Π-telescope of plain types ending in @U@.@@ -514,6 +562,74 @@ p -> issueTypeError $ TypeErrorOther $ "an index of a #data sort must be a plain type, got " <> Rzk.printTree p +-- | The layer rule for the sort, on the elaborated form: every parameter and+-- index of a @#data@ must be a type. A cube point @(t : I)@ and a shape+-- point, in either spelling — named @(t : Φ)@ or inline @(t : I | φ)@ — are+-- rejected.+--+-- The surface checks in 'dataParamVars' and 'dataSortIndices' reject the+-- inline spelling only, because the other two are not recognisable+-- syntactically: @(t : Φ)@ looks exactly like a type-valued binder until @Φ@+-- is resolved. This check therefore walks the elaborated Π-telescope of the+-- sort, where a named shape has become the restricted binder @(t : I | Φ t)@+-- and a cube domain is recognisable by its sort, so the rule does not depend+-- on the spelling. The cube and tope /universes/ pass: a parameter of type+-- @CUBE@ or @I → TOPE@ ranges over cubes or shapes themselves, not over+-- their points, and the generic realisation+-- @#data Shape (I : CUBE) (phi : I → TOPE)@ depends on both.+--+-- The rule per position ('DomainKind' has the fine classification):+-- /parameters/ may be types, @CUBE@, @TOPE@, or plain tope families —+-- exactly the kinds of the meta-theoretic parameter layer of the Rzk paper+-- (a bare tope @(phi : TOPE)@ means the family @(phi : 1 → TOPE)@), which the+-- generic realisation @#data Shape (I : CUBE) (phi : I → TOPE)@ depends+-- on; /indices/ must be types, full stop. A family indexed by the cube+-- universe or by tope families is internal quantification over the+-- cube\/tope layers, which no written metatheory covers. The modal kinds+-- (@ᵒᵖ TOPE@, @♭ CUBE@, @♯ (I → TOPE)@, families into them, …) are+-- parameters too, as in a @#define@. This is part of the experimental+-- modal layer: the parameter layer has no modal account yet, but the+-- parameters are uniform, so the generated eliminators only abstract over+-- them, as a @#define@ with the same parameters would.+--+-- Rejecting is deliberate, not an accident of implementation. The generated+-- eliminators for a cube parameter or index are pointwise and look+-- plausible, but no metatheory is written down for an inductive family over+-- a shape — unlike shape /fields/, which are the representability rule of+-- Kudasov's 2021 note — and a family over a shape is what extension types+-- are for. A rejection can be relaxed later; an acceptance cannot be+-- revoked.+checkDataSortLayers+ :: Distinct n => [Rzk.ParamDecl] -> [SortIndex] -> TermT n -> TypeCheck n ()+checkDataSortLayers paramDecls sortIndices = go positions+ where+ positions =+ [ (True, spelledParam p) | p <- paramDecls ]+ <> [ (False, Rzk.printTree (sortIndexType si)) | si <- sortIndices ]+ spelledParam = \case+ Rzk.ParamTermType _ _ ty -> Rzk.printTree ty+ p -> Rzk.printTree p+ go :: Distinct m => [(Bool, String)] -> TermT m -> TypeCheck m ()+ go [] _ = pure ()+ go ((isParam, spelled) : rest) ty = whnfT ty >>= \case+ TypeFunT _ty orig md param mtope ret -> do+ let position+ | isParam = "a parameter of a #data must be a type, CUBE, TOPE, or a tope family, got "+ | otherwise = "an index of a #data sort must be a type, got "+ reject kind = issueTypeError $ TypeErrorOther $+ position <> kind <> ": " <> spelled+ case mtope of+ Just _ -> reject "a shape"+ Nothing -> classifyDomain param >>= \case+ DomainType -> pure ()+ DomainCubeUniverse | isParam -> pure ()+ DomainTopeUniverse | isParam -> pure ()+ DomainTopeFamily | isParam -> pure ()+ DomainModalTope | isParam -> pure ()+ kind -> reject (domainKindName kind)+ inScope orig md param ret (go rest)+ _ -> panicImpossible "#data sort has fewer Π binders than parameters and indices"+ dataBodyParts :: Rzk.DataBody -> ([Rzk.Constructor], [Rzk.DataElim]) dataBodyParts = \case Rzk.NoDataBody _ -> ([], [])@@ -534,24 +650,138 @@ "a parameter of a #data must be a typed variable (x : A), got " <> Rzk.printTree p --- | A constructor field: a typed parameter, with cube/shape fields rejected--- (over a directed interval they would declare directed cells, out of scope--- for M3) and modal fields deferred (crisp induction).+-- | A constructor field.+--+-- Plain typed fields @(x : A)@ and cube and shape fields are accepted, in+-- every spelling and also under a modality (@(t :♭ I | φ)@, @(t :♭ I)@,+-- @(t :♭ Φ)@); modal /type/ fields are not, and since that distinction is+-- not recognisable on the surface it is decided by+-- 'checkDataConFieldLayers' after elaboration. What a shape field means,+-- and why it is sound, is worth stating precisely, because the+-- neighbouring constructions are not.+--+-- A shape is a predicate on a cube, spelled @I -> TOPE@ as @Δ¹@ and @Λ²₁@ are,+-- and a field may name one (@(t : Φ)@), give a bare cube (@(t : I)@, the shape+-- whose tope is @⊤@), or write the shape inline (@(t : I | φ)@). The first two+-- were already accepted here; the third was rejected, with a message claiming+-- it would declare a directed cell. It does not: a cell needs face equations,+-- and the @#data@ grammar has no syntax for them. All three are the same+-- thing, so all three are accepted.+--+-- A shape field makes the declared type the /shape realisation/ @⌈{t : I | φ}⌉@:+-- @#data D := c (t : I | φ)@ is freely generated by a Φ-indexed family of+-- points with no identifications between them, and the generated recursor+--+-- > rec-D : (C : U) → ((t : I | φ) → C) → D → C+--+-- is exactly the representability rule of Kudasov's 2021 note, §4 "Shapes as+-- types" (<https://fizruk.github.io/files/%5Bnotes%5D%20N.Kudasov.%20Booleans%2C%20coproducts%20and%20shape%20types%20in%20type%20theory%20for%20synthetic%20%E2%88%9E-categories.pdf Booleans, coproducts and shape types in type theory for synthetic ∞-categories>):+-- elimination into an /extension type/, with strict computation+-- @rec-D C m (c p) ≡ m p@ on a syntactic point. Nothing is asked of @C@, so+-- no Segal or covariance condition appears, and nothing here produces a cube+-- term from type-layer data: a point goes /into/ a constructor and the+-- eliminator maps only /out/ into types. 'Rzk.Match' on such a constructor+-- binds the cube variable and brings φ into the branch's context, which is+-- where a tope belongs.+--+-- Three neighbouring things are deliberately /not/ enabled by this, and each+-- is blocked somewhere else rather than here:+--+-- * __Face equations__ on a field, which would declare a directed cell (the+-- directed circle and friends). Their eliminator needs a Segal or covariant+-- target and the metatheory is open. They are unreachable because the+-- @#data@ grammar has no syntax for them, not because of a check.+-- * __Modal type fields__, below.+--+-- Cube and shape /parameters/ and /indices/ go the other way: rejected in+-- every spelling. The inline spelling falls to the surface checks in+-- 'dataParamVars' and 'dataSortIndices'; the named and bare-cube spellings+-- look like type-valued binders on the surface and are caught by+-- 'checkDataSortLayers' on the elaborated sort, so the rule does not depend+-- on the spelling. dataFieldToParamDecl :: Distinct n => Rzk.VarIdent -> Rzk.Param -> TypeCheck n [Rzk.ParamDecl] dataFieldToParamDecl cname = \case p@Rzk.ParamPatternType{} -> paramToParamDecl p+ p@Rzk.ParamPatternShape{} -> paramToParamDecl p+ p@Rzk.ParamPatternModalShape{} -> paramToParamDecl p+ -- Not rejected here: whether a modal binder is a (fine) cube or shape+ -- field or a (rejected) modal type field is not recognisable on the+ -- surface — @(t :♭ Δ¹)@ looks exactly like @(x :♭ A)@ — so the decision+ -- is made by 'checkDataConFieldLayers' on the elaborated constructor type.+ p@Rzk.ParamPatternModalType{} -> paramToParamDecl p Rzk.ParamPattern _ pat -> issueTypeError $ TypeErrorOther $ "untyped field " <> Rzk.printTree pat <> " in constructor " <> Rzk.printTree cname- Rzk.ParamPatternShape{} -> issueTypeError $ TypeErrorOther $- "constructor " <> Rzk.printTree cname- <> " takes a cube or shape argument; over the directed interval this would declare a directed cell, which is not supported"- Rzk.ParamPatternModalType{} -> modalFieldError cname- Rzk.ParamPatternModalShape{} -> modalFieldError cname +-- | Modal /type/ fields are deferred; modal /cube/ and /shape/ fields are+-- accepted. The line between them is drawn by recursion, not by \"crisp+-- induction\".+--+-- A modal field of any kind is an ordinary constructor argument sitting+-- under a lock; the ordinary eliminator suffices for it, binding the field+-- with its modality so the lock discipline applies inside a branch, and no+-- new principle is involved. /Crisp induction/ — eliminating a crisp+-- @x :♭ D@ by cases — is a separate principle that @#data@ does not+-- provide either way.+--+-- What does distinguish the kinds is that a type field can be /recursive/,+-- and the recursion and positivity bookkeeping ('dataConSurface' collects+-- @fieldTypes@ and the probe from plain 'Rzk.ParamTermType' declarations+-- only) does not see through a modal binder: a modal recursive field would+-- silently evade the positivity probe and the induction-hypothesis+-- machinery. A cube or shape field cannot be recursive — its domain is not+-- a type — so nothing is evaded, and the modal form is as safe as the+-- plain one. modalFieldError :: Distinct n => Rzk.VarIdent -> TypeCheck n a modalFieldError cname = issueTypeError $ TypeErrorOther $- "modal fields are not supported yet in constructor " <> Rzk.printTree cname+ "modal type fields are not supported yet in constructor " <> Rzk.printTree cname +-- | The field rule, on the elaborated form: a constructor field must be a+-- type, a cube point, or a shape. That is the realisation fragment of+-- Kudasov's 2021 note — points go /into/ constructors and the eliminator+-- maps out into types — and nothing beyond it: a field of the cube universe,+-- of a tope-family kind, or of a modal cube or tope kind would /store/ a cube- or+-- tope-layer citizen inside type-layer data, which no written metatheory+-- covers ('DomainKind' names the rejected kinds).+--+-- The modal spelling adds one distinction the surface cannot make:+-- @(t :♭ Δ¹)@ and @(x :♭ A)@ are the same surface form+-- ('Rzk.ParamPatternModalType'), and only elaboration tells a named shape+-- from a type. A modal binder with a cube or shape domain is an ordinary+-- (modal) cube or shape field; with a type domain it is rejected+-- ('modalFieldError'). The check walks the elaborated constructor+-- Π-telescope past the parameters, exactly as 'checkDataSortLayers' does+-- for the sort.+checkDataConFieldLayers+ :: Distinct n+ => Rzk.VarIdent -> Int -> [Rzk.ParamDecl] -> TermT n -> TypeCheck n ()+checkDataConFieldLayers cname numParams fieldDecls =+ go (replicate numParams Nothing <> map fieldInfo fieldDecls)+ where+ fieldInfo d = Just (isModalTypeSpelling d, spelledField d)+ isModalTypeSpelling = \case+ Rzk.ParamTermModalType{} -> True+ _ -> False+ spelledField = \case+ Rzk.ParamTermType _ _ ty -> Rzk.printTree ty+ d -> Rzk.printTree d+ go :: Distinct m => [Maybe (Bool, String)] -> TermT m -> TypeCheck m ()+ go [] _ = pure ()+ go (checkInfo : rest) ty = whnfT ty >>= \case+ TypeFunT _ty orig md param mtope ret -> do+ forM_ checkInfo $ \(modalSpelled, spelled) -> case mtope of+ Just _ -> pure () -- a shape field, in any spelling and modality+ Nothing -> classifyDomain param >>= \case+ DomainCubePoint -> pure ()+ DomainType+ | modalSpelled -> modalFieldError cname+ | otherwise -> pure ()+ kind -> issueTypeError $ TypeErrorOther $+ "a field of constructor " <> Rzk.printTree cname+ <> " must be a type, a cube point, or a shape, got "+ <> domainKindName kind <> ": " <> spelled+ inScope orig md param ret (go rest)+ _ -> panicImpossible "constructor type has fewer Π binders than parameters and fields"+ dataConSurface :: Distinct n => Rzk.VarIdent -> [Rzk.VarIdent] -> [Rzk.ParamDecl] -> Int -> Rzk.Constructor@@ -616,12 +846,22 @@ , dataConSort = sort } where+ -- A shape field binds a cube variable, so it contributes a field variable+ -- and a field pattern exactly as a plain typed field does. Without these+ -- cases the field's type reaches the constructor but its binder does not,+ -- and 'conApplied' applies the constructor to too few arguments. fieldVars = \case- Rzk.ParamPatternType _ pats _ -> concatMap surfacePatternVars pats- _ -> []+ Rzk.ParamPatternType _ pats _ -> concatMap surfacePatternVars pats+ Rzk.ParamPatternShape _ pats _ _ -> concatMap surfacePatternVars pats+ Rzk.ParamPatternModalType _ pats _ _ -> concatMap surfacePatternVars pats+ Rzk.ParamPatternModalShape _ pats _ _ _ -> concatMap surfacePatternVars pats+ _ -> [] fieldPats = \case- Rzk.ParamPatternType _ pats _ -> map patternToTerm pats- _ -> []+ Rzk.ParamPatternType _ pats _ -> map patternToTerm pats+ Rzk.ParamPatternShape _ pats _ _ -> map patternToTerm pats+ Rzk.ParamPatternModalType _ pats _ _ -> map patternToTerm pats+ Rzk.ParamPatternModalShape _ pats _ _ _ -> map patternToTerm pats+ _ -> [] isIdentity = \case Rzk.TypeId{} -> True Rzk.TypeIdSimple{} -> True@@ -685,6 +925,10 @@ -> (forall l. (DExt n l, Distinct l) => [Decl l] -> TypeCheck l r) -> TypeCheck n r withDataDecls path used name paramVars paramDecls sortIndices consData elims k = do+ safe <- asks rsttSafeEnabled+ when safe $ do+ loc <- asks ctxLocation+ recordCheckWarning $ RSTTScopeWarning RSTTInductive "inductive declaration" loc -- The type former's type spells the sort as written: params → indices → U. let sortTerm = foldr wrapIndex (Rzk.Universe Nothing) sortIndices wrapIndex (SortIndex mv ty) body = case mv of@@ -692,6 +936,7 @@ Nothing -> surfaceArrow ty body dTyTerm <- elaborate (addParamDecls paramDecls sortTerm) dTy <- memoizeWHNF =<< typecheck dTyTerm universeT+ checkDataSortLayers paramDecls sortIndices dTy dDeps <- assumptionDepsOf dTy withTopLevel (varIdentAt path name) dTy Nothing False (nubNames (used <> dDeps)) Nothing $ \dBinder dDecl ->@@ -741,6 +986,7 @@ loc conTyTerm <- elaborate (dataConType con) conTy <- memoizeWHNF =<< typecheck conTyTerm universeT+ checkDataConFieldLayers (dataConName con) numParams (dataConFields con) conTy conDeps <- assumptionDepsOf conTy let conSort = case dataConSort con of DataConPoint -> PointCon@@ -864,37 +1110,51 @@ -- The surface types of the eliminators and the path computation rules -- (see "Rzk.TypeCheck.Decl.Data"), pushed through the ordinary -- elaborator below just like any user-written type.- let spec = ElimSpec- { esName = name, esParamVars = paramVars, esParamDecls = paramDecls+ let spec md = ElimSpec+ { esName = name, esModality = md+ , esParamVars = paramVars, esParamDecls = paramDecls , esIndexVars = indexVars, esIndexDecls = indexDecls, esMotiveV = motiveV , esScrutV = scrutV, esIhNames = ihNames, esMethodVars = methodVars , esEndpointV = endpointV, esPathV = pathV, esTransportV = transportV , esConsData = consData, esPathData = pathData }- et = elimTerms spec- indName = prefixedIdent "ind-" name- recName = prefixedIdent "rec-" name- (mindTy, mrecTy, computeReasc) <- splitClauses indName recName (map fst (computeRules et))- indTyT <- elaborate (indTypeTerm et)- indCanonical <- memoizeWHNF =<< typecheck indTyT universeT- indTy' <- reascribe indName indCanonical mindTy- indDeps <- assumptionDepsOf indTy'- withTopLevel (varIdentAt path indName) indTy' Nothing False- (nubNames (usedHere <> indDeps))- (Just (DataRole dName numParams (DataElimKind numMethods indexArity ElimInd))) $ \_ indDecl -> do- recTyT <- elaborate (recTypeTerm et)- recCanonical <- memoizeWHNF =<< typecheck recTyT universeT- recTy' <- reascribe recName recCanonical mrecTy- recDeps <- assumptionDepsOf recTy'- let usedAtInd = Foil.sink1 usedHere- withTopLevel (varIdentAt path recName) recTy' Nothing False- (nubNames (usedAtInd <> recDeps))- (Just (DataRole (Foil.sink dName) numParams (DataElimKind numMethods indexArity ElimRec))) $ \_ recDecl ->- bindComputes- (Foil.sink1 usedAtInd)- computeReasc- (computeRules et)- (sinkDecls (sinkDecls declsAcc <> [indDecl]) <> [recDecl])+ -- Modal eliminators are crisp induction (Shulman 2018, §5), valid+ -- for the left adjoints ♭ and ᵒᵖ. There is none for ♯: a right+ -- adjoint does not preserve coproducts or initial algebras (MTT,+ -- §10.5), and rec-sharp-Bool would retract ♯ Bool onto Bool.+ modalities = if hasPaths then [Id] else [Id, Op, Flat]+ modalTerms = [ (md, elimTerms (spec md)) | md <- modalities ]+ generated = concat+ [ [ (md, ElimInd, elimIdent "ind" md name, indTypeTerm et)+ , (md, ElimRec, elimIdent "rec" md name, recTypeTerm et) ]+ | (md, et) <- modalTerms ]+ computes = concatMap (computeRules . snd) modalTerms+ (elimReasc, computeReasc) <- splitClauses+ [ n | (_, _, n, _) <- generated ] (map fst computes)+ bindEliminators dName usedHere elimReasc computeReasc computes generated declsAcc + bindEliminators+ :: forall m. DExt n m+ => Foil.Name m -> [Foil.Name m]+ -> [(Rzk.VarIdentToken, Rzk.Term)]+ -> [(Rzk.VarIdentToken, Rzk.Term)]+ -> [(Rzk.VarIdent, Rzk.Term)]+ -> [(TModality, ElimKind, Rzk.VarIdent, Rzk.Term)]+ -> [Decl m]+ -> TypeCheck m r+ bindEliminators _dName usedHere _elimReasc computeReasc computes [] acc =+ bindComputes usedHere computeReasc computes acc+ bindEliminators dName usedHere elimReasc computeReasc computes+ ((md, kind, elimName, elimTy) : rest) acc = do+ tyT <- elaborate elimTy+ canonical <- memoizeWHNF =<< typecheck tyT universeT+ ty' <- reascribe elimName canonical (lookup (identTokenOf elimName) elimReasc)+ deps <- assumptionDepsOf ty'+ withTopLevel (varIdentAt path elimName) ty' Nothing False+ (nubNames (usedHere <> deps))+ (Just (DataRole dName numParams (DataElimKind md numMethods indexArity kind))) $ \_ decl ->+ bindEliminators (Foil.sink dName) (Foil.sink1 usedHere)+ elimReasc computeReasc computes rest (sinkDecls acc <> [decl])+ -- | Bind the generated @compute-@ lemmas (one @ind@/@rec@ pair per -- path constructor), re-ascribing the ones a @compute with@ clause -- names, then hand the accumulated declarations to the continuation of@@ -915,37 +1175,29 @@ bindComputes (Foil.sink1 usedHere) reasc rest (sinkDecls acc <> [decl]) - -- | Split the re-ascription clauses among the generated entries: the- -- two eliminators (@eliminate with@) and the computation rules of the- -- path constructors (@compute with@). A clause must name an entry of- -- the matching kind, at most once each. splitClauses :: Distinct m- => Rzk.VarIdent -> Rzk.VarIdent -> [Rzk.VarIdent]+ => [Rzk.VarIdent] -> [Rzk.VarIdent] -> TypeCheck m- (Maybe Rzk.Term, Maybe Rzk.Term, [(Rzk.VarIdentToken, Rzk.Term)])- splitClauses indName recName computeNames = go (Nothing, Nothing, []) elims+ ([(Rzk.VarIdentToken, Rzk.Term)], [(Rzk.VarIdentToken, Rzk.Term)])+ splitClauses elimNames computeNames = go ([], []) elims where go acc [] = pure acc- go (mind, mrec, mcomp) (Rzk.DataElim _loc elimName ty : rest)- | sameIdent elimName indName =- case mind of- Nothing -> go (Just ty, mrec, mcomp) rest- Just _ -> duplicate elimName- | sameIdent elimName recName =- case mrec of- Nothing -> go (mind, Just ty, mcomp) rest- Just _ -> duplicate elimName+ go (melims, mcomp) (Rzk.DataElim _loc elimName ty : rest)+ | any (sameIdent elimName) elimNames =+ if identTokenOf elimName `elem` map fst melims+ then duplicate elimName+ else go (melims <> [(identTokenOf elimName, ty)], mcomp) rest | otherwise = issueTypeError $ TypeErrorOther $ "eliminate with clause for " <> Rzk.printTree elimName <> ", which is not an eliminator of " <> Rzk.printTree name- <> " (the eliminators are " <> Rzk.printTree indName- <> " and " <> Rzk.printTree recName <> ")"- go (mind, mrec, mcomp) (Rzk.DataCompute _loc ruleName ty : rest)+ <> " (the eliminators are "+ <> intercalate ", " (map Rzk.printTree elimNames) <> ")"+ go (melims, mcomp) (Rzk.DataCompute _loc ruleName ty : rest) | any (sameIdent ruleName) computeNames = if identTokenOf ruleName `elem` map fst mcomp then duplicate ruleName- else go (mind, mrec, mcomp <> [(identTokenOf ruleName, ty)]) rest+ else go (melims, mcomp <> [(identTokenOf ruleName, ty)]) rest | otherwise = issueTypeError $ TypeErrorOther $ "compute with clause for " <> Rzk.printTree ruleName <> ", which is not a computation rule of " <> Rzk.printTree name@@ -1117,6 +1369,13 @@ Nothing -> Hole (Just (markUnresolved name)) pure (toTerm (ctxScope ctx) env term) +-- Check user syntax; generated inductive declarations are already excluded.+elaborateChecked :: Distinct n => Rzk.Term -> TypeCheck n (Term n)+elaborateChecked term = do+ core <- elaborate term+ atSurface term $ RSTT.recordSyntaxUses core+ pure core+ -- | Is a surface identifier defined at the top level? checkDefined :: Distinct n => VarIdent -> TypeCheck n (Foil.Name n) checkDefined name = asks (lookupNamed name) >>= \case@@ -1179,7 +1438,7 @@ typeResult <- tryCheck $ do used <- mapM (checkDefined . varIdentAt path) vars paramDecls <- concat <$> mapM paramToParamDecl params- tyTerm <- elaborate (addParamDecls paramDecls ty)+ tyTerm <- elaborateChecked (addParamDecls paramDecls ty) ty' <- atSurface ty $ memoizeWHNF =<< typecheck tyTerm universeT pure (used, ty') case typeResult of@@ -1191,8 +1450,15 @@ -- against it and its own errors and holes reported, instead of the -- run stopping at this one. result <- tryCheck $ do- valTerm <- elaborate (addParams params term)- atSurface term $ memoizeWHNF =<< typecheck valTerm ty'+ valTerm <- elaborateChecked (addParams params term)+ val' <- atSurface term $ memoizeWHNF =<< typecheck valTerm ty'+ -- A definition at type U must define a type: a body that is a+ -- universe kind would be a synonym smuggling the kind into+ -- every position that accepts U.+ whnfT ty' >>= \case+ UniverseT{} -> ensureTypeAtU "a definition at type U" val'+ _ -> pure ()+ pure val' let (mvalue, bodyErrors) = case result of Right term' -> (Just term', []) Left bodyErr -> (Nothing, [bodyErr])@@ -1229,7 +1495,7 @@ typeResult <- tryCheck $ do used <- mapM (checkDefined . varIdentAt path) vars paramDecls <- concat <$> mapM paramToParamDecl params- tyTerm <- elaborate (addParamDecls paramDecls ty)+ tyTerm <- elaborateChecked (addParamDecls paramDecls ty) ty' <- atSurface ty $ memoizeWHNF =<< typecheck tyTerm universeT pure (used, ty') case typeResult of@@ -1244,7 +1510,7 @@ <> intercalate " " [ Rzk.printTree name | name <- names ]) $ withCommand command k $ do typeResult <- tryCheck $ do- tyTerm <- elaborate ty+ tyTerm <- elaborateChecked ty atSurface ty $ typecheck tyTerm universeT case typeResult of Left typeError -> skippingCommand typeError path i total more k@@ -1259,10 +1525,13 @@ -- A #check declares nothing, so its failure costs the rest of the file -- nothing either. result <- tryCheck $ do- tyTerm <- elaborate ty- ty' <- atSurface ty $ typecheck tyTerm universeT >>= whnfT- termTerm <- elaborate term- _term' <- atSurface term $ typecheck termTerm ty'+ tyTerm <- elaborateChecked ty+ ty' <- atSurface ty $ typecheck tyTerm universeT+ termTerm <- elaborateChecked term+ term' <- atSurface term $ typecheck termTerm ty'+ recordMetaPrefixUses "#check" ty' (Just term')+ RSTT.recordFragmentUses "#check" ty' (Just term') False+ _ <- recordSchematicDeclaration "#check" ty' (Just term') pure () case result of Left err -> skippingCommand err path i total more k@@ -1275,8 +1544,12 @@ announce (" Computing NF for " <> Rzk.printTree term) $ withCommand command k $ do result <- tryCheck $ do- term' <- atSurface term $ elaborate term >>= infer >>= nfT- ppInContext term'+ term' <- atSurface term $ elaborateChecked term >>= infer+ ty' <- typeOfUncomputed term'+ recordMetaPrefixUses "#compute-nf" ty' (Just term')+ RSTT.recordFragmentUses "#compute-nf" ty' (Just term') False+ _ <- recordSchematicDeclaration "#compute-nf" ty' (Just term')+ nfT term' >>= ppInContext case result of Left err -> skippingCommand err path i total more k Right shown -> traceTypeCheck Normal (" " <> shown) $@@ -1286,8 +1559,12 @@ announce (" Computing WHNF for " <> Rzk.printTree term) $ withCommand command k $ do result <- tryCheck $ do- term' <- atSurface term $ elaborate term >>= infer >>= whnfT- ppInContext term'+ term' <- atSurface term $ elaborateChecked term >>= infer+ ty' <- typeOfUncomputed term'+ recordMetaPrefixUses "#compute" ty' (Just term')+ RSTT.recordFragmentUses "#compute" ty' (Just term') False+ _ <- recordSchematicDeclaration "#compute" ty' (Just term')+ whnfT term' >>= ppInContext case result of Left err -> skippingCommand err path i total more k Right shown -> traceTypeCheck Normal (" " <> shown) $
src/Rzk/TypeCheck/Decl/Data.hs view
@@ -19,7 +19,12 @@ import Data.Data (Data, cast, gmapQ) import qualified Data.Text as T +import Language.Rzk.Foil.Names (TModality (..),+ fromMod,+ fromTModalityToModalColon,+ modalColonToTModality) import qualified Language.Rzk.Syntax as Rzk+import Rzk.TypeCheck.Context (ModeTheory (comp)) import Rzk.TypeCheck.Display (panicImpossible) -- * Surface-syntax builders and preprocessed forms@@ -166,6 +171,46 @@ prefixedIdent p (Rzk.VarIdent pos (Rzk.VarIdentToken t)) = Rzk.VarIdent pos (Rzk.VarIdentToken (p <> t)) +modalityPrefix :: TModality -> T.Text+modalityPrefix = \case+ Id -> ""+ Op -> "op-"+ Flat -> "b-"+ Sharp -> "sharp-"++elimIdent :: T.Text -> TModality -> Rzk.VarIdent -> Rzk.VarIdent+elimIdent kind md = prefixedIdent (kind <> "-" <> modalityPrefix md)++modalizeParamDecl :: TModality -> Rzk.ParamDecl -> Rzk.ParamDecl+modalizeParamDecl Id param = param+modalizeParamDecl md param = case param of+ Rzk.ParamType loc ty ->+ Rzk.ParamTermModalType loc (surfaceVar underscoreIdent)+ (fromTModalityToModalColon md) ty+ Rzk.ParamTermType loc pat ty ->+ Rzk.ParamTermModalType loc pat (fromTModalityToModalColon md) ty+ Rzk.ParamTermShape loc pat cube tope ->+ Rzk.ParamTermModalShape loc pat (fromTModalityToModalColon md) cube+ (Rzk.ModType Nothing (fromMod md) tope)+ Rzk.ParamTermModalType loc pat mc ty ->+ Rzk.ParamTermModalType loc pat+ (fromTModalityToModalColon (comp md (modalColonToTModality mc))) ty+ Rzk.ParamTermModalShape loc pat mc cube tope ->+ Rzk.ParamTermModalShape loc pat+ (fromTModalityToModalColon (comp md (modalColonToTModality mc))) cube+ (Rzk.ModType Nothing (fromMod md) tope)++surfaceArrowModal :: TModality -> Rzk.Term -> Rzk.Term -> Rzk.Term+surfaceArrowModal Id = surfaceArrow+surfaceArrowModal md = surfacePiModal md underscoreIdent++surfacePiModal :: TModality -> Rzk.VarIdent -> Rzk.Term -> Rzk.Term -> Rzk.Term+surfacePiModal Id v ty ret = surfacePi v ty ret+surfacePiModal md v ty ret =+ Rzk.TypeFun Nothing+ (Rzk.ParamTermModalType Nothing (surfaceVar v)+ (fromTModalityToModalColon md) ty) ret+ -- | Index into a list that is long enough by construction, panicking with a -- label instead of the opaque @Prelude.!!@ message if that invariant is ever -- broken. Used where an index is derived from the same data as the list (the@@ -191,6 +236,7 @@ -- validated. data ElimSpec = ElimSpec { esName :: Rzk.VarIdent+ , esModality :: TModality , esParamVars :: [Rzk.VarIdent] , esParamDecls :: [Rzk.ParamDecl] , esIndexVars :: [Rzk.VarIdent]@@ -225,7 +271,8 @@ } where ElimSpec- { esName = name, esParamVars = paramVars, esParamDecls = paramDecls+ { esName = name, esModality = elimMd+ , esParamVars = paramVars, esParamDecls = paramDecls , esIndexVars = indexVars, esIndexDecls = indexDecls, esMotiveV = motiveV , esScrutV = scrutV, esIhNames = ihNames, esMethodVars = methodVars , esEndpointV = endpointV, esPathV = pathV, esTransportV = transportV@@ -236,9 +283,9 @@ -- The motive abstracts over the indices (and, dependently, the -- scrutinee); a method's hypotheses and codomain instantiate it -- at the relevant index terms.- motiveSort dependent = addParamDecls indexDecls $+ motiveSort dependent = addParamDecls (map (modalizeParamDecl elimMd) indexDecls) $ if dependent- then surfaceArrow dAppliedIx (Rzk.Universe Nothing)+ then surfaceArrowModal elimMd dAppliedIx (Rzk.Universe Nothing) else Rzk.Universe Nothing -- The constructor applied to the parameters and its own fields -- (for a path constructor, this is the declared identification).@@ -277,17 +324,17 @@ | otherwise -> Rzk.TypeIdSimple Nothing iL iR wrapFields nRec ((j, (fieldDecl, fpat)) : more) | Just fieldIxs <- lookup j (dataConRecursive con) =- Rzk.TypeFun Nothing fieldDecl $+ Rzk.TypeFun Nothing (modalizeParamDecl elimMd fieldDecl) $ surfacePi (nthByConstruction "induction hypotheses" ihNames nRec) (surfaceApps motive (fieldIxs <> [ fpat | dependent ])) (wrapFields (nRec + 1) more) | otherwise =- Rzk.TypeFun Nothing fieldDecl (wrapFields nRec more)- elimTail dependent = addParamDecls indexDecls $+ Rzk.TypeFun Nothing (modalizeParamDecl elimMd fieldDecl) (wrapFields nRec more)+ elimTail dependent = addParamDecls (map (modalizeParamDecl elimMd) indexDecls) $ if dependent- then surfacePi scrutV dAppliedIx $+ then surfacePiModal elimMd scrutV dAppliedIx $ surfaceApps motive (map surfaceVar indexVars <> [surfaceVar scrutV])- else surfaceArrow dAppliedIx $+ else surfaceArrowModal elimMd dAppliedIx $ surfaceApps motive (map surfaceVar indexVars) conWithPath = zip consData pathData methodsPis dependent inner = case methodVars of@@ -295,11 +342,11 @@ Just ms -> foldr (\(m, cp) rest -> surfacePi m (methodTy dependent cp) rest) inner (zip ms conWithPath)- elimTy dependent = addParamDecls paramDecls $+ elimTy dependent = addParamDecls (map (modalizeParamDecl elimMd) paramDecls) $ surfacePi motiveV (motiveSort dependent) $ methodsPis dependent (elimTail dependent)- indName = prefixedIdent "ind-" name- recName = prefixedIdent "rec-" name+ indName = elimIdent "ind" elimMd name+ recName = elimIdent "rec" elimMd name -- The propositional β-lemma per path constructor and eliminator: -- the section's action on the constructor's path (ap/apd, spelled -- through idJ) equals the path method at the fields, with the@@ -312,10 +359,10 @@ [ fpat : [ Rzk.App Nothing f fpat | j `elem` recPositionsOf con ] | (j, fpat) <- zip [0 :: Int ..] (dataConFieldPats con) ] computeTy dependent elimIdent m con l r =- addParamDecls paramDecls $+ addParamDecls (map (modalizeParamDecl elimMd) paramDecls) $ surfacePi motiveV (motiveSort dependent) $ methodsPis dependent $- addParamDecls (dataConFields con) $+ addParamDecls (map (modalizeParamDecl elimMd) (dataConFields con)) $ let f = sectionOf elimIdent fAt = Rzk.App Nothing f -- apd (dependent) or ap: the motive of the outer@@ -332,17 +379,18 @@ (Rzk.Refl Nothing) r (conApplied con) rhs = surfaceApps (surfaceVar m) (methodArgs f con) in Rzk.TypeIdSimple Nothing lhs rhs- computeNameFor pfx con =+ computeNameFor kind con = let Rzk.VarIdent pos (Rzk.VarIdentToken d) = name Rzk.VarIdentToken c = identTokenOf (dataConName con)- in Rzk.VarIdent pos (Rzk.VarIdentToken (pfx <> d <> "-" <> c))+ in Rzk.VarIdent pos+ (Rzk.VarIdentToken ("compute-" <> kind <> "-" <> modalityPrefix elimMd <> d <> "-" <> c)) computes = case methodVars of Nothing -> [] Just ms -> [ entry | (m, (con, Just ((l, r), _))) <- zip ms conWithPath , entry <-- [ ( computeNameFor "compute-ind-" con+ [ ( computeNameFor "ind" con , computeTy True indName m con l r )- , ( computeNameFor "compute-rec-" con+ , ( computeNameFor "rec" con , computeTy False recName m con l r ) ] ]
src/Rzk/TypeCheck/Error.hs view
@@ -23,21 +23,27 @@ import Data.List (intercalate) import Language.Rzk.Foil.Syntax-import Language.Rzk.Foil.Names (TModality (..), VarIdent, getVarIdent,+import Language.Rzk.Foil.Names (Binder, TModality (..), VarIdent,+ binderDisplayName, getVarIdent, ppVarIdentWithLocation) import qualified Language.Rzk.Syntax as Rzk import Rzk.TypeCheck.Context import Rzk.TypeCheck.Display +data SchematicProblem = SchematicKindMismatch | SchematicUnsupported | SchematicDependency+ deriving (Eq)+ data TypeError n = TypeErrorOther String+ | TypeErrorRSTT String+ | TypeErrorSchematic SchematicProblem String | TypeErrorUnify (TermT n) (TermT n) (TermT n) | TypeErrorUnifyTerms (TermT n) (TermT n) | TypeErrorNotPair (TermT n) (TermT n)- | TypeErrorNotModal (Term n) TModality (TermT n)- | TypeErrorModalityMismatch TModality TModality (Term n)+ | TypeErrorNotModal ModalTypeExpectation (Term n) TModality (TermT n)+ | TypeErrorModalityMismatch ModalityMismatchSite TModality TModality (Maybe (Term n)) | TypeErrorUnaccessibleVar (Foil.Name n) TModality TModality- | TypeErrorNotTypeInModal (TermT n)+ | TypeErrorNotTypeInModal TModality (Term n) (TermT n) | TypeErrorNotFunction (TermT n) (TermT n) | TypeErrorUnexpectedLambda (Term n) (TermT n) | TypeErrorUnexpectedPair (Term n) (TermT n)@@ -65,6 +71,18 @@ | TypeErrorMatchBranchArity VarIdent Int Int | TypeErrorReascribedTypeMismatch VarIdent (TermT n) (TermT n) +data ModalTypeExpectation+ = ModalTypeForIntroduction+ | ModalTypeForElimination++data ModalityMismatchSite+ = MismatchLambdaParameter Binder+ | MismatchModalIntroduction+ | MismatchModalElimination+ | MismatchFunctionType+ | MismatchSigmaType+ | MismatchLambda+ -- | An error, together with the context it was raised in. -- -- The scope index is existential: an error raised under a binder is /already/@@ -99,6 +117,8 @@ ppTypeError :: Naming n -> TypeError n -> String ppTypeError naming = \case TypeErrorOther msg -> msg+ TypeErrorSchematic _ msg -> "schematic declaration: " <> msg+ TypeErrorRSTT msg -> "RSTT-safe mode: " <> msg TypeErrorUnify term expected actual -> block TopDown [ "cannot unify expected type" , " " <> ppU (untyped expected)@@ -121,28 +141,35 @@ TypeFunT{} -> "\nPerhaps the term is applied to too few arguments?" _ -> "" ]- TypeErrorNotModal term m ty -> block TopDown- [ "expected modal type " <> ppModality m <> " ?"- , "but got type"- , " " <> ppU (untyped ty)- , "for term"- , " " <> ppU term+ TypeErrorNotModal expectation term modality ty -> block TopDown $+ case expectation of+ ModalTypeForIntroduction ->+ [ "cannot check modal introduction against a non-modal type"+ , " term: " <> ppU term+ , " expected type: " <> ppU (untyped ty)+ , "the expected type must have the form " <> ppModality modality <> " T"+ ]+ ModalTypeForElimination ->+ [ "cannot eliminate a non-modal value with `let mod " <> ppModality modality <> "`"+ , " value: " <> ppU term+ , " type: " <> ppU (untyped ty)+ , "the value's type must have the form " <> ppModality modality <> " T"+ ]+ TypeErrorModalityMismatch site expected actual mterm -> block TopDown $+ mismatchLines site expected actual+ <> maybe [] (\term -> ["in term", " " <> ppU term]) mterm+ TypeErrorUnaccessibleVar var varMod locks -> block TopDown+ [ "variable " <> ppVar var <> " is inaccessible in the current modal context"+ , " declared modality: " <> ppModality varMod+ , " current locks: " <> ppModality locks ]- TypeErrorModalityMismatch expected actual term -> block TopDown- [ "modality mismatch"- , " expected " <> ppModality expected- , " but got " <> ppModality actual- , "for term"+ TypeErrorNotTypeInModal modality term ty -> block TopDown+ [ "cannot form modal type " <> ppModality modality <> " " <> ppU term+ , "the expression" , " " <> ppU term- ]- TypeErrorUnaccessibleVar _var varMod locks -> block TopDown- [ "unaccessible var with modality " <> ppModality varMod- , " under locks " <> ppModality locks- ]- TypeErrorNotTypeInModal ty -> block TopDown- [ "expected a type inside modal type"- , "but got"+ , "has type" , " " <> ppU (untyped ty)+ , "but its type must be U, CUBE, or TOPE" ] TypeErrorUnexpectedLambda term ty -> block TopDown@@ -301,6 +328,37 @@ ppU = ppTerm naming ppTyped = ppTermT naming ppVar = ppName naming+ mismatchLines site expected actual = case site of+ MismatchLambdaParameter binder ->+ [ "modality mismatch in lambda parameter " <> show (binderDisplayName binder)+ , " expected from function type: " <> ppModality expected+ , " written on parameter: " <> ppModality actual+ ]+ MismatchModalIntroduction ->+ [ "modality mismatch in modal introduction"+ , " expected by result type: " <> ppModality expected+ , " written after `mod`: " <> ppModality actual+ ]+ MismatchModalElimination ->+ [ "modality mismatch in modal elimination"+ , " expected by `let mod`: " <> ppModality expected+ , " value's modality: " <> ppModality actual+ ]+ MismatchFunctionType ->+ [ "cannot unify function types with different parameter modalities"+ , " expected: " <> ppModality expected+ , " actual: " <> ppModality actual+ ]+ MismatchSigmaType ->+ [ "cannot unify dependent pair types with different parameter modalities"+ , " expected: " <> ppModality expected+ , " actual: " <> ppModality actual+ ]+ MismatchLambda ->+ [ "cannot unify lambda abstractions with different parameter modalities"+ , " expected: " <> ppModality expected+ , " actual: " <> ppModality actual+ ] ppAction :: Naming n -> Int -> Action n -> String ppAction naming n = unlines . map (replicate (2 * n) ' ' <>) . \case@@ -418,10 +476,12 @@ Nothing -> " Error occurred outside of any command!" ] , ""- , case filter (not . isTopeTop) (availableTopes ctx) of+ , case filter (not . isTopeTop . tTope) ctxTopes of [] -> "Local tope context is unrestricted (⊤)." topes -> namedBlock TopDown "Local tope context:"- [ " " <> ppU (untyped tope)+ [ " " <> availability (isAccessible tope)+ <> ppU (untyped (tTope tope))+ <> modalSuffix (tModVar tope) (tModAccum tope) | tope <- topes ] , "" , block dir@@ -429,12 +489,20 @@ | action <- ctxActionStack ] , namedBlock TopDown "Definitions in context:" [ block dir- [ ppName naming name <> " : " <> ppU (untyped (varType info))+ [ availability (isVarAccessible info)+ <> ppName naming name <> " : " <> ppU (untyped (varType info))+ <> modalSuffix (varModality info) (varModAccum info) | (name, info) <- reverse (varsInScope ctx) ] ] ] where naming = namingOfContext ctx ppU = ppTerm naming+ availability True = ""+ availability False = "× "+ modalSuffix Id Id = ""+ modalSuffix modality locks =+ " [modality: " <> ppModality modality+ <> ", locks: " <> ppModality locks <> "]" isTopeTop TopeTopT{} = True isTopeTop _ = False
src/Rzk/TypeCheck/Eval.hs view
@@ -78,6 +78,40 @@ typeOf :: Distinct n => TermT n -> TypeCheck n (TermT n) typeOf t = typeOfUncomputed t >>= whnfT +typeUnderModal :: TModality -> TermT n -> Maybe (TermT n)+typeUnderModal m ty = case stripTypeRestrictions ty of+ TypeModalT _ m' inner | m' == m -> Just inner+ _ -> Nothing++valueUnderModal :: TModality -> TermT n -> Maybe (TermT n)+valueUnderModal m = \case+ ModAppT _ m' t | m' == m -> Just t+ _ -> Nothing++requireTypeUnderModal :: Distinct n => TModality -> TermT n -> TypeCheck n (TermT n)+requireTypeUnderModal m t = do+ ty <- typeOf t+ case typeUnderModal m ty of+ Just inner -> pure inner+ Nothing -> do+ ctx <- ask+ let naming = namingOfContext ctx+ panicImpossible $ unlines+ [ "not modal in letmod"+ , "term: " <> ppTermT naming t+ , "type: " <> ppTermT naming ty+ , "expected modality: " <> show m+ , "action stack:"+ , concatMap (ppAction naming 0) (take 16 (ctxActionStack ctx))+ ]++extractModal :: Distinct n => TModality -> TModality -> TermT n -> TypeCheck n (Maybe (TermT n))+extractModal app inn t+ | isRA inn = do+ bty <- requireTypeUnderModal inn t+ pure (Just (modExtractT bty app inn t))+ | otherwise = pure Nothing+ -- | The free variables of a typed term, including those that occur only in the -- /types/ of the variables it mentions. --@@ -157,6 +191,7 @@ , varDeclaredAssumptions = [] , varLocation = loc , varDataRole = Nothing+ , varSchematicStatus = SchematicUnchecked , varMetaPrefix = 0 } @@ -762,7 +797,9 @@ | goal `elemT` topes -> return True | solveRHS topes (topeEQT l r) -> return True | solveRHS topes (topeEQT l cube2_0T) -> return True+ | solveRHS topes (topeEQT l cubeI_0T) -> return True | solveRHS topes (topeEQT r cube2_1T) -> return True+ | solveRHS topes (topeEQT r cubeI_1T) -> return True TopeLEQT _ty (CubeSupT _ a b) r -> solveRHSM modalTopes (topeAndT (topeLEQT a r) (topeLEQT b r)) TopeLEQT _ty l (CubeInfT _ a b) ->@@ -831,7 +868,9 @@ | eqT l r -> True | solveRHS topes (topeEQT l r) -> True | solveRHS topes (topeEQT l cube2_0T) -> True+ | solveRHS topes (topeEQT l cubeI_0T) -> True | solveRHS topes (topeEQT r cube2_1T) -> True+ | solveRHS topes (topeEQT r cubeI_1T) -> True TopeAndT _ l r -> solveRHS topes l && solveRHS topes r TopeOrT _ l r -> solveRHS topes l || solveRHS topes r _ -> tope `elemT` topes@@ -919,10 +958,10 @@ -- * DISJOINT — the tope and a consistent context have empty overlap (their -- conjunction is ⊥). The face or branch is then vacuous everywhere, so this is -- a hard error.--- * OVERHANG — the tope is not entailed by the context but still overlaps it.+-- * OVERHANG — the tope does not entail the context but still overlaps it. -- This is allowed and often intentional (splitting or restricting with an -- already-defined shape, whose faces live on the whole cube rather than being--- relativised to the context), so we only emit a non-fatal hint.+-- relativised to the context), so we only emit a non-fatal warning. -- * CONTAINED — the tope entails the context: nothing to report. checkTopeAgainstContext :: Distinct n => String -> TermT n -> TypeCheck n () checkTopeAgainstContext what tope = do@@ -944,13 +983,10 @@ entailed <- checkTopeEntails tope -- tope |- AND(accessible context) unless entailed $ do naming <- asks namingOfContext- traceTypeCheck Normal- (intercalate "\n" $- [ "Warning: " <> what <> " overhangs the local tope context"- , " " <> ppTerm naming (untyped tope)- , "is not entailed by the local context (normalised)"- ] <> map ((" " <>) . ppTerm naming . untyped) topes)- (return ())+ loc <- asks ctxLocation+ recordCheckWarning $ OverhangWarning what+ (ppTerm naming (untyped tope))+ (map (ppTerm naming . untyped) topes) loc -- * Restrictions and η @@ -1035,6 +1071,99 @@ -- * Layers +-- | The kind of a binder domain or of a term standing at type @U@. The+-- layers a domain can inhabit are finer than type\/cube\/shape: the+-- universes @CUBE@ and @TOPE@ and the tope-family kinds are all @U@-sorted+-- today (a shipped convenience), so they look like types until inspected.+-- This classification implements the layer discipline: the @#data@ checks+-- in "Rzk.TypeCheck.Decl" decide what each declaration position may take,+-- and 'ensureTypeAtU' rejects the universe kinds where an ordinary type is+-- required (Σ components, identity carriers, type arguments), so that a+-- cube- or tope-layer citizen cannot be stored as type-layer data by any+-- direct spelling.+data DomainKind+ = DomainType+ -- ^ an ordinary type (including @U@, families, extension types)+ | DomainCubePoint+ -- ^ a cube: the domain's sort is @CUBE@, as in @(t : 2)@+ | DomainCubeUniverse+ -- ^ @CUBE@ itself, as in @(I : CUBE)@+ | DomainCubeFamily+ -- ^ a function into @CUBE@, which is no parameter kind of the+ -- meta-theoretic parameter layer+ | DomainTopeUniverse+ -- ^ @TOPE@ itself, a bare tope parameter, as in @(phi : TOPE)@+ | DomainTopeFamily+ -- ^ a tope family @{I | ψ} → TOPE@ (every Π-binder a cube or shape),+ -- the Rzk paper's parameter kind+ | DomainOtherTopeFamily+ -- ^ a function into @TOPE@ over a non-cube domain — not the paper's kind+ | DomainModalTope+ -- ^ a modal type over @TOPE@ or a family into one (@ᵒᵖ TOPE@,+ -- @I → ᵒᵖ TOPE@, …) or over @CUBE@ (@♭ CUBE@): a parameter kind of the+ -- experimental modal layer (Π binders, @#assume@, @#data@ parameters),+ -- closed in every other position++-- | Classify an elaborated binder domain. Restricted binders (shapes) never+-- reach this: callers dispatch on the binder's tope first.+classifyDomain :: Distinct n => TermT n -> TypeCheck n DomainKind+classifyDomain ty = typeOf ty >>= \case+ UniverseCubeT{} -> pure DomainCubePoint+ _ -> whnfT ty >>= \case+ UniverseCubeT{} -> pure DomainCubeUniverse+ UniverseTopeT{} -> pure DomainTopeUniverse+ TypeModalT _ty _md inner -> classifyDomain inner >>= \case+ DomainType -> pure DomainType+ DomainCubePoint -> pure DomainType -- unreachable: @(x :_µ I)@ parses as a modal binder+ _ -> pure DomainModalTope+ TypeFunT _ty orig md param mtope ret -> do+ cubeDom <- case mtope of+ Just _ -> pure True+ Nothing -> typeOf param >>= \case+ UniverseCubeT{} -> pure True+ _ -> pure False+ inner <- inScope orig md param ret classifyDomain+ pure $ case inner of+ DomainTopeUniverse+ | cubeDom -> DomainTopeFamily+ | otherwise -> DomainOtherTopeFamily+ DomainTopeFamily+ | cubeDom -> DomainTopeFamily+ | otherwise -> DomainOtherTopeFamily+ DomainOtherTopeFamily -> DomainOtherTopeFamily+ DomainModalTope -> DomainModalTope+ DomainCubeUniverse -> DomainCubeFamily+ DomainCubeFamily -> DomainCubeFamily+ _ -> DomainType+ _ -> pure DomainType++-- | The printed name of a rejected kind, for error messages.+domainKindName :: DomainKind -> String+domainKindName = \case+ DomainType -> "a type"+ DomainCubePoint -> "a cube"+ DomainCubeUniverse -> "the cube universe"+ DomainCubeFamily -> "a cube family"+ DomainTopeUniverse -> "the tope universe"+ DomainTopeFamily -> "a tope family"+ DomainOtherTopeFamily -> "a tope family over a non-cube domain"+ DomainModalTope -> "a modal cube or tope kind"++-- | Reject a universe kind standing where an ordinary type is required.+-- The check is on the weak head normal form, so a synonym+-- (@#define A : U := TOPE@) meets the same rule as the spelled-out kind.+-- This closes the /direct/ spellings only: a kind can still travel through+-- a @U@-polymorphic definition (@(X : U) → …@ applied to @TOPE@ is caught+-- at the application, but a kind reaching a variable another way is not),+-- and the complete closure — the universe kinds leaving @U@ — is a+-- separate, larger change.+ensureTypeAtU :: Distinct n => String -> TermT n -> TypeCheck n ()+ensureTypeAtU position t = classifyDomain t >>= \case+ DomainType -> pure ()+ DomainCubePoint -> pure () -- cannot stand at type U; rejected by its sort+ kind -> issueTypeError $ TypeErrorOther $+ position <> " must be a type, got " <> domainKindName kind+ inCubeLayer :: Distinct n => TermT n -> TypeCheck n Bool inCubeLayer = \case RecBottomT{} -> pure False@@ -1175,17 +1304,15 @@ LetT _ty _orig _mparam val body -> instantiate body val >>= whnfT- LetModT ty orig app inn mparam mmotive val body ->- (enterModality app $ whnfT val) >>= \case- ModAppT _ md t | md == inn -> do- val' <- enterModality md $ whnfT t+ LetModT ty orig app inn mparam mmotive val body -> do+ b' <- enterModality app (whnfT val)+ case valueUnderModal inn b' of+ Just t -> do+ val' <- enterModality inn (whnfT t) instantiate body val' >>= whnfT- b' | isRA inn -> do- bty <- typeOf b' >>= \case- TypeModalT _ _ t -> pure t- _ -> panicImpossible "not modal in letmod"- instantiate body (modExtractT bty app inn b') >>= whnfT- _ -> pure (LetModT ty orig app inn mparam mmotive val body)+ Nothing -> extractModal app inn b' >>= \case+ Just v -> instantiate body v >>= whnfT+ Nothing -> pure (LetModT ty orig app inn mparam mmotive val body) FirstT ty t -> whnfT t >>= \case PairT _ l _r -> whnfT l@@ -1292,7 +1419,7 @@ -> [(TypeInfo (TermT n), TermT n)] -- ^ the collected spine arguments -> TypeCheck n (Maybe (TermT n)) tryDataElimStep (Var v) pairs = asks (varDataRole . lookupVarInfo v) >>= \case- Just (DataRole dataType numParams (DataElimKind numMethods numIndices _elimKind))+ Just (DataRole dataType numParams (DataElimKind _md numMethods numIndices _elimKind)) -- The spine is parameters, motive, methods, indices, scrutinee. The -- index arguments are dropped on a step: the scrutinee determines them. | (beforeIndices, rest) <- splitAt (numParams + 1 + numMethods) pairs@@ -1374,9 +1501,12 @@ applyWhnfFun :: Distinct n => TypeInfo (TermT n) -> TermT n -> TermT n -> TypeCheck n (TermT n) applyWhnfFun ty f' x = typeOf f' >>= \case TypeFunT _ty _orig md _param (Just tope) (ScopedAST _ UniverseTopeT{}) -> do+ -- The application is marked as a normal form, so that normalising it again+ -- does not insert the side condition again; its head must then be normal too.+ f'' <- nfT f' x' <- enterModality md $ nfT x sideCondition <- instantiate tope x' >>= nfT- pure (topeAndT (AppT ty f' x') sideCondition)+ pure (topeAndT (termIsNF (AppT ty f'' x')) sideCondition) -- FIXME: this seems to be a hack, and will not work in all -- situations! FIXME: for now, it seems to add ~2x slowdown TypeFunT info _orig md _param _mtope ret@(ScopedAST _ TypeRestrictedT{})@@ -1502,69 +1632,52 @@ TopeLEQT ty l r -> TopeLEQT ty <$> nfTope l <*> nfTope r TopeInvT ty t ->- -- Match And/Or on the *unnormalised* input: nfTope of a shape-restricted App- -- produces a TopeAnd via shape-side-condition propagation, and distributing- -- inv over that synthetic conjunction loops forever, because the recursive- -- topeInvT renormalises the same App back into a TopeAnd.- case t of- TopeTopT _ -> pure $ modAppT topeT Op topeTopT- TopeBottomT _ -> pure $ modAppT topeT Op topeBottomT+ nfTope t >>= \case+ TopeUninvT _ phi -> pure phi+ TopeTopT _ -> pure (underOp topeTopT)+ TopeBottomT _ -> pure (underOp topeBottomT) TopeLEQT _ x y -> invOf topeLEQT x y TopeEQT _ x y -> invOf topeEQT x y- TopeAndT _ phi psi -> nfTope $- modAppT (typeModalT universeT Op topeT) Op- (topeAndT- (modExtractT topeT Id Op (topeInvT phi))- (modExtractT topeT Id Op (topeInvT psi)))- TopeOrT _ phi psi -> nfTope $- modAppT (typeModalT universeT Op topeT) Op- (topeOrT- (modExtractT topeT Id Op (topeInvT phi))- (modExtractT topeT Id Op (topeInvT psi)))- _ ->- nfTope t >>= \case- TopeTopT _ -> pure topeTopT- TopeBottomT _ -> pure topeBottomT- TopeUninvT _ phi -> pure phi- TopeLEQT _ x y -> invOf topeLEQT x y- TopeEQT _ x y -> invOf topeEQT x y- t' -> pure (TopeInvT ty t')+ TopeAndT _ phi psi -> distribute topeAndT phi psi+ TopeOrT _ phi psi -> distribute topeOrT phi psi+ t' -> pure (TopeInvT ty t') where+ underOp phi = modAppT (typeModalT universeT Op topeT) Op phi+ extractInv phi = modExtractT topeT Id Op (topeInvT phi)+ distribute mk phi psi =+ nfTope (underOp (mk (extractInv phi) (extractInv psi)))+ invOf mk x y = do xTy <- typeOf x yTy <- typeOf y- nfTope $- modAppT (typeModalT universeT Op topeT) Op- (mk (modExtractT topeT Id Op (cubeFlipT xTy y))- (modExtractT topeT Id Op (cubeFlipT yTy x)))+ nfTope $ underOp $+ mk (modExtractT topeT Id Op (cubeFlipT xTy y))+ (modExtractT topeT Id Op (cubeFlipT yTy x)) TopeUninvT ty t ->- case t of- ModAppT _ Op inner -> case inner of+ nfTope t >>= \case+ TopeInvT _ phi -> pure phi+ ModAppT _ Op inner -> uninvNF inner+ t' -> pure (TopeUninvT ty t')+ where+ underOp phi = modAppT (typeModalT universeT Op topeT) Op phi++ uninvNF inner = case inner of TopeTopT _ -> pure topeTopT TopeBottomT _ -> pure topeBottomT- TopeAndT _ phi psi ->- nfTope (topeAndT (topeUninvT phi) (topeUninvT psi))- TopeOrT _ phi psi ->- nfTope (topeOrT (topeUninvT phi) (topeUninvT psi))- _ ->- nfTope t >>= \case- TopeTopT _ -> pure topeTopT- TopeBottomT _ -> pure topeBottomT- TopeInvT _ phi -> pure phi- ModAppT _ Op inner'' -> case inner'' of- TopeLEQT _ x y -> uninvOf topeLEQT x y- TopeEQT _ x y -> uninvOf topeEQT x y- inner' ->- pure $ TopeUninvT ty- (modAppT (typeModalT universeT Op topeT) Op inner')- t' -> pure (TopeUninvT ty t')- _ ->- nfTope t >>= \case- TopeInvT _ phi -> pure phi- t'@(ModAppT _ Op _) -> nfTope (TopeUninvT ty t')- t' -> pure (TopeUninvT ty t')- where+ TopeAndT _ phi psi -> andNF <$> uninvNF phi <*> uninvNF psi+ TopeOrT _ phi psi -> orNF <$> uninvNF phi <*> uninvNF psi+ TopeLEQT _ x y -> uninvOf topeLEQT x y+ TopeEQT _ x y -> uninvOf topeEQT x y+ _ -> pure (TopeUninvT ty (underOp inner))++ andNF TopeBottomT{} _ = topeBottomT+ andNF _ TopeBottomT{} = topeBottomT+ andNF l r = topeAndT l r+ orNF TopeBottomT{} r = r+ orNF l TopeBottomT{} = l+ orNF l r = topeOrT l r+ uninvOf mk x y = do xTy <- typeOf x yTy <- typeOf y@@ -1585,7 +1698,7 @@ TypeFunT _ty _orig md _param (Just tope) (ScopedAST _ UniverseTopeT{}) -> do x' <- enterModality md $ nfTope x sideCondition <- instantiate tope x' >>= nfTope- pure (topeAndT (AppT ty f' x') sideCondition)+ pure (topeAndT (termIsNF (AppT ty f' x')) sideCondition) _ -> AppT ty f' <$> nfTope x FirstT ty t ->@@ -1614,22 +1727,17 @@ (enterModality app $ nfTope b) >>= \case ModAppT _ md t | inn == md -> pure t b' -> pure $ ModExtractT ty app inn b'- LetModT ty orig app inn mparam mmotive val body ->- (enterModality app $ nfTope val) >>= \case- ModAppT _ md t | md == inn ->- instantiate body t >>= nfTope- b' | isRA inn -> do- bty <- typeOf b' >>= \case- TypeModalT _ _ t -> pure t- _ -> panicImpossible "not modal in letmod"- instantiate body (modExtractT bty app inn b') >>= nfTope- b' -> do- bty <- typeOf b' >>= \case- TypeModalT _ _ t -> pure t- _ -> panicImpossible "not modal in letmod"- val' <- enterModality app $ nfTope b'- body' <- underScope orig (comp app inn) bty Nothing body nfTope- pure (LetModT ty orig app inn mparam mmotive val' body')+ LetModT ty orig app inn mparam mmotive val body -> do+ b' <- enterModality app (nfTope val)+ case valueUnderModal inn b' of+ Just t -> instantiate body t >>= nfTope+ Nothing -> extractModal app inn b' >>= \case+ Just v -> instantiate body v >>= nfTope+ Nothing -> do+ bty <- requireTypeUnderModal inn b'+ val' <- enterModality app (nfTope b')+ body' <- underScope orig (comp app inn) bty Nothing body nfTope+ pure (LetModT ty orig app inn mparam mmotive val' body') TypeModalT ty md inner -> TypeModalT ty md <$> (enterModality md $ nfTope inner) LetT _ty _orig _mparam val body -> instantiate body val >>= nfTope@@ -1726,9 +1834,12 @@ instantiate body x >>= nfT f' -> typeOf f' >>= \case TypeFunT _ty _orig md _param (Just tope) (ScopedAST _ UniverseTopeT{}) -> do+ -- marked as a normal form, as in 'applyWhnfFun', so the head is+ -- normalised too+ f'' <- nfT f' x' <- enterModality md $ nfT x sideCondition <- instantiate tope x' >>= nfT- pure (topeAndT (AppT ty f' x') sideCondition)+ pure (topeAndT (termIsNF (AppT ty f'' x')) sideCondition) _ -> do -- The ι-redex of a generated eliminator only exists at the -- node holding the full spine, which the recursion above@@ -1739,23 +1850,19 @@ Nothing -> AppT ty <$> nfT f' <*> nfT x LetT _ty _orig _mparam val body -> instantiate body val >>= nfT- LetModT ty orig app inn mparam mmotive val body ->- (enterModality app $ whnfT val) >>= \case- ModAppT _ md t | md == inn -> do- val' <- enterModality md $ nfT t+ LetModT ty orig app inn mparam mmotive val body -> do+ b' <- enterModality app (whnfT val)+ case valueUnderModal inn b' of+ Just t -> do+ val' <- enterModality inn (nfT t) instantiate body val' >>= nfT- b' | isRA inn -> do- bty <- typeOf b' >>= \case- TypeModalT _ _ t -> pure t- _ -> panicImpossible "not modal in letmod"- instantiate body (modExtractT bty app inn b') >>= nfT- b' -> do- bty <- typeOf b' >>= \case- TypeModalT _ _ t -> pure t- _ -> panicImpossible "not modal in letmod"- val' <- enterModality app $ nfT b'- body' <- underScope orig (comp app inn) bty Nothing body nfT- pure (LetModT ty orig app inn mparam mmotive val' body')+ Nothing -> extractModal app inn b' >>= \case+ Just v -> instantiate body v >>= nfT+ Nothing -> do+ bty <- requireTypeUnderModal inn b'+ val' <- enterModality app (nfT b')+ body' <- underScope orig (comp app inn) bty Nothing body nfT+ pure (LetModT ty orig app inn mparam mmotive val' body') LambdaT ty orig _mparam body -> case stripTypeRestrictions (infoType ty) of TypeFunT _ty _orig md param mtope _ret -> do
+ src/Rzk/TypeCheck/Fragment/RSTT.hs view
@@ -0,0 +1,535 @@+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}++-- | Diagnostics for declarations outside the RSTT fragment.+--+-- For RSTT, see Riehl and Shulman,+-- <https://arxiv.org/abs/1705.07442 RS17> (2017), Figure 4 and Appendix A.2 for extension types.+-- For the fragment conditions, see Kudasov, Sim and Ahrens,+-- <https://arxiv.org/abs/2607.12207 KSA26> (2026), §5.+--+-- * Free-standing restrictions in assumptions, motives, and types passed as data.+-- * Cube domains, shape conditions, and assumed boundaries depending on outer points.+-- * Schematic variables bound inside terms below the parameter prefix.+-- * Modal constructs, auxiliary intervals, and involutions.+-- * Inductive constructors and eliminators.+-- * Any syntax outside the explicit RSTT allow-list.+--+-- Free-standing restrictions along concluded codomains are allowed.+-- Assumptions and postulates remain trusted; universe levels are not checked.+module Rzk.TypeCheck.Fragment.RSTT (+ fragmentHead,+ recordFragmentUses,+ recordSyntaxUses,+) where++import Control.Applicative ((<|>))+import Control.Monad (forM_, unless, when)+import Control.Monad.Except (catchError)+import Control.Monad.Reader (asks, local)+import Data.Bifoldable (bifoldMap)+import Data.List (intercalate)+import Data.Maybe (fromMaybe)+import qualified Data.IntSet as IntSet+import qualified Control.Monad.Foil as Foil++import Control.Monad.Foil (Distinct)+import Control.Monad.Free.Foil (AST (Node, Var), ScopedAST (..))++import Control.Monad.Free.Foil.Annotated (AnnSig (..))+import Language.Rzk.Foil.Names (Binder, TModality (..),+ TypeInfo (..), VarIdent, binderName)+import Language.Rzk.Foil.Syntax+import Rzk.TypeCheck.Context+import Rzk.TypeCheck.Display+import Rzk.TypeCheck.Eval+import Rzk.TypeCheck.Error+import Rzk.TypeCheck.MetaPrefix (isMetaType)+import Rzk.TypeCheck.Monad++-- Distinguish concluded types, assumed types, and terms (including type-valued data).+data CheckedPosition+ = InTail+ | InAssumption FragmentUse+ | InTerm PrefixPosition++-- A schematic argument may have its own parameter prefix.+data PrefixPosition = InParameterPrefix | OutsideParameterPrefix+ deriving (Eq)++-- | Report restriction and schematic-binder violations in a declaration.+-- Violations are errors when @rstt-safe = "error"@.+recordFragmentUses+ :: forall n. Distinct n+ => VarIdent -- ^ the declaration+ -> TermT n -- ^ its type+ -> Maybe (TermT n) -- ^ its value, for a definition+ -> Bool -- ^ does it supply an assumption rather than a proof?+ -> TypeCheck n ()+recordFragmentUses defName ty mval isAssumption = do+ restrictions <- asks ctxWarnFreeStandingRestriction+ binders <- asks ctxWarnMetaBinder+ shapes <- asks ctxWarnShapeDependency+ when (restrictions || binders || shapes) $+ localVerbosity Silent $+ forM_ [SourceTypes, ComputedTypes] $ \view ->+ checkFragmentUses view defName ty mval isAssumption `catchError`+ reportIncompleteRSTTCheck ("RSTT fragment check incomplete in " <> show defName)++-- Keep source checks even when reduction discards an argument or annotation.+data FragmentView = SourceTypes | ComputedTypes+ deriving (Eq)++checkFragmentUses+ :: forall n. Distinct n+ => FragmentView -> VarIdent -> TermT n -> Maybe (TermT n) -> Bool -> TypeCheck n ()+checkFragmentUses view defName ty mval isAssumption = do+ go (if isAssumption then InAssumption UseBinder else InTail) ty+ mapM_ (go (InTerm InParameterPrefix)) mval+ where+ go :: forall l. Distinct l => CheckedPosition -> TermT l -> TypeCheck l ()+ go (InTerm prefixPosition) t = goTerm prefixPosition t+ go InTail t = goTail t+ go (InAssumption use) t = goAssumed use t++ expose :: forall l. Distinct l => TermT l -> TypeCheck l (TermT l)+ expose = case view of+ SourceTypes -> pure+ ComputedTypes -> fragmentHead 256++ -- Allow restrictions along the spine of concluded codomains.+ goTail :: forall l. Distinct l => TermT l -> TypeCheck l ()+ goTail original = expose original >>= \t -> case t of+ TypeRestrictedT _ ty' rs -> do+ goTail ty'+ forM_ rs $ \(tope, term) -> do+ goTerm OutsideParameterPrefix tope+ goTerm OutsideParameterPrefix term+ TypeFunT _ orig md param mtope ret -> do+ checkShapeDependencies InTail t+ goAssumed UseBinder param+ checkDomain orig md param mtope+ inScope orig md param ret goTail+ RecOrT _ rs -> forM_ rs $ \(tope, term) -> do+ goTerm OutsideParameterPrefix tope+ goTail term+ _ -> goAssumed UseConcluded t++ -- Assumed restrictions must sit directly under a shape-Π.+ goAssumed :: forall l. Distinct l => FragmentUse -> TermT l -> TypeCheck l ()+ goAssumed = goAssumedAt OutsideParameterPrefix++ goAssumedAt+ :: forall l. Distinct l+ => PrefixPosition -> FragmentUse -> TermT l -> TypeCheck l ()+ goAssumedAt prefixPosition use original = expose original >>= \t -> case t of+ TypeRestrictedT _ ty' rs -> do+ reportFreeStanding use t+ goAssumed use ty'+ forM_ rs $ \(tope, term) -> do+ goTerm OutsideParameterPrefix tope+ goTerm OutsideParameterPrefix term+ TypeFunT _ orig md param mtope ret -> do+ checkShapeDependencies (InAssumption use) t+ goAssumed UseBinder param+ checkDomain orig md param mtope+ shape <- isShapeBinder (maybe False (const True) mtope) param+ inScope orig md param ret $+ if shape then goExtCodomain use else goAssumed use+ TypeSigmaT _ orig md a b -> do+ goAssumed UseBinder a+ inScope orig md a b (goAssumed use)+ -- Identity-type arguments must be ext-style; endpoints remain terms.+ TypeIdT _ a mtA b -> do+ goTerm OutsideParameterPrefix a+ mapM_ (goAssumed UseIdentity) mtA+ goTerm OutsideParameterPrefix b+ LambdaT info orig mparam body -> do+ md <- case mparam of+ Just (LambdaParam md param mtope) -> do+ goAssumed UseBinder param+ checkDomain orig md param mtope+ when (prefixPosition == OutsideParameterPrefix) $ reportMetaBinder orig param+ pure md+ Nothing -> pure Id+ dom <- binderType info mparam+ inScope orig md dom body (goAssumedAt prefixPosition use)+ -- recordSyntaxUses reports modal syntax; descend here for restriction checks.+ TypeModalT _ _ ty' -> goAssumed use ty'+ RecOrT _ rs -> forM_ rs $ \(tope, term) -> do+ goTerm OutsideParameterPrefix tope+ goAssumed use term+ Var{} -> pure ()+ _ -> goTerm OutsideParameterPrefix t++ -- Direct shape codomains admit boundary clipping to the binder's domain.+ goExtCodomain+ :: forall l. Distinct l => FragmentUse -> TermT l -> TypeCheck l ()+ goExtCodomain use original = expose original >>= \t -> case t of+ TypeRestrictedT _ ty' rs -> do+ goAssumed use ty'+ forM_ rs $ \(face, term) -> do+ goTerm OutsideParameterPrefix face+ goTerm OutsideParameterPrefix term+ _ -> goAssumed use t++ -- Topes may contain applications with their own binders and assumed types.+ checkDomain+ :: forall l. Distinct l+ => Binder -> TModality -> TermT l -> Maybe (ScopedTermT l) -> TypeCheck l ()+ checkDomain orig md param =+ mapM_ (\tope -> inScope orig md param tope (goTerm OutsideParameterPrefix))++ -- RS17 Appendix A.2 requires shapes independent of ambient cube points.+ -- Schematic families are judgements over cube contexts, not extension types.+ checkShapeDependencies :: forall l. Distinct l => CheckedPosition -> TermT l -> TypeCheck l ()+ checkShapeDependencies position t = do+ enabled <- asks ctxWarnShapeDependency+ when enabled $ case t of+ TypeFunT _ orig md param mtope ret -> do+ schematic <- isMetaType t+ shape <- isShapeBinder (maybe False (const True) mtope) param+ when shape $ do+ scope <- asks ctxScope+ let check :: forall k. Distinct k => Foil.Name k -> TermT k -> TermT k -> TypeCheck k ()+ check point cube original = do+ reportShapeDependency "cube domain" point cube+ unless schematic $ expose original >>= \body -> case (position, body) of+ (InAssumption _, TypeRestrictedT _ _ rs) ->+ forM_ rs $ \(face, _) -> reportShapeDependency "restriction boundary" point face+ _ -> pure ()+ case mtope of+ Nothing -> withScopedT scope ret $ \binder body ->+ underBinder binder orig md param Nothing $ check (Foil.nameOf binder) (Foil.sink param) body+ Just tope -> withScopedT2 scope tope ret $ \binder domain body ->+ underBinder binder orig md param Nothing $ do+ unless schematic $+ reportShapeDependency "shape domain" (Foil.nameOf binder) domain+ check (Foil.nameOf binder) (Foil.sink param) body+ _ -> pure ()++ reportShapeDependency+ :: forall l. Distinct l => String -> Foil.Name l -> TermT l -> TypeCheck l ()+ reportShapeDependency what point tope = do+ points <- outerPoints point tope+ unless (null points) $ do+ naming <- asks namingOfContext+ loc <- asks ctxLocation+ let render = ppTerm naming . untyped+ recordCheckWarning $ RSTTScopeWarning RSTTShapeDependency+ ("context-dependent " <> what <> " " <> render tope+ <> " (outer cube points: " <> intercalate ", " (map (render . Var) points)+ <> "; in " <> show defName <> ")") loc++ -- Follow aliases and variable types without reducing away dependencies.+ outerPoints :: forall l. Distinct l => Foil.Name l -> TermT l -> TypeCheck l [Foil.Name l]+ outerPoints point t = go (IntSet.singleton (Foil.nameId point)) (freeVarsOfTermT t)+ where+ go _ [] = pure []+ go seen (v : vs)+ | Foil.nameId v `IntSet.member` seen = go seen vs+ | otherwise = do+ ty <- typeOfVar v+ value <- valueOfVar v+ cube <- typeOfUncomputed ty >>= whnfT+ let here = case (value, cube) of+ (Nothing, UniverseCubeT{}) -> [v]+ _ -> []+ dependencies = freeVarsOfTermT ty <> foldMap freeVarsOfTermT value+ rest <- go (IntSet.insert (Foil.nameId v) seen) (dependencies <> vs)+ pure (here <> rest)++ -- Check term binders and route type-valued bodies through goData.+ goTerm :: forall l. Distinct l => PrefixPosition -> TermT l -> TypeCheck l ()+ goTerm InParameterPrefix t | not (isLambda t) = goDataAt InParameterPrefix t+ goTerm prefixPosition t = case t of+ Var{} -> pure ()++ -- Function types returned by lets or branches still introduce shapes.+ TypeFunT{} -> goAssumed UseData t++ -- The stored type is synthesised by elaboration; it is not assumed.+ ReflT _ mx -> forM_ mx $ \(x, _mxty) -> goTerm OutsideParameterPrefix x++ TypeAscT _ term' ty' -> do+ goTerm OutsideParameterPrefix term'+ goTail ty'++ LambdaT info orig mparam body -> do+ checkShapeDependencies InTail (infoType info)+ md <- case mparam of+ Just (LambdaParam md param mtope) -> do+ goAssumed UseBinder param+ checkDomain orig md param mtope+ when (prefixPosition == OutsideParameterPrefix) $ reportMetaBinder orig param+ pure md+ Nothing -> pure Id+ dom <- binderType info mparam+ inScope orig md dom body (goTerm prefixPosition)++ AppT{} -> do+ let (h, args) = collectSpine t []+ goTerm OutsideParameterPrefix h+ forM_ args $ \(fnode, arg) -> do+ -- Substitution can create a forbidden type in a later argument domain.+ when (view == ComputedTypes) $+ typeOfUncomputed fnode >>= funDomain >>= mapM_ (goAssumed UseBinder)+ -- Schema arguments may bind their own schematic parameters.+ plumbing <- domainIsMeta fnode+ if plumbing then goTerm InParameterPrefix arg else goData arg++ -- The motive is assumed: the eliminator binds its variables at it.+ IdJT _ tA a tC d x p -> do+ goData tA+ goTerm OutsideParameterPrefix a+ goAssumed UseMotive tC+ goTerm OutsideParameterPrefix d+ goTerm OutsideParameterPrefix x+ goTerm OutsideParameterPrefix p++ -- Preserve prefix status for parameters bound after a schematic split.+ MatchT _ _md scrut mmotive branches -> do+ goTerm OutsideParameterPrefix scrut+ mapM_ (goAssumed UseMotive) mmotive+ forM_ branches $ \(_con, branch) -> goTerm prefixPosition branch++ PairT _ l r -> do+ goData l+ goData r++ -- The let annotation records the value's concluded type.+ LetT _ orig manno value body -> do+ mapM_ goTail manno+ goData value+ let dom = fromMaybe universeT (manno <|> valueType value)+ inScopeWith orig Id dom (Just value) body (goTerm OutsideParameterPrefix)++ LetModT _ orig _nu mu manno mmotive value body -> do+ mapM_ goTail manno+ mapM_ (goAssumed UseMotive) mmotive+ goData value+ inScope orig mu (fromMaybe universeT (manno <|> valueType value)) body+ (goTerm OutsideParameterPrefix)++ Node (AnnSig _ f) ->+ mapM_ (goTerm OutsideParameterPrefix) (bifoldMap (const []) (:[]) f)++ -- Type-valued data may later become binder or motive types. A proof+ -- quantified over a universe must still be walked as a term.+ goData :: forall l. Distinct l => TermT l -> TypeCheck l ()+ goData = goDataAt OutsideParameterPrefix++ goDataAt :: forall l. Distinct l => PrefixPosition -> TermT l -> TypeCheck l ()+ goDataAt prefixPosition t = do+ isType <- landsInUniverse t+ if isType then goAssumedAt prefixPosition UseData t else goTerm OutsideParameterPrefix t++ isLambda :: forall l. TermT l -> Bool+ isLambda LambdaT{} = True+ isLambda _ = False++ valueType :: forall l. TermT l -> Maybe (TermT l)+ valueType value = infoType <$> typeInfoOf value++ binderType+ :: forall l. Distinct l+ => TypeInfo (TermT l) -> Maybe (LambdaParam (ScopedTermT l) (TermT l))+ -> TypeCheck l (TermT l)+ binderType _info (Just (LambdaParam _ param _mtope)) = pure param+ binderType info Nothing = fromMaybe universeT <$> funDomain (infoType info)++ -- A cube domain without a tope denotes the unrestricted shape.+ isShapeBinder :: forall l. Distinct l => Bool -> TermT l -> TypeCheck l Bool+ isShapeBinder True _ = pure True+ isShapeBinder False param =+ typeOfUncomputed param >>= whnfT >>= \case+ UniverseCubeT{} -> pure True+ _ -> pure False++ -- Is the Π-domain of this function node schematic?+ domainIsMeta :: forall l. Distinct l => TermT l -> TypeCheck l Bool+ domainIsMeta f = do+ tf <- typeOfUncomputed f+ whnfT (stripTypeRestrictions tf) >>= \case+ TypeFunT _ _ _ dom _ _ -> isMetaType dom+ _ -> pure False++ -- Recognise types and type families by their final codomain.+ landsInUniverse :: forall l. Distinct l => TermT l -> TypeCheck l Bool+ landsInUniverse t =+ typeOfUncomputed t >>= go+ where+ go :: forall k. Distinct k => TermT k -> TypeCheck k Bool+ go ty = whnfT (stripTypeRestrictions ty) >>= \case+ UniverseT{} -> pure True+ UniverseCubeT{} -> pure True+ UniverseTopeT{} -> pure True+ TypeFunT _ orig md param _mtope ret -> inScope orig md param ret go+ _ -> pure False++ funDomain :: forall l. Distinct l => TermT l -> TypeCheck l (Maybe (TermT l))+ funDomain tf =+ whnfT (stripTypeRestrictions tf) >>= \case+ TypeFunT _ _ _ dom _ _ -> pure (Just dom)+ _ -> pure Nothing++ reportMetaBinder :: forall l. Distinct l => Binder -> TermT l -> TypeCheck l ()+ reportMetaBinder orig param = do+ enabled <- asks ctxWarnMetaBinder+ when enabled $ do+ meta <- isMetaType param+ when meta $ do+ naming <- asks namingOfContext+ loc <- asks ctxLocation+ recordCheckWarning $ MetaBinderWarning+ defName+ (fromMaybe "_" (binderName orig))+ (ppTerm naming (untyped param))+ loc++ reportFreeStanding :: forall l. Distinct l => FragmentUse -> TermT l -> TypeCheck l ()+ reportFreeStanding use t = do+ enabled <- asks ctxWarnFreeStandingRestriction+ when enabled $ do+ naming <- asks namingOfContext+ loc <- asks ctxLocation+ recordCheckWarning $+ FreeStandingRestrictionWarning defName (ppTerm naming (untyped t)) use loc++-- Expose type constructors without consulting cached normal forms or simplifying+-- their guards. Keep this reducer in step with the object-level rules in Eval.+fragmentHead :: Distinct n => Int -> TermT n -> TypeCheck n (TermT n)+fragmentHead fuel t+ | fuel <= 0 = issueTypeError (TypeErrorOther "RSTT fragment reduction limit reached")+ | otherwise = case t of+ Var v -> valueOfVar v >>= maybe (neutral t) step+ AppT info f x -> step f >>= \case+ LambdaT _ _ _ body -> instantiate body x >>= step+ f' -> neutral (AppT info f' x)+ LetT _ _ _ value body -> instantiate body value >>= step+ TypeAscT _ value _ -> step value+ FirstT info pair -> step pair >>= \case+ PairT _ a _ -> step a+ pair' -> neutral (FirstT info pair')+ SecondT info pair -> step pair >>= \case+ PairT _ _ b -> step b+ pair' -> neutral (SecondT info pair')+ IdJT info a x motive d y proof -> step proof >>= \case+ ReflT{} -> step d+ proof' -> neutral (IdJT info a x motive d y proof')+ RecOrT _ rs -> firstMatching rs >>= maybe (pure t) step+ -- In particular, stop at TypeRestrictedT before reducing its topes.+ _ -> pure t+ where+ step = fragmentHead (fuel - 1)+ neutral term = do+ ty <- typeOfUncomputed term >>= step+ tryRestriction ty >>= maybe (pure term) step++-- TODO: Share this application-spine helper with MetaPrefix in the syntax layer.+collectSpine :: TermT n -> [(TermT n, TermT n)] -> (TermT n, [(TermT n, TermT n)])+collectSpine (AppT _ f x) acc = collectSpine f ((f, x) : acc)+collectSpine h acc = (h, acc)++-- | Check explicit syntax before typechecking erases source positions and sugars.+-- Report each outermost forbidden node at its nearest available source position.+recordSyntaxUses :: forall n. Distinct n => Term n -> TypeCheck n ()+recordSyntaxUses term = do+ enabled <- asks rsttSafeEnabled+ when enabled $ do+ roles <- mapM (\v -> (,) (Foil.nameId v) <$> infoOfVar varDataRole v)+ (freeVarsOfTerm term)+ let inductive = IntSet.fromList [v | (v, Just _) <- roles]+ loc <- asks ctxLocation+ forM_ (go inductive loc term) $ \warning ->+ local (\ctx -> ctx { ctxLocation = warningLocation warning }) $+ recordCheckWarning warning+ where+ -- Free names retain their identities under binders; bound names are fresh.+ go :: forall l. IntSet.IntSet -> Maybe LocationInfo -> Term l -> [CheckWarning]+ go inductive loc (Var v)+ | Foil.nameId v `IntSet.member` inductive =+ [RSTTScopeWarning RSTTInductive "inductive constructor or eliminator" loc]+ | otherwise = []+ go inductive loc t@(Node (AnnSig _ sig)) =+ let here = case positionOfTerm t of+ Nothing -> loc+ Just pos -> atPosition pos <$> loc+ in if allowedNode sig+ then bifoldMap (\(ScopedAST _ body) -> go inductive here body)+ (go inductive here) sig+ else let (extension, feature) = syntaxExtension sig+ in [RSTTScopeWarning extension feature here]++-- New constructors are forbidden until explicitly admitted here.+allowedNode :: TermSig scope term -> Bool+allowedNode = \case+ UniverseF -> True+ UniverseCubeF -> True+ UniverseTopeF -> True+ CubeUnitF -> True+ CubeUnitStarF -> True+ Cube2F -> True+ Cube2_0F -> True+ Cube2_1F -> True+ CubeProductF{} -> True+ TopeTopF -> True+ TopeBottomF -> True+ TopeEQF{} -> True+ TopeLEQF{} -> True+ TopeAndF{} -> True+ TopeOrF{} -> True+ RecBottomF -> True+ RecOrF{} -> True+ TypeFunF _ Id _ _ _ -> True+ TypeSigmaF _ Id _ _ -> True+ TypeIdF{} -> True+ AppF{} -> True+ LetF{} -> True+ LambdaF _ Nothing _ -> True+ LambdaF _ (Just (LambdaParam Id _ _)) _ -> True+ PairF{} -> True+ FirstF{} -> True+ SecondF{} -> True+ ReflF{} -> True+ IdJF{} -> True+ UnitF -> True+ TypeUnitF -> True+ TypeAscF{} -> True+ TypeRestrictedF{} -> True+ -- Hole checking also handles unresolved identifiers and unfinished obligations.+ HoleF{} -> True+ _ -> False++-- Classification improves diagnostics; it never grants admission.+syntaxExtension :: TermSig scope term -> (RSTTExtension, String)+syntaxExtension = \case+ TypeFunF{} -> modal "modal function binder"+ TypeSigmaF{} -> modal "modal pair binder"+ LambdaF{} -> modal "modal lambda binder"+ TypeModalF{} -> modal "modal type"+ ModAppF{} -> modal "modal introduction"+ ModExtractF{} -> modal "modal extraction"+ LetModF{} -> modal "modal let binding"+ CubeIF -> interval "auxiliary interval II"+ CubeI_0F -> interval "auxiliary interval endpoint 0_I"+ CubeI_1F -> interval "auxiliary interval endpoint 1_I"+ CubeFlipF{} -> interval "interval flip"+ CubeUnflipF{} -> interval "interval unflip"+ TopeInvF{} -> interval "tope involution"+ TopeUninvF{} -> interval "inverse tope involution"+ MatchF{} -> (RSTTInductive, "inductive match")+ MatchArmF{} -> (RSTTInductive, "inductive match arm")+ CubeSupF{} -> (RSTTUnsupported, "cube supremum (sup)")+ CubeInfF{} -> (RSTTUnsupported, "cube infimum (inf)")+ _ -> (RSTTUnsupported, "unrecognised syntax")+ where+ modal = (,) RSTTModal+ interval = (,) RSTTInterval
src/Rzk/TypeCheck/Judgements.hs view
@@ -135,10 +135,13 @@ pure $ map snd $ sortOn fst [ (order, (v, role)) | v <- ctxBound ctx- , Just role@(DataRole d' _ (DataElimKind _ _ elimKind)) <-+ , Just role@(DataRole d' _ (DataElimKind md _ _ elimKind)) <- [varDataRole (lookupVarInfo v ctx)] , Foil.nameId d' == Foil.nameId d- , let order = case elimKind of ElimInd -> 0 :: Int; ElimRec -> 1+ , let modalOrder = case md of+ Id -> 0 :: Int; Op -> 1; Flat -> 2; Sharp -> 3+ elimOrder = case elimKind of ElimInd -> 0 :: Int; ElimRec -> 1+ order = modalOrder * 2 + elimOrder ] -- | A term of the given type built as λ-binders over a single typed hole@@ -173,7 +176,7 @@ => Context n -> Set.Set VarIdent -> Foil.Scope n -> Int -> [Foil.Name n] -> TermT n -> TermT n matchHoleOf ctx taken scope numParams cons term =- MatchT anyInfo term Nothing+ MatchT anyInfo Id term Nothing [ (name, armChain scope (branchBinders c)) | c <- cons , Just name <- [binderName (varOrig (lookupVarInfo c ctx))]@@ -392,7 +395,7 @@ applyPlan atMotive (Just motive : replicate numMethods Nothing <> map Just indexArgs <> [Just term]))- | (e, DataRole _ numParams (DataElimKind numMethods _numIndices _)) <- elims ]+ | (e, DataRole _ numParams (DataElimKind Id numMethods _numIndices _)) <- elims ] pure (matchMoves <> elimSpines) _ -> pure [] @@ -474,15 +477,18 @@ -- * an identity type by @refl@, but only when its two endpoints already agree -- (otherwise @refl@ would not typecheck); -- * the unit type by @unit@;+-- * the directed interval by either endpoint, and the unit cube by its point;+-- * the type universe by type formers and declared datatypes;+-- * a datatype by constructors whose result type fits the goal; -- * the tope universe by each tope constructor — @TOP@, @BOT@, @? ≡ ?@, @? ≤ ?@, -- @? ∧ ?@, @? ∨ ?@ — so a shape (a hole of type @TOPE@) can be built up by -- tapping. ----- Unlike 'allEliminationsInto' this does not search: a type has at most one--- introduction form (the tope universe is the one exception), read off its head--- constructor. Outer restrictions are stripped first, so an extension type is--- introduced by the form of its underlying type (its boundary is met by later--- refinement of the holes, not by the choice of constructor).+-- The goal's head determines the forms offered: usually one for an ordinary+-- type former, but several for the directed interval, universes, and datatypes.+-- Datatype constructors are filtered by whether their result type fits the goal.+-- Outer restrictions are stripped; their boundaries are met when the holes+-- are filled. -- -- The λ binder of a Π-introduction is freshened against the names already visible -- at the hole, so introducing over a type whose own definition reuses an in-scope@@ -779,7 +785,7 @@ isUnitBinder BinderUnit = True isUnitBinder _ = False cubeFlags <- mapM (fmap isCubeType . whnfT . varType . snd) shownLocals- topes <- asks (filter (not . eqT topeTopT) . availableTopes)+ topes <- asks (filter (not . eqT topeTopT . tTope) . ctxTopes) loc <- asks ctxLocation naming <- asks namingOfContext @@ -845,7 +851,14 @@ entryName v = case displayOf naming v of (_, binder) | binderIsCompound binder -> binderDisplayName binder (x, _) -> x- entries = [ HoleEntry (entryName v) (render (varType info)) | (v, info) <- shownLocals ]+ entries =+ [ HoleEntry (entryName v) (render (varType info))+ (HoleModalInfo+ (varModality info)+ (varModAccum info)+ (isVarAccessible info))+ | (v, info) <- shownLocals+ ] flagged = zip cubeFlags entries -- The goal shape, rendered under the shape's own binder. The name is read back@@ -878,7 +891,11 @@ , holeGoalShape = goalShape , holeTermVars = [ e | (False, e) <- flagged ] , holeCubeVars = [ e | (True, e) <- flagged ]- , holeTopes = map render topes+ , holeTopes =+ [ HoleTopeEntry (render (tTope tope))+ (HoleModalInfo (tModVar tope) (tModAccum tope) (isAccessible tope))+ | tope <- topes+ ] , holeCandidates = candidateMoves , holeIntroductions = introductionMoves , holeDiagram = diagram@@ -997,7 +1014,8 @@ Just (LambdaParam md param Nothing) -> do when (md /= md') $- issueTypeError (TypeErrorModalityMismatch md' md term)+ issueTypeError (TypeErrorModalityMismatch+ (MismatchLambdaParameter orig) md' md (Just term)) paramType <- enterModality md $ infer param -- an argument can be a shape, which is a function into TOPE; the -- domain is then its cube, and its tope is the λ's shape tope.@@ -1013,13 +1031,15 @@ Just _ -> withBinder orig md param' $ \binder -> do -- eta expand the shape into a tope over the bound variable- let etaTope = appT topeT (Foil.sink paramType) (Var (Foil.nameOf binder))+ let etaTope = modalizeTope md $+ appT topeT (Foil.sink paramType) (Var (Foil.nameOf binder)) expected <- maybe (pure topeTopT) (openScoped binder) mtope' unifyTerms expected etaTope Just (LambdaParam md param (Just tope)) -> do when (md /= md') $- issueTypeError (TypeErrorModalityMismatch md' md term)+ issueTypeError (TypeErrorModalityMismatch+ (MismatchLambdaParameter orig) md' md (Just term)) param'' <- enterModality md $ typecheck param =<< typeOf param' unifyTerms param' param'' mapM_ checkNameShadowing (binderLeaves orig)@@ -1029,11 +1049,36 @@ unifyTerms expected tope'' mapM_ checkNameShadowing (binderLeaves orig)+ naming <- asks namingOfContext body' <- elaborateUnder orig md' param' Nothing body $ \binder bodyTerm -> do mtopeIn <- traverse (openScoped binder) mtope' maybe id localTope mtopeIn $ do retIn <- openScoped binder ret- typecheck bodyTerm retIn+ bodyIn <- typecheck bodyTerm retIn+ -- A tope family checked against @{t : I | ψ} → TOPE@ carries its+ -- domain: the body becomes @ψ t ∧ φ t@. The checker reads an applied+ -- family variable together with its domain (see 'applyWhnfFun'), so a+ -- concrete family must satisfy the domain as well, or the two readings+ -- disagree (regression: ill-tope-family-domain-non-instance). The+ -- conjunct is omitted when the body already entails the domain;+ -- otherwise the checked family differs from the written one,+ -- which is reported as a warning.+ case (retIn, mtopeIn) of+ (UniverseTopeT{}, Just domainIn) -> do+ bodyNF <- nfT bodyIn+ domainNF <- nfT domainIn+ included <- [plainTope bodyNF] `entailM` domainNF+ if included then pure bodyIn else do+ warn <- asks ctxWarnTopeFamilyDomain+ when warn $ do+ namingIn <- asks namingOfContext+ loc <- asks ctxLocation+ recordCheckWarning $ TopeFamilyDomainWarning+ (ppTerm naming term)+ (ppTerm namingIn (untyped domainNF))+ loc+ pure (topeAndT domainIn bodyIn)+ _ -> pure bodyIn return (lambdaT ty' orig (Just (LambdaParam md' param' mtope')) body') _ -> issueTypeError $ TypeErrorUnexpectedLambda term ty@@ -1060,16 +1105,16 @@ bindType' <- infer bindType bindUniv <- typeOf bindType' enterModality app $ typecheck val (typeModalT bindUniv inn bindType')- bindTy <- typeOf val' >>= \case- o@(TypeModalT _ty md t) ->- if md == inn- then return t- else issueTypeError $ TypeErrorNotModal (untyped o) inn val'- o -> issueTypeError $ TypeErrorNotModal (untyped o) inn val'- bindVal <- whnfT val' >>= \case- ModAppT _ty _m t -> pure (Just t)- o | isRA inn -> pure (Just (modExtractT bindTy app inn o))- _ -> pure Nothing+ valTy <- typeOf val'+ bindTy <- case stripTypeRestrictions valTy of+ TypeModalT _ty md t+ | md == inn -> pure t+ | otherwise -> issueTypeError $ TypeErrorModalityMismatch+ MismatchModalElimination inn md (Just val)+ _ -> issueTypeError $+ TypeErrorNotModal ModalTypeForElimination val inn valTy+ o <- whnfT val'+ bindVal <- maybe (extractModal app inn o) (pure . Just) (valueUnderModal inn o) body' <- elaborateUnder orig (comp app inn) bindTy bindVal body $ \_binder bodyTerm -> typecheck bodyTerm (Foil.sink ty') return (letModT ty' orig app inn (Just bindTy) Nothing val' body')@@ -1082,6 +1127,9 @@ return (pairT ty' l' r') TypeSigmaT _ty _orig md a b -> do l' <- enterModality md $ typecheck l a+ whnfT a >>= \case+ UniverseT{} -> ensureTypeAtU "a pair component at type U" l'+ _ -> pure () bAt <- instantiate b l' r' <- typecheck r bAt return (pairT ty' l' r')@@ -1108,10 +1156,12 @@ ModApp md body -> case ty' of TypeModalT _ty md' tpe -> do when (md /= md') $ issueTypeError $- TypeErrorModalityMismatch md' md term+ TypeErrorModalityMismatch+ MismatchModalIntroduction md' md (Just term) body' <- enterModality md $ typecheck body tpe return $ modAppT ty' md body'- _ -> issueTypeError $ TypeErrorNotModal term md ty'+ _ -> issueTypeError $+ TypeErrorNotModal ModalTypeForIntroduction term md ty' -- In checking position the common type is already known, so we push it into -- every branch instead of inferring each one and unifying. This is what lets a@@ -1125,7 +1175,7 @@ TypeErrorOther "a recOR cannot be used as a tope" _ -> checkRecOrAgainst ty' rs - Match scrut mmotive branches -> checkMatch term scrut mmotive branches (Just ty')+ Match md scrut mmotive branches -> checkMatch term md scrut mmotive branches (Just ty') -- A neutral term is inferred, then its type unified with the expected one. In -- lenient (hole-checking) mode a term that still carries an unfilled hole is a@@ -1169,18 +1219,25 @@ checkMatch :: Distinct n => Term n -- ^ the whole match, for error messages+ -> TModality -> Term n -- ^ the scrutinee -> Maybe (Term n) -- ^ the @into@ motive, if written -> [(VarIdent, Term n)] -- ^ branches: constructor name, arm chain -> Maybe (TermT n) -- ^ the goal, in checking position -> TypeCheck n (TermT n)-checkMatch term scrut mmotive branches mgoal = do- scrut' <- infer scrut+checkMatch term matchMd scrut mmotive branches mgoal = do+ scrut' <- enterModality matchMd $ infer scrut scrutTy <- stripTypeRestrictions <$> (typeOf scrut' >>= whnfT) d <- case collectAppSpine scrutTy of (Var d, _) -> pure d _ -> issueTypeError (TypeErrorMatchScrutineeNotData scrut' scrutTy) elims <- dataEliminatorsOf d+ ctx <- ask+ cons <- dataConstructorsOf d+ let hasPathConstructor = any isPathConstructor cons+ isPathConstructor c = case varDataRole (lookupVarInfo c ctx) of+ Just (DataRole _ _ (DataConKind PathCon _ _ _)) -> True+ _ -> False -- The eliminator to elaborate into: @ind-D@ when the motive genuinely -- depends on the scrutinee (an @into@ motive, or a variable scrutinee -- occurring in the goal); @rec-D@ otherwise. The choice matters for path@@ -1197,16 +1254,23 @@ MatchRec -> ElimRec MatchInd{} -> ElimInd (e, numParams) <- case- [ er | er@(_, DataRole _ _ (DataElimKind _ _ ek)) <- elims, ek == wantedKind ] of+ [ er+ | er@(_, DataRole _ _ (DataElimKind md _ _ ek)) <- elims+ , md == matchMd+ , ek == wantedKind ] of (e, DataRole _ numParams _) : _ -> pure (e, numParams)+ [] | matchMd == Sharp ->+ issueTypeError $ TypeErrorOther+ "modal match is not supported for ♯: ♯ does not preserve coproducts or recursion"+ [] | matchMd /= Id && hasPathConstructor ->+ issueTypeError $ TypeErrorOther+ "modal match is not supported for higher inductive types" [] -> issueTypeError (TypeErrorMatchScrutineeNotData scrut' scrutTy) let dargs = case collectAppSpine scrutTy of (_, args) -> map snd args (paramArgs, indexArgs) = splitAt numParams dargs -- The bijection between branches and constructors, with per-branch arity.- ctx <- ask- cons <- dataConstructorsOf d let conIdent c = case binderName (varOrig (lookupVarInfo c ctx)) of Just x -> x Nothing -> panicImpossible "a constructor entry with no name"@@ -1236,19 +1300,15 @@ -- The spine: parameters, motive, methods (each branch checked against its -- method's Π-type), indices, scrutinee. atParams <- applyPlan (Var e) (map Just paramArgs)+ scope <- asks ctxScope+ motiveTy <- typeOf atParams >>= whnfT >>= \case+ TypeFunT _ _ _ ty _ _ -> pure ty+ _ -> panicImpossible "an eliminator's type has no motive parameter" motive' <- case mmotive of- Just motive -> do- motiveTy <- typeOf atParams >>= whnfT >>= \case- TypeFunT _ _ _ mty _ _ -> pure mty- _ -> panicImpossible "an eliminator's type has no motive parameter"- typecheck motive motiveTy+ Just motive -> typecheck motive motiveTy Nothing -> case mgoal of Nothing -> issueTypeError (TypeErrorMatchCannotInfer term) Just goal -> do- motiveTy <- typeOf atParams >>= whnfT >>= \case- TypeFunT _ _ _ mty _ _ -> pure mty- _ -> panicImpossible "an eliminator's type has no motive parameter"- scope <- asks ctxScope -- Under @rec-D@ the motive type has no scrutinee binder, so there -- is nothing to substitute (and the goal does not mention the -- scrutinee variable anyway — that is what chose @rec-D@). The@@ -1285,7 +1345,9 @@ -- of the method's Π-type, and the elaborated arm becomes the method's λ under -- the same binder. Holes inside the branch body therefore see the branch -- binders as ordinary hypotheses, under the user's names.-checkMatchArms :: Distinct n => Term n -> TermT n -> TypeCheck n (TermT n)+checkMatchArms+ :: Distinct n+ => Term n -> TermT n -> TypeCheck n (TermT n) checkMatchArms (MatchArm orig scoped) ty = whnfT ty >>= \case ty'@(TypeFunT _ _orig' md' param0 mtope' ret) -> do -- an induction hypothesis's type is the motive at a field, so it carries@@ -1327,12 +1389,14 @@ | x `elem` xs = Just x | otherwise = firstDuplicate xs +modalizeTope :: TModality -> TermT n -> TermT n+modalizeTope Id tope = tope+modalizeTope md tope = typeModalT topeT md tope+ -- | A motive built from the goal: λ-binders along the motive's Π-type (the -- family's indices, then the scrutinee), whose body is the goal — with the -- scrutinee variable replaced by the motive's own scrutinee binder, when the -- scrutinee is a variable. A non-variable scrutinee gives a constant family.--- (The motive types the eliminator generator builds are literal Π-chains, so--- matching them structurally is enough; cf. 'lambdaHoleOf'.) motiveFromGoal :: Distinct n => Foil.Scope n -> TermT n -> Maybe (Foil.Name n) -> TermT n -> TermT n@@ -1361,6 +1425,41 @@ unifyTypes ty expectedKind kind return term' +-- | Infer a cube point used by @≡@. A bare hole in this position does not+-- determine its cube, so ordinary inference rejects it. In lenient mode,+-- record it instead with an as-yet-unknown cube as its goal.+inferPoint :: Distinct n => Term n -> TypeCheck n (TermT n)+inferPoint term@(Hole (Just name))+ | Just x <- unmarkUnresolved name =+ performing (ActionInfer term) $+ issueTypeError (TypeErrorUndefined x)+inferPoint term@(Hole mname) = performing (ActionInfer term) $ do+ reject <- asks ctxHolesAreErrors+ if reject+ then issueTypeError (TypeErrorCannotInferHole term)+ else do+ let cube = holeT cubeT Nothing+ recordHole mname cube+ pure (holeT cube mname)+inferPoint term = inferAs cubeT term++-- | Infer a point of one of the directed cubes, @2@ or @𝕀@, for use by+-- @≤@. A point hole in lenient mode is retained with an unknown cube; a known+-- point of any other cube is rejected here rather than after both endpoints+-- have been inferred.+inferDirectedPoint :: Distinct n => Term n -> TypeCheck n (TermT n)+inferDirectedPoint term = performing (ActionInfer term) $ do+ point <- inferPoint term+ typeOf point >>= \case+ HoleT{} -> pure point+ Cube2T{} -> pure point+ CubeIT{} -> pure point+ ty -> do+ tyStr <- ppInContext ty+ issueTypeError $ TypeErrorOther $+ "the (t ≤ s) tope expects a point in a directed cube (2 or 𝕀); got "+ <> tyStr+ infer :: Distinct n => Term n -> TypeCheck n (TermT n) infer tt = performing (ActionInfer tt) $ case tt of Hole (Just name) | Just x <- unmarkUnresolved name ->@@ -1497,17 +1596,24 @@ TopeBottom -> pure topeBottomT TopeEQ l r -> do- l' <- inferAs cubeT l+ l' <- inferPoint l lt <- typeOf l' r' <- typecheck r lt return (topeEQT l' r') TopeLEQ l r -> do- l' <- inferAs cubeT l- r' <- inferAs cubeT r+ l' <- inferDirectedPoint l+ r' <- inferDirectedPoint r lTy <- typeOf l' rTy <- typeOf r' case (lTy, rTy) of+ -- A point hole in lenient mode has an unknown directed cube. Keep the+ -- relation as an incomplete sketch until that cube is known.+ (HoleT{}, HoleT{}) -> return (topeLEQT l' r')+ (HoleT{}, Cube2T{}) -> return (topeLEQT l' r')+ (HoleT{}, CubeIT{}) -> return (topeLEQT l' r')+ (Cube2T{}, HoleT{}) -> return (topeLEQT l' r')+ (CubeIT{}, HoleT{}) -> return (topeLEQT l' r') (Cube2T{}, Cube2T{}) -> return (topeLEQT l' r') (CubeIT{}, CubeIT{}) -> return (topeLEQT l' r') (CubeIT{}, Cube2T{}) -> do@@ -1566,17 +1672,13 @@ TypeFun orig md a Nothing b -> do a' <- enterModality md $ infer a typeOf a' >>= \case- -- an argument can be a type- UniverseT{} ->- case a' of- -- except if it is the TOPE universe- UniverseTopeT{} ->- issueTypeError $ TypeErrorOther "tope params are illegal"- _ -> do- mapM_ checkNameShadowing (binderLeaves orig)- b' <- elaborateUnder orig md a' Nothing b $ \_binder bTerm ->- typecheck bTerm universeT- return (typeFunT orig md a' Nothing b')+ -- an argument can be a type, including TOPE: a bare tope parameter+ -- (phi : TOPE) means the same as the tope family (phi : 1 -> TOPE)+ UniverseT{} -> do+ mapM_ checkNameShadowing (binderLeaves orig)+ b' <- elaborateUnder orig md a' Nothing b $ \_binder bTerm ->+ typecheck bTerm universeT+ return (typeFunT orig md a' Nothing b') -- an argument can be a cube UniverseCubeT{} -> do mapM_ checkNameShadowing (binderLeaves orig)@@ -1588,7 +1690,8 @@ mapM_ checkNameShadowing (binderLeaves orig) (tope', b') <- checkUnder orig md cube b $ \binder bTerm -> do -- eta expand a' into a tope over the bound variable- let etaTope = appT topeT (Foil.sink a') (Var (Foil.nameOf binder))+ let etaTope = modalizeTope md $+ appT topeT (Foil.sink a') (Var (Foil.nameOf binder)) tope' <- case mtope of Nothing -> pure etaTope Just tope'' -> do@@ -1611,13 +1714,17 @@ TypeSigma orig md a b -> do a' <- enterModality md $ typecheck a universeT+ ensureTypeAtU "a Σ component" a' mapM_ checkNameShadowing (binderLeaves orig)- b' <- elaborateUnder orig md a' Nothing b $ \_binder bTerm ->- typecheck bTerm universeT+ b' <- elaborateUnder orig md a' Nothing b $ \_binder bTerm -> do+ bTyped <- typecheck bTerm universeT+ ensureTypeAtU "a Σ component" bTyped+ pure bTyped return (typeSigmaT orig md a' b') TypeId x (Just tA) y -> do tA' <- typecheck tA universeT+ ensureTypeAtU "the carrier of an identity type" tA' x' <- typecheck x tA' y' <- typecheck y tA' return (typeIdT x' (Just tA') y')@@ -1625,6 +1732,7 @@ TypeId x Nothing y -> do x' <- inferAs universeT x tA <- typeOf x'+ ensureTypeAtU "the carrier of an identity type" tA y' <- typecheck y tA return (typeIdT x' (Just tA) y') @@ -1637,6 +1745,9 @@ x' <- enterModality md $ case (x, mtope) of (Hole mname, Just tope) -> checkHoleAgainstShape mname orig a tope _ -> typecheck x a+ whnfT a >>= \case+ UniverseT{} -> ensureTypeAtU "a type argument" x'+ _ -> pure () bAt <- instantiate b x' let result = appT bAt f' x' case b of@@ -1660,13 +1771,8 @@ Lambda orig (Just (LambdaParam md ty Nothing)) body -> do ty' <- enterModality md $ infer ty mcube <- typeOf ty' >>= \case- -- an argument can be a type- UniverseT{} ->- case ty' of- -- except if it is the TOPE universe- UniverseTopeT{} ->- issueTypeError $ TypeErrorOther "tope params are illegal"- _ -> return Nothing+ -- an argument can be a type, including TOPE (a bare tope parameter)+ UniverseT{} -> return Nothing -- an argument can be a cube UniverseCubeT{} -> return Nothing -- an argument can be a shape@@ -1687,7 +1793,8 @@ Just _ -> do (tope', body', ret) <- checkUnder orig md param body $ \binder bodyTerm -> do -- eta expand the shape into a tope over the bound variable- let etaTope = appT topeT (Foil.sink ty') (Var (Foil.nameOf binder))+ let etaTope = modalizeTope md $+ appT topeT (Foil.sink ty') (Var (Foil.nameOf binder)) body' <- localTope etaTope $ infer bodyTerm ret <- typeOf body' pure (ScopedAST binder etaTope, ScopedAST binder body', ScopedAST binder ret)@@ -1728,34 +1835,39 @@ bindUniv <- typeOf bindType' enterModality app $ typecheck val (typeModalT bindUniv inn bindType') valTy <- typeOf val'- bindTy <- case valTy of- TypeModalT _ty md t | md == inn -> return t- o -> issueTypeError $ TypeErrorNotModal (untyped o) inn val'- bindVal <- whnfT val' >>= \case- ModAppT _ty _m t -> pure (Just t)- o | isRA inn -> pure (Just (modExtractT bindTy app inn o))- _ -> pure Nothing+ bindTy <- case stripTypeRestrictions valTy of+ TypeModalT _ty md t+ | md == inn -> pure t+ | otherwise -> issueTypeError $ TypeErrorModalityMismatch+ MismatchModalElimination inn md (Just val)+ _ -> issueTypeError $+ TypeErrorNotModal ModalTypeForElimination val inn valTy+ o <- whnfT val'+ bindVal <- maybe (extractModal app inn o) (pure . Just) (valueUnderModal inn o) -- The motive is a family over the modal value, @(z :^app ⟨inn|A⟩) → U@, so its -- binder stands for the whole @val@ and not for the let-bound @orig : A@; it is -- left anonymous rather than reusing @orig@, which would show the wrong role in -- goals and hovers. Only @U@ is supported as the codomain for now: a motive- -- landing in @CUBE@ or @TOPE@ cannot be written.+ -- landing in @CUBE@ or @TOPE@ cannot be written. The motive ranges over the+ -- modal type without the restrictions of @val@'s type, because the body is+ -- checked at a generic @mod inn y@, which need not satisfy them.+ let modalTy = stripTypeRestrictions valTy univScope <- constScope universeT mmotive' <- forM mmotive $ \motive ->- typecheck motive (typeFunT (BinderVar Nothing) app valTy Nothing univScope)+ typecheck motive (typeFunT (BinderVar Nothing) app modalTy Nothing univScope) case mmotive' of Just motive' -> do body' <- elaborateUnder orig (comp app inn) bindTy bindVal body $ \binder bodyTerm -> typecheck bodyTerm (appT universeT (Foil.sink motive')- (modAppT (Foil.sink valTy) inn (Var (Foil.nameOf binder))))+ (modAppT (Foil.sink modalTy) inn (Var (Foil.nameOf binder)))) return (letModT (appT universeT motive' val') orig app inn (Just bindTy) mmotive' val' body') Nothing -> do (body', ret) <- checkUnderWith orig (comp app inn) bindTy bindVal body $ \binder bodyTerm -> do body' <- infer bodyTerm ret <- typeOf body' pure (ScopedAST binder body', ScopedAST binder ret)- retAt <- instantiate ret val'+ retAt <- instantiate ret (maybe val' id bindVal) return (letModT retAt orig app inn (Just bindTy) Nothing val' body') Refl Nothing -> issueTypeError $ TypeErrorCannotInferBareRefl tt@@ -1810,7 +1922,8 @@ UniverseT{} -> pure universeTy UniverseCubeT{} -> pure universeTy UniverseTopeT{} -> pure universeTy- _ -> issueTypeError $ TypeErrorNotTypeInModal universeTy+ _ -> issueTypeError $+ TypeErrorNotTypeInModal md ty universeTy return (typeModalT universeTy md ty') ModApp md term -> do@@ -1823,7 +1936,7 @@ -- A match infers only through its "into" motive; 'checkMatch' rejects it -- otherwise, since there is no goal to build the motive from.- Match scrut mmotive branches -> checkMatch tt scrut mmotive branches Nothing+ Match md scrut mmotive branches -> checkMatch tt md scrut mmotive branches Nothing MatchArm{} -> panicImpossible "a match arm outside of a match branch" -- | The type of the motive of a path induction: @(z : A) → (a =_A z) → U@.
src/Rzk/TypeCheck/MetaPrefix.hs view
@@ -8,56 +8,16 @@ {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} --- | The meta-parameter layer check.------ The type theory implemented in rzk separates a /meta-theoretic parameter--- layer/ from the object theory (RSTT proper): see §3.2 of the Rzk paper--- (Kudasov, Sim, Ahrens, \"Rzk: a Proof Assistant for Synthetic--- ∞-Categories\", <https://arxiv.org/abs/2607.12207 arXiv:2607.12207>),--- where a statement is abstracted over a context of schematic cube, tope,--- and type parameters. The checker did not enforce responsible use of--- this layer. Per declaration, the /meta prefix/ is the--- parameter prefix up to and including the last parameter whose type lives--- outside RSTT proper: a universe, @CUBE@, @TOPE@, or a Π-type quantifying--- over or landing in one of those. Interleaved object parameters are swept--- in, which only strengthens the check.------ The discipline: the meta prefix must be fully supplied wherever the--- declaration is used at an object-level position; unsaturated use at a--- meta-typed position is legitimate macro-level plumbing and stays allowed.--- Then the development reads as a family of object-theory definitions, one--- per meta instantiation.------ Positions are classified structurally, on the elaborated term:+-- | Diagnostics for unsaturated schematic parameters. ----- - the root of a declaration's type and value is meta (a definition may--- alias a schema), and a λ-body inherits its λ's position (the value's--- leading λs are the declaration's own parameters);--- - an application argument is meta when the function's Π-domain at that--- position is meta-shaped (the receiver declared a schema parameter);--- - the components of type formers are meta (types are the schema layer),--- except the endpoints of an identity type, which are terms;--- - everything else (pair components, projections, @recOR@ branches, a--- @let@-bound value, …) is an object position.+-- A declaration's /meta prefix/ ends at its last schematic parameter:+-- a universe, @CUBE@, @TOPE@, or a function quantifying over or into one. ----- The strict rule (the default, see 'MetaPrefixSensitivity') additionally--- requires an unsaturated schema argument to sit within a /top-level/--- receiver's meta prefix. This also polices meta-shaped domains that only--- arise by instantiating a receiver's object parameters with large types--- (as in composing schema-level implications with a generic @comp@); such--- uses are emitted with the distinct code 'MetaPrefixStrictOnly', so the--- structural sensitivity can silence them without losing the rest.+-- * Structural checking requires the full prefix at object-level uses.+-- * Strict checking confines schema arguments to a top-level receiver's meta prefix. ----- Known blind spot: under type-in-type, an impredicative instantiation can--- forge a meta-shaped argument domain out of an object parameter — with--- @g : (X : U) → X → X@, in @g ((X : U) → X → X) my-id@ the second--- domain is meta-shaped only because @X@ was instantiated with a large--- type. The structural sensitivity reads such a position as meta and stays--- silent. The strict default flags it when the argument falls outside the--- receiver's meta prefix (as here), but a forgery landing /within/ the--- prefix, or behind a λ-bound receiver, still passes: deciding whether an--- instantiation is genuinely impredicative is level inference, a separate--- (planned) analysis, not this check.+-- Strict checking is the default. Neither check establishes universe+-- levels; the Hurkens construction still passes these checks. module Rzk.TypeCheck.MetaPrefix ( metaPrefixOf, isMetaType,@@ -84,14 +44,10 @@ -- * Classifying types --- | Does this type live outside RSTT proper — is it a universe, @CUBE@,--- @TOPE@, or a Π-type that quantifies over or lands in one of those? This--- covers a family into a universe (@A → U@, a tope family) and a schematic--- type such as @(X : U) → X → X@ (predicatively both are large). A--- parameter of such a type is a meta parameter. Never throws; an--- unanswerable probe reads as object.+-- | Recognise universes and functions quantifying over or into universes.+-- Includes @CUBE@ and @TOPE@; propagates classification failures. isMetaType :: Distinct n => TermT n -> TypeCheck n Bool-isMetaType t = flip catchError (\_ -> pure False) $ do+isMetaType t = do t' <- headView t case t' of UniverseT{} -> pure True@@ -104,11 +60,14 @@ else inScope orig md param ret isMetaType _ -> pure False --- | The length of the meta prefix of a declaration with this type: the--- number of leading parameters up to and including the last meta one--- (0 when there is none). Never throws.+-- | Count parameters through the last schematic one.+-- An incomplete classification is reported when meta-prefix checking is enabled. metaPrefixOf :: Distinct n => TermT n -> TypeCheck n Int-metaPrefixOf ty = flip catchError (\_ -> pure 0) $ go 1 0 ty+metaPrefixOf ty = go 1 0 ty `catchError` \err -> do+ sensitivity <- asks effectiveMetaPrefixSensitivity+ when (sensitivity /= MetaPrefixOff) $+ reportIncompleteRSTTCheck "RSTT meta-prefix classification incomplete" err+ pure 0 where go :: Distinct l => Int -> Int -> TermT l -> TypeCheck l Int go pos acc t = headView t >>= \case@@ -118,10 +77,7 @@ inScope orig md param ret (go (pos + 1) acc') _ -> pure acc --- | The head of a type, for classification: syntactically if the head is--- already informative, through WHNF otherwise (a defined name such as--- @FunExt@ must unfold). Restrictions are stripped either way; a boundary--- does not change which layer a type lives in.+-- Strip restrictions and unfold only when the head needs classification. headView :: Distinct n => TermT n -> TypeCheck n (TermT n) headView t = case stripTypeRestrictions t of t'@UniverseT{} -> pure t'@@ -148,19 +104,18 @@ typePositions = Positions MetaPos MetaPos objectPositions = Positions ObjectPos ObjectPos --- | Walk a declaration's elaborated type and value, warning about every--- use of a top-level name that supplies fewer arguments than its meta--- prefix at an object-level position. Advisory: never throws, and runs--- silently so WHNF probes do not trace.+-- | Report uses that supply too few schematic arguments.+-- Violations are errors when @rstt-safe = "error"@. recordMetaPrefixUses :: forall n. Distinct n => VarIdent -> TermT n -> Maybe (TermT n) -> TypeCheck n () recordMetaPrefixUses defName ty mval =- asks ctxMetaPrefixSensitivity >>= \case+ asks effectiveMetaPrefixSensitivity >>= \case MetaPrefixOff -> pure ()- _ -> localVerbosity Silent $ flip catchError (\_ -> pure ()) $ do- go rootPositions ty- mapM_ (go rootPositions) mval+ _ -> localVerbosity Silent $+ flip catchError (reportIncompleteRSTTCheck ("RSTT meta-parameter check incomplete in " <> show defName)) $ do+ go rootPositions ty+ mapM_ (go rootPositions) mval where go :: forall l. Distinct l => Positions -> TermT l -> TypeCheck l () go pos t = case t of@@ -186,8 +141,9 @@ LambdaT info orig mparam body -> do (mdom, md) <- case mparam of- Just (LambdaParam m ty' _mtope) -> do+ Just (LambdaParam m ty' mtope) -> do go typePositions ty'+ forM_ mtope $ \tope -> inScope orig m ty' tope (go objectPositions) pure (Just ty', m) -- A bare λ: the domain of its own Π-type. Nothing -> do@@ -195,8 +151,9 @@ pure (dom, Id) inScope orig md (fromMaybe universeT mdom) body (go pos) - TypeFunT _ orig md param _mtope ret -> do+ TypeFunT _ orig md param mtope ret -> do go typePositions param+ forM_ mtope $ \tope -> inScope orig md param tope (go objectPositions) inScope orig md param ret (go typePositions) TypeSigmaT _ orig md a bscope -> do@@ -212,7 +169,9 @@ TypeRestrictedT _ ty' rs -> do go typePositions ty'- forM_ rs $ \(_tope, term) -> go objectPositions term+ forM_ rs $ \(tope, term) -> do+ go objectPositions tope+ go objectPositions term LetT _ orig manno value body -> do mapM_ (go typePositions) manno@@ -236,13 +195,13 @@ -- An unsaturated top-level head at an object position warns; at a -- position only the strict rule rejects, the warning is marked so.- checkHead :: forall l. Positions -> Foil.Name l -> Int -> TypeCheck l ()+ checkHead :: forall l. Distinct l => Positions -> Foil.Name l -> Int -> TypeCheck l () checkHead pos v nargs = do ctx <- ask let info = lookupVarInfo v ctx k = varMetaPrefix info when (varIsTopLevel info && k > nargs) $ do- sensitivity <- asks ctxMetaPrefixSensitivity+ sensitivity <- asks effectiveMetaPrefixSensitivity let mrule = case (posStructural pos, posStrict pos) of (ObjectPos, _) -> Just MetaPrefixBoth (MetaPos, ObjectPos)@@ -260,20 +219,20 @@ -- Is the Π-domain of this function node meta-shaped? domainIsMeta :: forall l. Distinct l => TermT l -> TypeCheck l Bool- domainIsMeta f = flip catchError (\_ -> pure False) $ do+ domainIsMeta f = do tf <- typeOfUncomputed f headView tf >>= \case TypeFunT _ _ _ dom _ _ -> isMetaType dom _ -> pure False funDomain :: forall l. Distinct l => TermT l -> TypeCheck l (Maybe (TermT l))- funDomain tf = flip catchError (\_ -> pure Nothing) $+ funDomain tf = headView tf >>= \case TypeFunT _ _ _ dom _ _ -> pure (Just dom) _ -> pure Nothing modalDomain :: forall l. TermT l -> TypeCheck l (Maybe (TermT l))- modalDomain tv = flip catchError (\_ -> pure Nothing) $+ modalDomain tv = pure $ case stripTypeRestrictions tv of TypeModalT _ _ a -> Just a _ -> Nothing
src/Rzk/TypeCheck/Monad.hs view
@@ -15,7 +15,7 @@ -- @closeScope@ had to wrap the error one binder deeper and re-emit the holes. module Rzk.TypeCheck.Monad where -import Control.Monad (unless)+import Control.Monad (unless, when) import Control.Monad.Except (ExceptT, MonadError (catchError, throwError), runExceptT)@@ -23,12 +23,14 @@ import Control.Monad.Trans (lift) import Control.Monad.Trans.State.Strict (State, get, modify', put, runState)+import qualified Data.IntMap.Strict as IntMap+import qualified Data.IntSet as IntSet import Debug.Trace (trace) import Control.Monad.Foil (Distinct) import qualified Control.Monad.Foil as Foil -import Language.Rzk.Foil.Names (VarIdent)+import Language.Rzk.Foil.Names (TModality, VarIdent) import Language.Rzk.Foil.Syntax (positionOfTerm) import Rzk.TypeCheck.Context import Rzk.TypeCheck.Display@@ -39,8 +41,20 @@ data HoleEntry = HoleEntry { holeEntryName :: VarIdent , holeEntryType :: Rendered+ , holeEntryMode :: HoleModalInfo } deriving (Eq, Show) +data HoleModalInfo = HoleModalInfo+ { holeItemModality :: TModality+ , holeItemLocks :: TModality+ , holeItemAccessible :: Bool+ } deriving (Eq, Show)++data HoleTopeEntry = HoleTopeEntry+ { holeTopeValue :: Rendered+ , holeTopeMode :: HoleModalInfo+ } deriving (Eq, Show)+ -- | The structured goal and context at a hole, recorded in lenient mode (see -- 'allowHoles'). Everything is rendered to user-facing names at record time, so -- 'HoleInfo' is independent of the scope it came from. Local hypotheses are split@@ -58,10 +72,10 @@ -- restricted type in 'holeGoal'.) , holeTermVars :: [HoleEntry] -- ^ local hypotheses whose type is not a cube , holeCubeVars :: [HoleEntry] -- ^ local cube variables (type is a cube)- , holeTopes :: [Rendered] -- ^ local tope assumptions (excluding ⊤)+ , holeTopes :: [HoleTopeEntry] -- ^ local tope assumptions (excluding ⊤) , holeCandidates :: [Rendered]- -- ^ elimination spines over the local hypotheses whose type fits the goal,- -- with applied arguments left as holes. Already rendered, like the rest.+ -- ^ Rendered moves from local hypotheses, allow-listed top-level lemmas,+ -- and tope-context elimination; missing subterms remain holes. , holeIntroductions :: [Rendered] -- ^ introduction forms for the goal type, built from its head constructor -- with the constituents left as holes. Already rendered, like the rest.@@ -71,10 +85,7 @@ , holeLocation :: Maybe LocationInfo } deriving (Eq, Show) --- | A non-fatal finding of the checker, recorded on the writer channel--- beside the holes and carried out of a run in @Checked@. Structured, so--- the CLI, the LSP, and (later) safe mode each decide how to present or--- escalate it.+-- | A structured checker diagnostic. Safe error mode rejects fragment violations. data CheckWarning = LargeInductiveTypeWarning VarIdent -- ^ the data type@@ -87,12 +98,60 @@ Int -- ^ the length of the meta prefix MetaPrefixRule (Maybe LocationInfo)+ | RSTTScopeWarning RSTTExtension String (Maybe LocationInfo)+ | RSTTHoleWarning (Maybe LocationInfo)+ | RSTTIncompleteWarning String (Maybe LocationInfo)+ | OverhangWarning+ String -- ^ restriction face or recOR branch guard+ String -- ^ the face or guard, rendered+ [String] -- ^ the local tope context, rendered+ (Maybe LocationInfo)+ | TopeFamilyDomainWarning+ String -- ^ the family, rendered where it was checked+ String -- ^ its declared domain, rendered under the family's binder+ (Maybe LocationInfo)+ | FreeStandingRestrictionWarning+ VarIdent -- ^ the declaration+ String -- ^ the restricted type, rendered+ FragmentUse -- ^ what assumes it+ (Maybe LocationInfo)+ | MetaBinderWarning+ VarIdent -- ^ the declaration+ VarIdent -- ^ the variable bound inside a term+ String -- ^ its type, rendered+ (Maybe LocationInfo) deriving (Eq, Show) +-- | Diagnostic categories for constructs outside the RSTT fragment.+data RSTTExtension = RSTTModal | RSTTInterval | RSTTInductive | RSTTShapeDependency | RSTTUnsupported | RSTTSchematic+ deriving (Eq, Show)++-- | What assumes a free-standing restriction (see "Rzk.TypeCheck.Fragment.RSTT"),+-- which conservativity allows to be concluded but not assumed.+data FragmentUse+ = UseBinder+ -- ^ the type of a binder (λ, Π, Σ, or a declaration's parameter)+ | UseMotive+ -- ^ the motive of an eliminator+ | UseData+ -- ^ inside a type passed as data, at a meta-typed argument or component+ | UseIdentity+ -- ^ the type of an identity type, whose endpoints it types+ | UseConcluded+ -- ^ a concluded type, off the spine of codomains (a Σ component, say)+ deriving (Eq, Show)+ -- | Where a warning points, for per-file attribution. warningLocation :: CheckWarning -> Maybe LocationInfo warningLocation (LargeInductiveTypeWarning _ _ loc) = loc warningLocation (MetaPrefixWarning _ _ _ _ _ loc) = loc+warningLocation (RSTTScopeWarning _ _ loc) = loc+warningLocation (RSTTIncompleteWarning _ loc) = loc+warningLocation (RSTTHoleWarning loc) = loc+warningLocation (OverhangWarning _ _ _ loc) = loc+warningLocation (TopeFamilyDomainWarning _ _ loc) = loc+warningLocation (FreeStandingRestrictionWarning _ _ _ loc) = loc+warningLocation (MetaBinderWarning _ _ _ loc) = loc -- | Which candidate rule of the meta-parameter layer check flags a -- 'MetaPrefixWarning' (see "Rzk.TypeCheck.MetaPrefix"): the structural@@ -109,14 +168,17 @@ data CheckLog = CheckLog { logHolesRev :: [HoleInfo] , logWarningsRev :: [CheckWarning]+ , logSchematicCache :: IntSet.IntSet+ -- Nothing records an unsuccessful or ongoing object-family probe.+ , logSchematicObjectFamilies :: IntMap.IntMap (Maybe Int) } emptyCheckLog :: CheckLog-emptyCheckLog = CheckLog [] []+emptyCheckLog = CheckLog [] [] IntSet.empty IntMap.empty -- | What a run recorded, in the order it was recorded. checkLog :: CheckLog -> ([HoleInfo], [CheckWarning])-checkLog (CheckLog holes warnings) = (reverse holes, reverse warnings)+checkLog (CheckLog holes warnings _ _) = (reverse holes, reverse warnings) -- | The record of a run is kept in the /state/, beneath the error channel, -- rather than on a writer channel above it.@@ -191,6 +253,19 @@ localWarnOverhang :: Bool -> TypeCheck n a -> TypeCheck n a localWarnOverhang warn = local $ \ctx -> ctx { ctxWarnOverhang = warn } +localWarnTopeFamilyDomain :: Bool -> TypeCheck n a -> TypeCheck n a+localWarnTopeFamilyDomain warn = local $ \ctx -> ctx { ctxWarnTopeFamilyDomain = warn }++localWarnFreeStandingRestriction :: Bool -> TypeCheck n a -> TypeCheck n a+localWarnFreeStandingRestriction warn =+ local $ \ctx -> ctx { ctxStandaloneWarnFreeStandingRestriction = warn }++localWarnShapeDependency :: Bool -> TypeCheck n a -> TypeCheck n a+localWarnShapeDependency warn = local $ \ctx -> ctx { ctxStandaloneWarnShapeDependency = warn }++localWarnMetaBinder :: Bool -> TypeCheck n a -> TypeCheck n a+localWarnMetaBinder warn = local $ \ctx -> ctx { ctxStandaloneWarnMetaBinder = warn }+ localMetaPrefixSensitivity :: MetaPrefixSensitivity -> TypeCheck n a -> TypeCheck n a localMetaPrefixSensitivity sensitivity = local $ \ctx -> ctx { ctxMetaPrefixSensitivity = sensitivity }@@ -275,15 +350,45 @@ -- * Holes -recordHoleInfo :: HoleInfo -> TypeCheck n ()-recordHoleInfo info =+recordHoleInfo :: Distinct n => HoleInfo -> TypeCheck n ()+recordHoleInfo info = do modifyLog $ \l -> l { logHolesRev = info : logHolesRev l }+ enabled <- asks rsttSafeEnabled+ when enabled $ recordCheckWarning (RSTTHoleWarning (holeLocation info)) -- * Warnings -recordCheckWarning :: CheckWarning -> TypeCheck n ()-recordCheckWarning warning =- modifyLog $ \l -> l { logWarningsRev = warning : logWarningsRev l }+-- | Record a warning once, rejecting fragment violations in safe error mode.+recordCheckWarning :: Distinct n => CheckWarning -> TypeCheck n ()+recordCheckWarning warning = do+ -- Signature and body elaboration may report the same annotation twice.+ modifyLog $ \l ->+ if warning `elem` logWarningsRev l then l+ else l { logWarningsRev = warning : logWarningsRev l }+ mode <- asks rsttSafeMode+ when (mode == RSTTSafeError) $+ mapM_ (issueTypeError . TypeErrorRSTT) (rsttViolation warning)++-- | Describe a fragment violation; return 'Nothing' for unrelated warnings.+rsttViolation :: CheckWarning -> Maybe String+rsttViolation = \case+ MetaPrefixWarning _ _ _ _ _ _ -> Just "unsaturated schematic parameters"+ FreeStandingRestrictionWarning _ _ _ _ -> Just "free-standing restriction in an assumed position"+ MetaBinderWarning _ _ _ _ -> Just "schematic binder inside a term"+ RSTTScopeWarning _ feature _ -> Just (feature <> " is outside RSTT")+ RSTTHoleWarning _ -> Just "unfinished obligation"+ RSTTIncompleteWarning reason _ -> Just reason+ _ -> Nothing++-- | Report an unfinished fragment check without masking a safe-mode error.+reportIncompleteRSTTCheck :: Distinct n => String -> TypeErrorInScopedContext -> TypeCheck n ()+reportIncompleteRSTTCheck _ err@(TypeErrorInScopedContext _ TypeErrorRSTT{}) = throwError err+reportIncompleteRSTTCheck what (TypeErrorInScopedContext _ err) = do+ loc <- asks ctxLocation+ let reason = case err of+ TypeErrorOther message -> message+ _ -> "could not inspect a type"+ recordCheckWarning $ RSTTIncompleteWarning (what <> ": " <> reason) loc -- * Locations
src/Rzk/TypeCheck/NbE.hs view
@@ -4,9 +4,42 @@ {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE ScopedTypeVariables #-} --- | Normalisation by evaluation, used as an all-or-nothing fast path for--- conversion checking.+-- | A conversion fast path using normalisation by evaluation. Evaluation keeps+-- neutral spines with lazy unfoldings and compares them with one-step η for+-- functions and pairs. 'Convertible' accepts the comparison; 'DontKnow' leaves+-- it to ordinary unification. --+-- Constructs whose reduction depends on the tope context or modalities, and+-- holes, abort this fast path. Extension types and @recBOT@ are compared+-- structurally. See the conversion, soundness and attribution notes below.+module Rzk.TypeCheck.NbE+ ( Conversion (..)+ , nbeConvertible+ -- * Conversion notes+ -- $conversion+ -- * Soundness+ -- $soundness+ -- * Attribution+ -- $attribution+ ) where++import Control.Monad.Reader (asks)+import Data.Bifoldable (bifoldMap)+import Data.Bifunctor (bimap)+import Data.Monoid (All (..))+import Data.ZipMatchK (zipMatch2)++import Control.Monad.Foil (NameBinder)+import qualified Control.Monad.Foil as Foil+import Control.Monad.Free.Foil (AST (Node, Var),+ ScopedAST (..))+import Control.Monad.Free.Foil.Annotated (AnnSig (..))++import Language.Rzk.Foil.Syntax+import Rzk.TypeCheck.Context+import Rzk.TypeCheck.Monad++-- $conversion -- 'nbeConvertible' evaluates both sides into a value domain with closures -- (sharing by construction: a definition's value is evaluated once per -- occurrence, not once per copy, and Haskell's laziness makes the evaluation@@ -19,13 +52,17 @@ -- -- It answers only 'Convertible' or 'DontKnow', never a definite inequality, -- so a caller falls back to the ordinary unification on 'DontKnow'. The two--- cases are not opposites, which is why the answer is not a 'Bool'. The fast--- path can therefore accept more--- than the unification below it, but never less. Note that it does accept--- more. The ordinary path decomposes an application pairwise, which invents--- subgoals that a βδ-equal but structurally different pair need not meet+-- cases are not opposites, which is why the answer is not a 'Bool'. NbE can+-- accept comparisons that ordinary unification rejects: pairwise application+-- decomposition can create subgoals that βδ-equal applications need not meet -- (see 'Rzk.TypeCheck.Unify.unifyViaDecompose'). --+-- The evaluator is a pure function of the 'Context': 'valueOfVar' is a plain+-- reader-only lookup, and fresh variables for comparing closures are de+-- Bruijn levels ('HFresh'), so the foil scope machinery is never extended and+-- no quote function is needed.+--+-- $soundness -- Soundness is a subset argument: 'Convertible' is answered only for terms that are -- βδ-convertible up to α and the one-step η above, with every construct whose -- /reduction/ consults the context — @recOR@ guard selection, holes, the@@ -34,16 +71,10 @@ -- structurally (see the note at their 'eval' case): a structurally identical -- pair of restricted types is also accepted by the ordinary unification, -- through reflexive coverage and the cross-face coherences already proved at--- formation. Every 'Convertible' is therefore also a success of the old--- unification.------ The evaluator is a pure function of the 'Context': 'valueOfVar' is a plain--- reader-only lookup, and fresh variables for comparing closures are de--- Bruijn levels ('HFresh'), so the foil scope machinery is never extended and--- no quote function is needed.------ == Attribution+-- formation. The soundness claim concerns definitional equality, rather than+-- the comparisons accepted by the previous unification algorithm. --+-- $attribution -- None of the underlying techniques are ours. Semantic conversion checking — -- evaluate both sides into a value domain with closures and compare the -- values, applying functions to fresh generic values — is the algorithm of@@ -81,23 +112,6 @@ -- ('Convertible' or 'DontKnow', never refute), and 'VAbort' poisoning of the -- context-sensitive fragment so that the fast path stays sound by a subset -- argument.-module Rzk.TypeCheck.NbE (Conversion (..), nbeConvertible) where--import Control.Monad.Reader (asks)-import Data.Bifoldable (bifoldMap)-import Data.Bifunctor (bimap)-import Data.Monoid (All (..))-import Data.ZipMatchK (zipMatch2)--import Control.Monad.Foil (NameBinder)-import qualified Control.Monad.Foil as Foil-import Control.Monad.Free.Foil (AST (Node, Var),- ScopedAST (..))-import Control.Monad.Free.Foil.Annotated (AnnSig (..))--import Language.Rzk.Foil.Syntax-import Rzk.TypeCheck.Context-import Rzk.TypeCheck.Monad -- * The value domain
+ src/Rzk/TypeCheck/Schematic.hs view
@@ -0,0 +1,418 @@+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}++-- | Check schematic dRzk declarations without treating universes as object types.+-- Family arguments are checked at their indices. Schematic rules,+-- such as function extensionality, may also be parameters of a declaration.+-- Postulates supply trusted rules; checking their statements does not prove them.+module Rzk.TypeCheck.Schematic+ ( SchematicStatement, CheckedSchematicDeclaration, checkSchematicDeclaration+ , recordSchematicDeclaration+ ) where++import Control.Monad (forM_, unless, void, when)+import Control.Monad.Except (catchError)+import Control.Monad.Reader (asks, local)+import Control.Monad.State.Strict (gets)+import Data.Bifoldable (bifoldMap)+import qualified Data.IntMap.Strict as IntMap+import qualified Data.IntSet as IntSet+import Data.Maybe (isJust)+import Control.Monad.Foil (Distinct)+import qualified Control.Monad.Foil as Foil+import Control.Monad.Free.Foil (AST (..))+import Control.Monad.Free.Foil.Annotated (AnnSig (..))+import Language.Rzk.Foil.Names (TModality (..), TypeInfo (..), VarIdent)+import Language.Rzk.Foil.Syntax+import Rzk.TypeCheck.Context+import Rzk.TypeCheck.Display (namingOfContext, ppTerm)+import Rzk.TypeCheck.Error+import Rzk.TypeCheck.Eval+import Rzk.TypeCheck.Fragment.RSTT (fragmentHead)+import Rzk.TypeCheck.Monad++-- Constructors stay private: a statement alone does not certify its proof.+newtype SchematicStatement n = SchematicStatement (TermT n)+data CheckedSchematicDeclaration n = CheckedSchematicDeclaration+ (SchematicStatement n) (Maybe (TermT n))++-- | Roles of elaborated type and domain expressions in schematic declarations.+-- These are not universe levels. The fragment's formation conditions are+-- checked separately in "Rzk.TypeCheck.Fragment.RSTT".+data Sort+ = ObjectType+ -- ^ Ordinary types that may instantiate @(A : U)@, e.g. @Unit@ or @A -> A@.+ | ParameterKind+ -- ^ Kinds of schematic data: @U@, @CUBE@, @TOPE@, family kinds such as+ -- @A -> U@, and dependent sums containing non-object components.+ | SchematicRule+ -- ^ Function signatures ending in an object type and quantifying over+ -- kinds or rules, e.g. @(A : U) -> A -> A@.+ | Shape+ -- ^ Cube or tope expressions, e.g. @2@ or @TOP@; these are not object types.+ deriving (Eq)++-- | Validate an elaborated declaration and the definitions used by its proof.+-- This supplements dRzk typing with kind checks; it is not a separate RSTT kernel.+checkSchematicDeclaration+ :: Distinct n => TermT n -> Maybe (TermT n)+ -> TypeCheck n (CheckedSchematicDeclaration n)+checkSchematicDeclaration ty value = do+ declaration 256 IntSet.empty ty value+ pure (CheckedSchematicDeclaration (SchematicStatement ty) value)++-- | Apply the selected safe-mode policy and return whether validation succeeded.+recordSchematicDeclaration+ :: Distinct n => VarIdent -> TermT n -> Maybe (TermT n) -> TypeCheck n SchematicStatus+recordSchematicDeclaration name ty value = do+ enabled <- asks rsttSafeEnabled+ if not enabled then pure SchematicUnchecked else+ (checkSchematicDeclaration ty value >> pure SchematicChecked) `catchError` \err -> do+ case err of+ TypeErrorInScopedContext _ (TypeErrorSchematic problem reason) -> do+ loc <- asks ctxLocation+ warnings <- gets logWarningsRev+ -- Source checking already gives more precise locations for these.+ let alreadyReported = problem == SchematicUnsupported && any (sameDeclaration loc) warnings+ unless alreadyReported $ recordCheckWarning (RSTTScopeWarning RSTTSchematic+ (reason <> " (in " <> show name <> ")") loc)+ _ -> reportIncompleteRSTTCheck ("schematic check incomplete in " <> show name) err+ pure SchematicRejected++sameDeclaration :: Maybe LocationInfo -> CheckWarning -> Bool+sameDeclaration loc warning = withinDeclaration && case warning of+ RSTTHoleWarning{} -> True+ RSTTScopeWarning RSTTModal _ _ -> True+ RSTTScopeWarning RSTTInductive _ _ -> True+ RSTTScopeWarning RSTTInterval _ _ -> True+ RSTTScopeWarning RSTTUnsupported _ _ -> True+ _ -> False+ where+ withinDeclaration = case (loc, warningLocation warning) of+ (Just start, Just at) -> locationFilePath start == locationFilePath at &&+ locationLine at >= locationLine start+ _ -> loc == warningLocation warning++invalid :: Distinct n => String -> TermT n -> TypeCheck n a+invalid = schematicError SchematicKindMismatch++schematicError :: Distinct n => SchematicProblem -> String -> TermT n -> TypeCheck n a+schematicError problem reason t = do+ naming <- asks namingOfContext+ issueTypeError (TypeErrorSchematic problem (reason <> ": " <> ppTerm naming (untyped t)))++budget :: Distinct n => Int -> TypeCheck n ()+budget fuel = when (fuel <= 0) $+ issueTypeError (TypeErrorOther "schematic validation limit reached")++-- Check a declaration telescope separately: a definition may name a family kind+-- or a schema, whereas an argument to a type parameter must be an object type.+declaration :: Distinct n => Int -> IntSet.IntSet -> TermT n -> Maybe (TermT n) -> TypeCheck n ()+declaration fuel seen ty value = do+ budget fuel+ -- Check dependencies before reduction can obscure their failures.+ dependencies ty+ signature fuel seen ty+ mapM_ (\t -> dependencies t >> term fuel seen t) value+ where+ dependencies = mapM_ (uses fuel seen . Var) . freeVarsOfTermT++signature :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n ()+signature fuel seen ty = do+ budget fuel+ uses fuel seen ty+ inspectRedex fuel seen ty+ fragmentHead fuel ty >>= \case+ TypeFunT _ orig md dom guard body -> do+ void (classify (fuel - 1) seen dom)+ mapM_ (\g -> inScope orig md dom g (term (fuel - 1) seen)) guard+ inScope orig md dom body (signature (fuel - 1) seen)+ t -> void (classify (fuel - 1) seen t)++-- Check each dependency before using its signature, even if safe mode was off+-- when it was declared. Successful earlier checks are cached in the context.+-- Check variables during traversal instead of rescanning every subtree.+uses :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n ()+uses fuel seen (Var v) = do+ info <- infoOfVar id v+ cached <- gets (IntSet.member (Foil.nameId v) . logSchematicCache)+ when (varIsTopLevel info && varSchematicStatus info /= SchematicChecked && not cached) $ do+ when (varSchematicStatus info == SchematicRejected) $+ schematicError SchematicDependency "dependency failed schematic validation" (Var v)+ when (isJust (varDataRole info)) $+ schematicError SchematicUnsupported "inductive dependency" (Var v)+ budget fuel+ when (IntSet.member (Foil.nameId v) seen) $+ issueTypeError (TypeErrorOther "cyclic schematic dependency")+ -- A caller's tope assumptions cannot justify a reusable dependency check.+ local withoutCallerTopes $ declaration (fuel - 1) (IntSet.insert (Foil.nameId v) seen)+ (varType info) (varValue info)+ modifyLog $ \checkLog' -> checkLog'+ { logSchematicCache = IntSet.insert (Foil.nameId v) (logSchematicCache checkLog') }+uses _ _ _ = pure ()++withoutCallerTopes :: Context n -> Context n+withoutCallerTopes ctx = ctx+ { ctxDiscreteTopes = [], ctxTopes = [], ctxTopesNF = []+ , ctxTopesNFUnion = [[]], ctxTopesEntailBottom = Just False+ , ctxTopesSaturated = SaturationUncached+ }++-- Check erased arguments and annotations before exposing the result.+inspectRedex :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n ()+inspectRedex fuel seen original = case original of+ LetT{} -> term fuel seen original+ TypeAscT{} -> term fuel seen original+ FirstT{} -> term fuel seen original+ SecondT{} -> term fuel seen original+ IdJT{} -> term fuel seen original+ RecOrT{} -> term fuel seen original+ _ -> applications fuel seen original++classify :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n Sort+classify fuel seen original = do+ budget fuel+ uses fuel seen original+ inspectRedex fuel seen original+ knownObjectFamily fuel seen original >>= \case+ True -> pure ObjectType+ False -> classifyHead fuel seen original++classifyHead :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n Sort+classifyHead fuel seen original =+ fragmentHead fuel original >>= \case+ UniverseT{} -> pure ParameterKind+ UniverseCubeT{} -> pure ParameterKind+ UniverseTopeT{} -> pure ParameterKind+ TypeFunT _ orig md dom guard body -> do+ d <- classify (fuel - 1) seen dom+ mapM_ (\g -> inScope orig md dom g (term (fuel - 1) seen)) guard+ r <- inScope orig md dom body (classify (fuel - 1) seen)+ case (d, r) of+ (ObjectType, ObjectType) -> pure ObjectType+ (Shape, ObjectType) -> pure ObjectType+ (_, ParameterKind) -> pure ParameterKind+ (_, Shape) -> invalid "cube or shape family" original+ _ -> pure SchematicRule+ TypeSigmaT _ orig md a b -> do+ d <- classify (fuel - 1) seen a+ r <- inScope orig md a b (classify (fuel - 1) seen)+ pure (if d == ObjectType && r == ObjectType then ObjectType else ParameterKind)+ TypeIdT _ a mt b -> do+ ty <- maybe (schematicTypeOf fuel a) pure mt+ object (fuel - 1) seen ty+ term (fuel - 1) seen a+ term (fuel - 1) seen b+ pure ObjectType+ TypeUnitT{} -> pure ObjectType+ RecBottomT{} -> pure ObjectType+ RecOrT _ branches -> do+ sorts <- mapM (\(p, v) -> localTope p (classify (fuel - 1) seen v)) branches+ case sorts of+ s : rest | all (== s) rest -> pure s+ _ -> invalid "case split between different schematic kinds" original+ TypeRestrictedT _ ty rs -> do+ s <- classify (fuel - 1) seen ty+ forM_ rs $ \(p, v) -> term (fuel - 1) seen p >> argument (fuel - 1) seen ty v+ pure s+ CubeUnitT{} -> pure Shape+ Cube2T{} -> pure Shape+ CubeProductT _ a b -> term (fuel - 1) seen a >> term (fuel - 1) seen b >> pure Shape+ t -> do+ termNeutral (fuel - 1) seen t+ schematicTypeOf fuel t >>= fragmentHead fuel >>= \case+ UniverseT{} -> pure ObjectType+ UniverseCubeT{} -> pure Shape+ UniverseTopeT{} -> pure Shape+ _ -> invalid "expected an object type, parameter kind, or schematic rule" t++-- Reuse only universally object-valued families, after checking actual arguments.+-- Other families retain reduction-based classification in the caller's context.+knownObjectFamily :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n Bool+knownObjectFamily fuel seen = spine 0+ where+ spine arity (AppT _ f _) = spine (arity + 1) f+ spine arity (Var v) = do+ info <- infoOfVar id v+ if not (varIsTopLevel info) then pure False else do+ let key = Foil.nameId v+ cached <- gets (IntMap.lookup key . logSchematicObjectFamilies)+ summary <- case cached of+ Just result -> pure result+ Nothing -> do+ cache key Nothing+ result <- (local withoutCallerTopes $+ objectFamilyArity fuel seen 0 (varType info) (Var v))+ `catchError` \_ -> pure Nothing+ cache key result+ pure result+ pure (summary == Just arity)+ spine _ _ = pure False+ cache key result = modifyLog $ \checkLog' -> checkLog'+ { logSchematicObjectFamilies = IntMap.insert key result (logSchematicObjectFamilies checkLog') }++-- Probe at fresh parameters; never generalise a concrete instance.+objectFamilyArity :: Distinct n => Int -> IntSet.IntSet -> Int -> TermT n -> TermT n -> TypeCheck n (Maybe Int)+objectFamilyArity fuel seen arity ty value = do+ budget fuel+ fragmentHead fuel ty >>= \case+ TypeFunT _ orig md dom _ body ->+ inScope orig md dom body $ \cod -> do+ bound <- asks ctxBound+ case bound of+ v : _ -> objectFamilyArity (fuel - 1) seen (arity + 1) cod+ (appT cod (Foil.sink value) (Var v))+ [] -> issueTypeError (TypeErrorOther "missing schematic index")+ UniverseT{} -> do+ s <- classify (fuel - 1) seen value+ pure (if s == ObjectType then Just arity else Nothing)+ _ -> pure Nothing++object :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n ()+object fuel seen t = do+ s <- classify (fuel - 1) seen t+ unless (s == ObjectType) (invalid "expected an object type" t)++-- A type-family argument is checked pointwise. In particular U, A -> U, and+-- (A : U) -> A cannot instantiate a parameter declared simply as A : U.+argument :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TermT n -> TypeCheck n ()+argument fuel seen dom arg = do+ budget fuel+ functionHead fuel dom >>= \case+ UniverseT{} -> object (fuel - 1) seen arg+ TypeFunT _ orig md a guard body -> do+ s <- classify (fuel - 1) seen dom+ if s == ParameterKind then do+ -- Eta-expand only for checking; the ordinary checker has checked the+ -- argument's type. The body is inspected with the same fresh index.+ inScope orig md a body $ \cod -> do+ ctx <- asks id+ case ctxBound ctx of+ v : _ -> argument (fuel - 1) seen cod (appT cod (Foil.sink arg) (Var v))+ [] -> issueTypeError (TypeErrorOther "missing schematic index")+ mapM_ (\g -> inScope orig md a g (term (fuel - 1) seen)) guard+ else term (fuel - 1) seen arg+ _ -> term (fuel - 1) seen arg++-- Section abstraction can leave application annotations describing an earlier+-- telescope. Derive elimination types from the current signatures instead.+-- TODO: Share this reconstruction with Eval when repairing annotations there.+schematicTypeOf :: Distinct n => Int -> TermT n -> TypeCheck n (TermT n)+schematicTypeOf fuel t = do+ budget fuel+ case t of+ AppT _ f x -> schematicTypeOf (fuel - 1) f >>= functionHead fuel >>= \case+ TypeFunT _ _ _ _ _ ret -> instantiate ret x+ _ -> invalid "application without a function type" f+ FirstT _ p -> schematicTypeOf (fuel - 1) p >>= functionHead fuel >>= \case+ TypeSigmaT _ _ _ a _ -> pure a+ CubeProductT _ a _ -> pure a+ _ -> invalid "projection without a product type" p+ SecondT _ p -> schematicTypeOf (fuel - 1) p >>= functionHead fuel >>= \case+ TypeSigmaT _ _ _ a b -> instantiate b (firstT a p)+ CubeProductT _ _ b -> pure b+ _ -> invalid "projection without a product type" p+ _ -> typeOfUncomputed t++-- Boundaries constrain a function without changing its parameter kinds.+functionHead :: Distinct n => Int -> TermT n -> TypeCheck n (TermT n)+functionHead fuel t = do+ budget fuel+ fragmentHead fuel t >>= \case+ TypeRestrictedT _ base _ -> functionHead (fuel - 1) base+ head' -> pure head'++applications :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n ()+applications fuel seen (AppT _ f x) = do+ budget fuel+ term (fuel - 1) seen f+ schematicTypeOf fuel f >>= functionHead fuel >>= \case+ TypeFunT _ _ _ dom _ _ -> argument (fuel - 1) seen dom x+ _ -> invalid "application without a schematic or object function type" f+applications _ _ _ = pure ()++term :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n ()+term fuel seen t = do+ budget fuel+ uses fuel seen t+ case t of+ TypeFunT{} -> void (classify (fuel - 1) seen t)+ TypeSigmaT{} -> void (classify (fuel - 1) seen t)+ TypeIdT{} -> void (classify (fuel - 1) seen t)+ TypeRestrictedT{} -> void (classify (fuel - 1) seen t)+ LambdaT info orig param body -> do+ (md, dom) <- case param of+ Just (LambdaParam md dom guard) -> do+ mapM_ (\g -> inScope orig md dom g (term (fuel - 1) seen)) guard+ pure (md, dom)+ Nothing -> functionHead fuel (infoType info) >>= \case+ TypeFunT _ _ md dom _ _ -> pure (md, dom)+ _ -> invalid "lambda without a function type" t+ void (classify (fuel - 1) seen dom)+ inScope orig md dom body (term (fuel - 1) seen)+ AppT{} -> applications fuel seen t+ LetT _ orig annotation value body -> do+ mapM_ (signature (fuel - 1) seen) annotation+ term (fuel - 1) seen value+ ty <- maybe (schematicTypeOf fuel value) pure annotation+ inScopeWith orig Id ty (Just value) body (term (fuel - 1) seen)+ TypeAscT _ value ty -> signature (fuel - 1) seen ty >> term (fuel - 1) seen value+ IdJT _ a x motive d y p -> do+ object (fuel - 1) seen a+ -- J eliminates equality into object types, not into schematic kinds.+ motiveType <- schematicTypeOf fuel motive+ argument (fuel - 1) seen motiveType motive+ mapM_ (term (fuel - 1) seen) [x, motive, d, y, p]+ _ -> termNeutral fuel seen t++-- This is deliberately an allow-list. New syntax cannot inherit certification.+termNeutral :: Distinct n => Int -> IntSet.IntSet -> TermT n -> TypeCheck n ()+termNeutral fuel seen t = case t of+ Var{} -> pure ()+ UniverseT{} -> pure ()+ UniverseCubeT{} -> pure ()+ UniverseTopeT{} -> pure ()+ CubeUnitT{} -> pure ()+ CubeUnitStarT{} -> pure ()+ Cube2T{} -> pure ()+ Cube2_0T{} -> pure ()+ Cube2_1T{} -> pure ()+ TypeUnitT{} -> pure ()+ UnitT{} -> pure ()+ TopeTopT{} -> pure ()+ TopeBottomT{} -> pure ()+ CubeProductT{} -> children+ CubeSupT{} -> children+ CubeInfT{} -> children+ TopeEQT{} -> children+ TopeLEQT{} -> children+ TopeAndT{} -> children+ TopeOrT{} -> children+ PairT _ x y -> do+ ty <- schematicTypeOf fuel t+ functionHead fuel ty >>= \case+ TypeSigmaT _ _ _ a b -> do+ argument (fuel - 1) seen a x+ cod <- instantiate b x+ argument (fuel - 1) seen cod y+ CubeProductT{} -> children+ _ -> invalid "pair without a product type" t+ FirstT{} -> children+ SecondT{} -> children+ ReflT _ mx -> forM_ mx $ \(x, mty) -> do+ ty <- maybe (schematicTypeOf fuel x) pure mty+ object (fuel - 1) seen ty+ term (fuel - 1) seen x+ -- Elaboration checks the absurd tope context; recBOT has a cyclic type annotation.+ RecBottomT{} -> pure ()+ RecOrT{} -> children+ AppT{} -> applications fuel seen t+ _ -> schematicError SchematicUnsupported "unsupported schematic expression" t+ where+ children = case t of+ Node (AnnSig _ sig) -> mapM_ (term (fuel - 1) seen) (bifoldMap (const []) (:[]) sig)+ Var{} -> pure ()
src/Rzk/TypeCheck/Unify.hs view
@@ -157,7 +157,16 @@ -- A hole (in lenient mode) stands for a term of the expected type, so it -- unifies with anything; accept it rather than falling through to the -- dispatch below (which would panic on an unexpected term).- Just (expected', actual') | isHoleT expected' || isHoleT actual' -> return ()+ --+ -- The same goes for a term /headed/ by a hole (@?f t@, @π₁ ?@): filling+ -- the head decides its shape, so it has none to mismatch with yet (see+ -- 'unifyStructurally'). It must be accepted here, before the spine is+ -- decomposed: comparing @?f t@ with @α t 0₂@ argument-wise would unify+ -- @t@ with @0₂@ in the cube layer and fail, although @?f := \\ t → α t 0₂@+ -- is a solution. This is what the η-expanded hole of a hole candidate+ -- meets when the goal's argument is a λ into an extension type, e.g. an+ -- edge @\\ t → α t 0₂@ of a square.+ Just (expected', actual') | isHoleHeadedT expected' || isHoleHeadedT actual' -> return () Just (expected', actual') -> do same <- alphaEq expected' actual' unless same $ dispatch expected' actual'@@ -299,7 +308,8 @@ case actual' of TypeFunT _ty' orig' md' cube' mtope' ret' -> do when (md /= md') $- issueTypeError (TypeErrorOther $ "modality mismatch in function type: expected " <> show md <> " but got " <> show md')+ issueTypeError (TypeErrorModalityMismatch+ MismatchFunctionType md md' Nothing) switchVariance $ -- unifying in the negative position! unifyTerms cube cube' -- FIXME: unifyCubes inScope2 orig' md cube' ret ret' $ \binder retBody retBody' -> do@@ -340,7 +350,8 @@ case actual' of TypeSigmaT _ty' orig' md' a' b' -> do when (md /= md') $- issueTypeError (TypeErrorOther $ "modality mismatch in sigma type: expected " <> show md <> " but got " <> show md')+ issueTypeError (TypeErrorModalityMismatch+ MismatchSigmaType md md' Nothing) unify Nothing a a' inScope2 orig' md a' b b' $ \_binder bBody bBody' -> unify Nothing bBody bBody'@@ -377,7 +388,8 @@ case stripTypeRestrictions (infoType ty') of TypeFunT _ty' _origF' md' param' mtope' _ret' -> do when (md /= md') $- issueTypeError (TypeErrorOther $ "modality mismatch in lambda: expected " <> show md <> " but got " <> show md')+ issueTypeError (TypeErrorModalityMismatch+ MismatchLambda md md' Nothing) unify Nothing param param' -- we (should) have already checked this in types! inScope2 orig' md param body body' $ \binder bodyIn bodyIn' -> do scope <- asks ctxScope@@ -410,9 +422,7 @@ LetModT _ _ app' inn' _ _mmotive' val' body' | app == app', inn == inn' -> do unify Nothing val val'- bty <- typeOf val >>= \case- TypeModalT _ _ t -> pure t- _ -> panicImpossible "not modal in letmod"+ bty <- requireTypeUnderModal inn val inScope2 orig (comp app inn) bty body body' $ \_binder bodyIn bodyIn' -> unify Nothing bodyIn bodyIn' _ -> err
test/Rzk/DiagnosticSpec.hs view
@@ -46,6 +46,44 @@ ("goal" `isInfixOf` diagnosticMessage d) `shouldBe` True ds -> expectationFailure ("expected one diagnostic, got " <> show (length ds)) + it "leaves ordinary identity context entries unmarked" $ do+ case diagnose "#lang rzk-1\n#define g : (A : U) -> A -> A\n := \\ A a -> ?\n" of+ [d] -> do+ diagnosticMessage d `shouldSatisfy` isInfixOf " A : U"+ diagnosticMessage d `shouldSatisfy` isInfixOf " a : A"+ diagnosticMessage d `shouldNotSatisfy` isInfixOf "× "+ diagnosticMessage d `shouldNotSatisfy` isInfixOf "[modality:"+ ds -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++ it "marks inaccessible modal term and cube variables" $ do+ let src = "#lang rzk-1\n\+ \#def g (A : U) (B :_op U) (i :_op 2) : U := ?\n"+ case diagnose src of+ [d] -> do+ diagnosticMessage d `shouldSatisfy` isInfixOf " A : U"+ diagnosticMessage d `shouldNotSatisfy` isInfixOf "× A : U"+ diagnosticMessage d `shouldSatisfy`+ isInfixOf " × B : U [modality: ᵒᵖ, locks: _id]"+ diagnosticMessage d `shouldSatisfy`+ isInfixOf " × i : 2 [modality: ᵒᵖ, locks: _id]"+ ds -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++ it "keeps and marks a tope that is unavailable under a modal lock" $ do+ let src = "#lang rzk-1\n\+ \#def g : (i : 2 | i === 0_2) -> _op Unit\n\+ \ := \\ i -> mod _op ?\n"+ case diagnose src of+ [d] -> do+ diagnosticMessage d `shouldSatisfy`+ isInfixOf " × i : 2 [modality: _id, locks: ᵒᵖ]"+ diagnosticMessage d `shouldSatisfy`+ isInfixOf " × i ≡ 0₂ [modality: _id, locks: ᵒᵖ]"+ -- the tope is not in force, so it is in topeInfo but not in topes+ let json = BL8.unpack (encode d)+ ("\"topes\":[]" `isInfixOf` json) `shouldBe` True+ ("\"accessible\":false" `isInfixOf` json) `shouldBe` True+ ds -> expectationFailure ("expected one diagnostic, got " <> show (length ds))+ -- The structured hole payload (Rzk.Diagnostic.HoleData) exposes the goal and -- local context as separate rendered strings, so consumers (e.g. richer LSP -- hovers) need not parse the prose `message`. The pair-pattern example is@@ -63,8 +101,8 @@ holeDataName hd `shouldBe` Nothing holeDataShape hd `shouldBe` Nothing ("t \8801 s" `isInfixOf` holeDataGoal hd) `shouldBe` True -- t ≡ s- map fst (holeDataCubeVars hd) `shouldContain` ["(t, s)"]- holeDataTopes hd `shouldContain` ["s \8804 t"] -- s ≤ t+ map holeDataEntryName (holeDataCubeVars hd) `shouldContain` ["(t, s)"]+ map holeDataTopeValue (holeDataTopes hd) `shouldContain` ["s \8804 t"] -- s ≤ t Nothing -> expectationFailure "expected a structured hole payload" ds -> expectationFailure ("expected one diagnostic, got " <> show (length ds)) @@ -76,9 +114,113 @@ ("\"hole\":{" `isInfixOf` json) `shouldBe` True ("\"goal\":" `isInfixOf` json) `shouldBe` True ("\"cubeVars\":" `isInfixOf` json) `shouldBe` True- ("\"topes\":" `isInfixOf` json) `shouldBe` True+ ("\"topes\":[\"" `isInfixOf` json) `shouldBe` True -- topes stay strings+ ("\"topeInfo\":[{" `isInfixOf` json) `shouldBe` True+ ("\"tope\":" `isInfixOf` json) `shouldBe` True+ ("\"modality\":" `isInfixOf` json) `shouldBe` True+ ("\"locks\":" `isInfixOf` json) `shouldBe` True+ ("\"accessible\":" `isInfixOf` json) `shouldBe` True -- restored binder names are present in the wire format ("(t, s)" `isInfixOf` json) `shouldBe` True+ ds -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++ describe "diagnoseTypeError modal context" $ do+ it "marks available and unavailable variables in an error context" $ do+ let src = "#lang rzk-1\n\+ \#def bad (A : U) (B :_op U) : U := B\n"+ case diagnose src of+ [d] -> do+ diagnosticMessage d `shouldSatisfy` isInfixOf " A : U"+ diagnosticMessage d `shouldNotSatisfy` isInfixOf "× A : U"+ diagnosticMessage d `shouldSatisfy`+ isInfixOf "× B : U [modality: ᵒᵖ, locks: _id]"+ diagnosticMessage d `shouldSatisfy`+ isInfixOf "variable B is inaccessible in the current modal context"+ diagnosticMessage d `shouldSatisfy`+ isInfixOf "declared modality: ᵒᵖ"+ diagnosticMessage d `shouldSatisfy`+ isInfixOf "current locks: _id"+ ds -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++ it "distinguishes lambda and modal-introduction mismatches" $ do+ let lambdaSrc = "#lang rzk-1\n\+ \#def bad : (A : U) -> A -> A := \\ (A :_op U) a -> a\n"+ introSrc = "#lang rzk-1\n\+ \#def bad (A :_b U) (a :_b A) : _b A := mod _op a\n"+ case (diagnose lambdaSrc, diagnose introSrc) of+ ([lambdaErr], [introErr]) -> do+ diagnosticCode lambdaErr `shouldBe` "TypeErrorModalityMismatch"+ diagnosticMessage lambdaErr `shouldSatisfy`+ isInfixOf "modality mismatch in lambda parameter A"+ diagnosticMessage lambdaErr `shouldSatisfy`+ isInfixOf "expected from function type: _id"+ diagnosticMessage introErr `shouldSatisfy`+ isInfixOf "modality mismatch in modal introduction"+ diagnosticMessage introErr `shouldSatisfy`+ isInfixOf "expected by result type: ♭"+ diagnosticMessage introErr `shouldSatisfy`+ isInfixOf "written after `mod`: ᵒᵖ"+ result -> expectationFailure ("expected one diagnostic for each source, got " <> show result)++ it "reports the value and type for a non-modal let-mod elimination" $ do+ let src = "#lang rzk-1\n\+ \#def bad (A : U) (x : A) : A := let mod _# y := x in y\n"+ case diagnose src of+ [d] -> do+ diagnosticCode d `shouldBe` "TypeErrorNotModal"+ diagnosticMessage d `shouldSatisfy`+ isInfixOf "cannot eliminate a non-modal value with `let mod ♯`"+ diagnosticMessage d `shouldSatisfy` isInfixOf "value: x"+ diagnosticMessage d `shouldSatisfy` isInfixOf "type: A"+ ds -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++ it "reports the term and expected type for modal introduction" $ do+ case diagnose "#lang rzk-1\n#def bad : Unit := mod _op unit\n" of+ [d] -> do+ diagnosticCode d `shouldBe` "TypeErrorNotModal"+ diagnosticMessage d `shouldSatisfy`+ isInfixOf "cannot check modal introduction against a non-modal type"+ diagnosticMessage d `shouldSatisfy` isInfixOf "term: mod ᵒᵖ unit"+ diagnosticMessage d `shouldSatisfy` isInfixOf "expected type: Unit"+ ds -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++ it "reports the expected and actual modalities for let-mod elimination" $ do+ let src = "#lang rzk-1\n\+ \#def bad (A :_op U) (x : _op A) : _op A\n\+ \ := let mod _# a := x in mod _op a\n"+ case diagnose src of+ [d] -> do+ diagnosticCode d `shouldBe` "TypeErrorModalityMismatch"+ diagnosticMessage d `shouldSatisfy`+ isInfixOf "modality mismatch in modal elimination"+ diagnosticMessage d `shouldSatisfy`+ isInfixOf "expected by `let mod`: ♯"+ diagnosticMessage d `shouldSatisfy`+ isInfixOf "value's modality: ᵒᵖ"+ ds -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++ it "reports the operand and its type when a modal type is ill-formed" $ do+ case diagnose "#lang rzk-1\n#def bad : U := _op unit\n" of+ [d] -> do+ diagnosticCode d `shouldBe` "TypeErrorNotTypeInModal"+ diagnosticMessage d `shouldSatisfy` isInfixOf "cannot form modal type ᵒᵖ unit"+ diagnosticMessage d `shouldSatisfy` isInfixOf "has type\n Unit"+ diagnosticMessage d `shouldSatisfy`+ isInfixOf "but its type must be U, CUBE, or TOPE"+ ds -> expectationFailure ("expected one diagnostic, got " <> show (length ds))++ it "uses the structured modality error when unifying function types" $ do+ let src = "#lang rzk-1\n\+ \#postulate f : ((X : U) -> U) -> Unit\n\+ \#postulate g : (X :_op U) -> U\n\+ \#def bad : Unit := f g\n"+ case diagnose src of+ [d] -> do+ diagnosticCode d `shouldBe` "TypeErrorModalityMismatch"+ diagnosticMessage d `shouldSatisfy`+ isInfixOf "cannot unify function types with different parameter modalities"+ diagnosticMessage d `shouldSatisfy` isInfixOf "expected: _id"+ diagnosticMessage d `shouldSatisfy` isInfixOf "actual: ᵒᵖ" ds -> expectationFailure ("expected one diagnostic, got " <> show (length ds)) describe "JSON encoding" $ do
test/Rzk/FoilCoreSpec.hs view
@@ -64,6 +64,7 @@ , varDeclaredAssumptions = [] , varLocation = Nothing , varDataRole = Nothing+ , varSchematicStatus = SchematicUnchecked , varMetaPrefix = 0 } @@ -84,6 +85,9 @@ it_roundTrips "\\ (t, s) -> first (t, s)" "\\ (t, s) → π₁ (t, s)" it_roundTrips "\\ A -> \\ (x : A) -> refl_{x : A}" "\\ A → \\ (x : A) → refl_{ x : A }" it_roundTrips "\\ t -> \\ s -> t === s" "\\ t → \\ s → t ≡ s"+ it_roundTrips "\\ x -> match _b x (c a => a)" "\\ x → match ♭ x (c a ⇒ a)"+ it_roundTrips "\\ x -> match _op x into (\\ _ -> Unit) (c => unit)" "\\ x → match ᵒᵖ x into (\\ x₁ → Unit) (c ⇒ unit)"+ it_roundTrips "\\ x -> match (mod _b x) (c => unit)" "\\ x → match (mod ♭ x) (c ⇒ unit)" describe "α-equivalence ignores binder names" $ do it "\\ x -> x is \\ y -> y" $
test/Rzk/HolesSpec.hs view
@@ -6,7 +6,7 @@ -- between term variables and cube variables). module Rzk.HolesSpec (spec) where -import Data.List (isInfixOf)+import Data.List (isInfixOf, isPrefixOf) import Data.Maybe (fromMaybe) import qualified Data.Text as T import qualified Data.Text.IO as T (readFile)@@ -135,10 +135,43 @@ [h1, h2] -> do show (holeGoal h1) `shouldBe` "A" show (holeGoal h2) `shouldBe` "A"- map show (holeTopes h1) `shouldContain` ["t ≤ s"]- map show (holeTopes h2) `shouldContain` ["s ≤ t"]+ map (show . holeTopeValue) (holeTopes h1) `shouldContain` ["t ≤ s"]+ map (show . holeTopeValue) (holeTopes h2) `shouldContain` ["s ≤ t"] hs -> expectationFailure ("expected exactly two holes, got " <> show (length hs)) + it "records holes in point positions of a recOR guard" $ do+ let src = "#lang rzk-1\n#define square (A : U) (a : A)\n : (2 × 2) → A\n := \\ (t , s) → recOR ( ? ≤ ? ↦ a , ? ↦ a )\n"+ holes = holesOf src+ length (filter ((== "?") . show . holeGoal) holes) `shouldBe` 2+ map (show . holeGoal) holes `shouldContain` ["TOPE"]+ length holes `shouldBe` 3+ let pointLocations =+ [ loc+ | h <- holes+ , show (holeGoal h) == "?"+ , Just loc <- [holeLocation h]+ ]+ case pointLocations of+ [l, r] -> l `shouldNotBe` r+ ls -> expectationFailure ("expected two point-hole locations, got " <> show ls)++ it "does not treat an undefined point name as a hole" $ do+ let src = "#lang rzk-1\n#define bad : TOPE := missing ≤ 0₂\n"+ holesOf src `shouldBe` []+ errTagsOf src `shouldContain` ["TypeErrorUndefined"]++ it "records holes in equality point positions" $ do+ let holes = holesOf "#lang rzk-1\n#define face : TOPE := ? ≡ ?\n"+ map (show . holeGoal) holes `shouldBe` ["?", "?"]++ it "rejects a general cube point on either side of an order tope" $ do+ let invalidRight = "#lang rzk-1\n#define bad (p : 2 × 2) : TOPE := ? ≤ p\n"+ invalidLeft = "#lang rzk-1\n#define bad (p : 2 × 2) : TOPE := p ≤ ?\n"+ length (holesOf invalidRight) `shouldBe` 1+ errTagsOf invalidRight `shouldContain` ["TypeErrorOther"]+ holesOf invalidLeft `shouldBe` []+ errTagsOf invalidLeft `shouldContain` ["TypeErrorOther"]+ -- When the recOR is checked against an /extension type/, each branch hole -- reports the boundary it must meet under its tope (the restriction is -- pushed into the branches), rather than the bare underlying type. So the@@ -151,9 +184,9 @@ ("A [" `isInfixOf` goal1) `shouldBe` True -- a restricted type, not bare A ("↦ f t" `isInfixOf` goal1) `shouldBe` True -- the s ≡ 0₂ face is shown ("↦ a" `isInfixOf` goal1) `shouldBe` True -- the s ≡ 1₂ face is shown- map show (holeTopes h1) `shouldContain` ["s ≤ t"]+ map (show . holeTopeValue) (holeTopes h1) `shouldContain` ["s ≤ t"] show (holeGoal h2) `shouldBe` goal1 -- both branches carry the same boundary- map show (holeTopes h2) `shouldContain` ["t ≤ s"]+ map (show . holeTopeValue) (holeTopes h2) `shouldContain` ["t ≤ s"] hs -> expectationFailure ("expected exactly two holes, got " <> show (length hs)) -- A hole nested inside a larger term (`f ?`) checked against an@@ -249,7 +282,7 @@ let goal = show (holeGoal h) ("t ≡ s" `isInfixOf` goal) `shouldBe` True ('π' `elem` goal) `shouldBe` False- map show (holeTopes h) `shouldContain` ["s ≤ t"]+ map (show . holeTopeValue) (holeTopes h) `shouldContain` ["s ≤ t"] -- the cube variable is shown as the pattern, not a fresh variable names (holeCubeVars h) `shouldBe` ["(t, s)"] hs -> expectationFailure ("expected exactly one hole, got " <> show (length hs))@@ -262,7 +295,7 @@ let goal = show (holeGoal h) ("r ≡ t" `isInfixOf` goal) `shouldBe` True ('π' `elem` goal) `shouldBe` False- map show (holeTopes h) `shouldContain` ["r ≤ s"]+ map (show . holeTopeValue) (holeTopes h) `shouldContain` ["r ≤ s"] names (holeCubeVars h) `shouldBe` ["((t, s), r)"] hs -> expectationFailure ("expected exactly one hole, got " <> show (length hs)) @@ -284,7 +317,7 @@ [h] -> do let goal = show (holeGoal h) ("π₁ p ≡ π₂ p" `isInfixOf` goal) `shouldBe` True- map show (holeTopes h) `shouldContain` ["π₂ p ≤ π₁ p"]+ map (show . holeTopeValue) (holeTopes h) `shouldContain` ["π₂ p ≤ π₁ p"] hs -> expectationFailure ("expected exactly one hole, got " <> show (length hs)) describe "holeCandidates (type-directed elimination candidates)" $ do@@ -496,6 +529,114 @@ <> "#define goal (A : U) (x y : A) (p : x = y) : y = x := ?\n" in flip oneHole (holesWithLemmas [] indSrc) $ \h -> filter (isInfixOf "ind-path") (cands h) `shouldBe` []++ -- Emily Riehl's report on the Yoneda game's square-gives-an-equality level+ -- (2026-09-22): the square lemma was not offered at exactly the holes that+ -- need it. The candidate's type is `comp-is-segal ?A ?is ?x ?y ?z ?f ?g = ?h`+ -- and the goal's two edges are λs whose bodies are applications of the+ -- square, `\ t → α t 0₂`. Matching η-expands the hole to `\ t → ?f t` and+ -- compared the bodies `?f t` and `α t 0₂` spine-wise, so `t` was unified+ -- against `0₂` and failed. A hole-headed application is flexible (filling+ -- the head decides its shape), so it fits any term, as the shaped unifier+ -- already says for a bare mismatch. The rows below are the probe table of+ -- the report: the corners (`α 0₂ 0₂`) are not the obstacle, nor is a λ that+ -- η-reduces to a variable or a constant λ; only a λ whose body is an+ -- application of something other than the bound variable failed.+ describe "holeCandidates against λ arguments into extension types" $ do+ let cands = map show . holeCandidates+ prelude = "#lang rzk-1\n\+ \#def Δ¹ : 2 → TOPE := \\ t → TOP\n\+ \#def Δ² : (2 × 2) → TOPE := \\ (t , s) → s ≤ t\n\+ \#def hom (A : U) (x y : A) : U\n\+ \ := (t : Δ¹) → A [ t ≡ 0₂ ↦ x , t ≡ 1₂ ↦ y ]\n\+ \#def hom2 (A : U) (x y z : A) (f : hom A x y) (g : hom A y z) (h : hom A x z) : U\n\+ \ := ((t , s) : Δ²) → A [ s ≡ 0₂ ↦ f t , t ≡ 1₂ ↦ g s , s ≡ t ↦ h s ]\n\+ \#def is-contr (A : U) : U := Σ (x : A) , (y : A) → x = y\n\+ \#def is-segal (A : U) : U\n\+ \ := (x : A) → (y : A) → (z : A) → (f : hom A x y) → (g : hom A y z)\n\+ \ → is-contr (Σ (h : hom A x z) , (hom2 A x y z f g h))\n\+ \#def comp-is-segal (A : U) (is-segal-A : is-segal A) (x y z : A)\n\+ \ (f : hom A x y) (g : hom A y z) : hom A x z\n\+ \ := first (first (is-segal-A x y z f g))\n\+ \#postulate uniqueness-comp-is-segal (A : U) (is-segal-A : is-segal A) (x y z : A)\n\+ \ (f : hom A x y) (g : hom A y z) (h : hom A x z) (alpha : hom2 A x y z f g h)\n\+ \ : comp-is-segal A is-segal-A x y z f g = h\n"+ -- the lemma's own spine; the idJ spine over it is a separate move+ uniqueness = filter (isPrefixOf "uniqueness-comp-is-segal ") . cands+ offered src = case holesWithLemmas ["uniqueness-comp-is-segal"] (prelude <> src) of+ [h] -> uniqueness h `shouldBe`+ ["uniqueness-comp-is-segal ?A ?is-segal-A ?x ?y ?z ?f ?g ?h ?alpha"]+ hs -> expectationFailure ("expected exactly one hole, got " <> show (length hs))++ it "offers the lemma when corners and edges are variables" $+ offered "#def goal (A : U) (is-segal-A : is-segal A) (x y z : A)\n\+ \ (f : hom A x y) (g : hom A y z) (h : hom A x z)\n\+ \ : comp-is-segal A is-segal-A x y z f g = h := ?\n"++ it "offers the lemma when the corners are applications of a square" $+ offered "#def goal (A : U) (is-segal-A : is-segal A) (α : Δ¹ → Δ¹ → A)\n\+ \ (f : hom A (α 0₂ 0₂) (α 1₂ 0₂)) (g : hom A (α 1₂ 0₂) (α 1₂ 1₂))\n\+ \ (h : hom A (α 0₂ 0₂) (α 1₂ 1₂))\n\+ \ : comp-is-segal A is-segal-A (α 0₂ 0₂) (α 1₂ 0₂) (α 1₂ 1₂) f g = h := ?\n"++ it "offers the lemma when an edge is an η-expansion" $+ offered "#def goal (A : U) (is-segal-A : is-segal A) (f' : Δ¹ → A) (z : A)\n\+ \ (g : hom A (f' 1₂) z) (h : hom A (f' 0₂) z)\n\+ \ : comp-is-segal A is-segal-A (f' 0₂) (f' 1₂) z (\\ t → f' t) g = h := ?\n"++ it "offers the lemma when the edges are constant λs" $+ offered "#def goal (A : U) (is-segal-A : is-segal A) (x : A) (h : hom A x x)\n\+ \ : comp-is-segal A is-segal-A x x x (\\ t → x) (\\ t → x) = h := ?\n"++ -- The reported case: both edges are λs whose bodies apply the square to+ -- the bound variable and a constant, so neither η-reduces.+ it "offers the lemma when the edges are λs applying a square" $+ offered "#def goal (A : U) (is-segal-A : is-segal A) (α : Δ¹ → Δ¹ → A)\n\+ \ (h : hom A (α 0₂ 0₂) (α 1₂ 1₂))\n\+ \ : comp-is-segal A is-segal-A (α 0₂ 0₂) (α 1₂ 0₂) (α 1₂ 1₂)\n\+ \ (\\ t → α t 0₂) (\\ s → α 1₂ s) = h := ?\n"++ -- The same with a λ on the right-hand side (the level's actual goal).+ it "offers the lemma when the right-hand side is a λ too" $+ offered "#def goal (A : U) (is-segal-A : is-segal A) (α : Δ¹ → Δ¹ → A)\n\+ \ : comp-is-segal A is-segal-A (α 0₂ 0₂) (α 1₂ 0₂) (α 1₂ 1₂)\n\+ \ (\\ t → α t 0₂) (\\ s → α 1₂ s) = (\\ t → α t t) := ?\n"++ -- Accepting the move means the inserted term, with every argument a+ -- hole, must still check in lenient mode: the move is useless otherwise.+ it "tolerates the lemma applied to holes at the reported goal" $+ errTagsOf (prelude+ <> "#def goal (A : U) (is-segal-A : is-segal A) (α : Δ¹ → Δ¹ → A)\n\+ \ (h : hom A (α 0₂ 0₂) (α 1₂ 1₂))\n\+ \ : comp-is-segal A is-segal-A (α 0₂ 0₂) (α 1₂ 0₂) (α 1₂ 1₂)\n\+ \ (\\ t → α t 0₂) (\\ s → α 1₂ s) = h\n\+ \ := uniqueness-comp-is-segal A ? ? ? ? ? ? ? ?\n")+ `shouldBe` []++ -- Flexibility is the hole's, not the λ's: a λ body that mismatches+ -- rigidly (no hole at its head) still rejects the candidate.+ it "does not offer a lemma whose λ argument mismatches rigidly" $ do+ let src = "#postulate Q (A : U) (e : Δ¹ → A) : U\n\+ \#postulate B : U\n\+ \#postulate c : Δ¹ → Δ¹ → B\n\+ \#postulate lem : Q B (\\ t → c 0₂ t)\n"+ goalAt e = prelude <> src <> "#def goal : Q B (\\ t → " <> e <> ") := ?\n"+ lemAt f e = case holesWithLemmas ["lem"] (goalAt e) of+ [h] -> f (filter (isPrefixOf "lem") (cands h))+ hs -> expectationFailure ("expected exactly one hole, got " <> show (length hs))+ lemAt (`shouldBe` ["lem"]) "c 0₂ t"+ lemAt (`shouldBe` []) "c t 0₂"+ lemAt (`shouldBe` []) "c t 1₂"++ -- The flexible side may be on either side of the comparison: here the+ -- goal's edge is a variable and the lemma's is the λ.+ it "offers a lemma whose own λ argument meets a variable edge" $ do+ let src = "#postulate Q (A : U) (e : Δ¹ → A) : U\n\+ \#postulate lem (A : U) (α : Δ¹ → Δ¹ → A) : Q A (\\ t → α t 0₂)\n\+ \#def goal (A : U) (e : Δ¹ → A) : Q A e := ?\n"+ case holesWithLemmas ["lem"] (prelude <> src) of+ [h] -> filter (isPrefixOf "lem") (cands h) `shouldBe` ["lem ?A ?α"]+ hs -> expectationFailure ("expected exactly one hole, got " <> show (length hs)) describe "holeCandidates under shadowing" $ do let cands = map show . holeCandidates
+ test/Rzk/RSTTSafeSpec.hs view
@@ -0,0 +1,286 @@+{-# LANGUAGE OverloadedStrings #-}+module Rzk.RSTTSafeSpec (spec) where++import qualified Data.Text as T+import qualified Language.Rzk.Syntax as Syntax+import Rzk.Diagnostic (checkWarningTag, typeErrorTagInScopedContext)+import Rzk.TypeCheck+import Rzk.TypeCheck.MetaPrefix (isMetaType, metaPrefixOf)+import Language.Rzk.Foil.Syntax (typeAscT, universeT)+import Test.Hspec++-- Exercise the public driver used by the CLI and incremental editor clients.+-- The source fixtures cover the individual fragment conditions.+run :: Maybe RSTTSafeMode -> [T.Text] -> ([String], [String], Int)+run override sources =+ let (errors, warnings, holes) = runDetails override sources+ in (errors, map checkWarningTag warnings, holes)++runDetails :: Maybe RSTTSafeMode -> [T.Text] -> ([String], [CheckWarning], Int)+runDetails override sources =+ case traverse Syntax.parseModule sources of+ Left err -> error (T.unpack err)+ Right modules -> case checkedModules (zip (map show [1 :: Int ..]) modules)+ ((allowHoles emptyContext) { ctxRSTTSafeOverride = override, ctxVerbosity = Silent }) of+ Left err -> ([typeErrorTagInScopedContext err], [], 0)+ Right (checked, holes) ->+ ( map typeErrorTagInScopedContext (checkedErrors checked)+ , checkedWarnings checked+ , length holes+ )++nested :: T.Text+nested = "#def nested (A : U) (a : A) : A := (\\ (B : U) (b : B) → b) A a\n"++spec :: Spec+spec = describe "RSTT-safe run policy" $ do+ it "reports exhausted meta-prefix classification in warn and error modes" $ do+ -- A valid type ascription needs a head reduction; force that inspection+ -- to reach the judgement limit without an enormous source fixture.+ let inspect mode = runTypeCheckWith+ (emptyContext { ctxRSTTSafeOverride = Just mode+ , ctxVerbosity = Silent+ , ctxActionStackDepth = maxActionStackDepth })+ (metaPrefixOf (typeAscT universeT universeT))+ (warnResult, (_, warnWarnings)) = inspect RSTTSafeWarn+ (errorResult, (_, errorWarnings)) = inspect RSTTSafeError+ either (const Nothing) Just warnResult `shouldBe` Just 0+ map checkWarningTag warnWarnings `shouldBe` ["RSTTIncompleteWarning"]+ either (Just . typeErrorTagInScopedContext) (const Nothing) errorResult+ `shouldBe` Just "TypeErrorRSTT"+ map checkWarningTag errorWarnings `shouldBe` ["RSTTIncompleteWarning"]++ it "does not classify an inspection failure as an object type" $ do+ let (result, _) = runTypeCheckWith+ (emptyContext { ctxVerbosity = Silent+ , ctxActionStackDepth = maxActionStackDepth })+ (isMetaType (typeAscT universeT universeT))+ either (Just . typeErrorTagInScopedContext) (const Nothing) result+ `shouldBe` Just "TypeErrorOther"++ it "classifies a reducible universe when inspection succeeds" $ do+ let (result, (_, warnings)) = runTypeCheckWith+ (emptyContext { ctxVerbosity = Silent })+ (isMetaType (typeAscT universeT universeT))+ either (const Nothing) Just result `shouldBe` Just True+ map checkWarningTag warnings `shouldBe` []++ it "keeps a CLI error selection despite source attempts to disable checks" $ do+ let (errors, _, _) = run (Just RSTTSafeError)+ ["#lang rzk-1\n#set-option \"rstt-safe\" = \"off\"\n#set-option \"warn-meta-binder\" = \"no\"\n" <> nested]+ errors `shouldBe` ["TypeErrorRSTT"]+ it "keeps a CLI warning selection despite a source error selection" $ do+ let (errors, warnings, _) = run (Just RSTTSafeWarn)+ ["#lang rzk-1\n#set-option \"rstt-safe\" = \"error\"\n" <> nested]+ errors `shouldBe` []+ warnings `shouldBe` ["MetaBinderWarning"]+ it "applies the CLI selection to subsequent modules" $ do+ let (errors, _, _) = run (Just RSTTSafeError)+ ["#lang rzk-1\n#def id (A : U) (a : A) : A := a\n",+ "#lang rzk-1\n#set-option \"rstt-safe\" = \"off\"\n" <> nested]+ errors `shouldBe` ["TypeErrorRSTT"]+ it "keeps restriction checks enabled by the CLI despite source options" $ do+ let source = "#lang rzk-1\n#set-option \"rstt-safe\" = \"off\"\n#set-option \"warn-free-standing-restriction\" = \"no\"\n#postulate restricted (A : U) (a : A) : A [TOP ↦ a]\n"+ (errors, _, _) = run (Just RSTTSafeError) [source]+ (warnErrors, warnings, _) = run (Just RSTTSafeWarn) [source]+ errors `shouldBe` ["TypeErrorRSTT"]+ warnErrors `shouldBe` []+ warnings `shouldBe` ["FreeStandingRestrictionWarning"]+ it "keeps outer-point dependency checks enabled by the CLI" $ do+ let source = "#lang rzk-1\n#set-option \"rstt-safe\" = \"off\"\n#set-option \"warn-shape-dependency\" = \"no\"\n#postulate mixed (A : U) (a : A) (s : 2) (f : (t : 2) → A [t === s ↦ a]) : Unit\n"+ (errors, _, _) = run (Just RSTTSafeError) [source]+ (warnErrors, warnings, _) = run (Just RSTTSafeWarn) [source]+ errors `shouldBe` ["TypeErrorRSTT"]+ warnErrors `shouldBe` []+ warnings `shouldBe` ["RSTTShapeDependencyWarning"]+ it "does not check shape dependencies by default" $ do+ run Nothing+ ["#lang rzk-1\n#postulate mixed (A : U) (a : A) (s : 2) (f : (t : 2) → A [t === s ↦ a]) : Unit\n"]+ `shouldBe` ([], [], 0)+ it "warns about shape dependencies when the standalone option is on" $ do+ run Nothing+ ["#lang rzk-1\n#set-option \"warn-shape-dependency\" = \"yes\"\n#postulate mixed (A : U) (a : A) (s : 2) (f : (t : 2) → A [t === s ↦ a]) : Unit\n"]+ `shouldBe` ([], ["RSTTShapeDependencyWarning"], 0)+ it "restores the standalone shape-dependency default on unset" $ do+ run Nothing+ ["#lang rzk-1\n#set-option \"warn-shape-dependency\" = \"yes\"\n#unset-option \"warn-shape-dependency\"\n#postulate mixed (A : U) (a : A) (s : 2) (f : (t : 2) → A [t === s ↦ a]) : Unit\n"]+ `shouldBe` ([], [], 0)+ it "restores an explicit shape-dependency opt-out after safe mode" $ do+ run Nothing+ ["#lang rzk-1\n#set-option \"warn-shape-dependency\" = \"no\"\n#set-option \"rstt-safe\" = \"error\"\n#set-option \"rstt-safe\" = \"off\"\n#postulate mixed (A : U) (a : A) (s : 2) (f : (t : 2) → A [t === s ↦ a]) : Unit\n"]+ `shouldBe` ([], [], 0)+ it "keeps shape-dependency checks enabled by source safe mode" $ do+ let (errors, _, _) = run Nothing+ ["#lang rzk-1\n#set-option \"rstt-safe\" = \"error\"\n#set-option \"warn-shape-dependency\" = \"no\"\n#postulate mixed (A : U) (a : A) (s : 2) (f : (t : 2) → A [t === s ↦ a]) : Unit\n"]+ errors `shouldBe` ["TypeErrorRSTT"]+ it "keeps restriction checks enabled by source safe mode" $ do+ let (errors, _, _) = run Nothing+ ["#lang rzk-1\n#set-option \"rstt-safe\" = \"error\"\n#set-option \"warn-free-standing-restriction\" = \"no\"\n#postulate restricted (A : U) (a : A) : A [TOP ↦ a]\n"]+ errors `shouldBe` ["TypeErrorRSTT"]+ it "restores standalone restriction settings when safe mode is turned off" $ do+ run Nothing+ ["#lang rzk-1\n#set-option \"warn-free-standing-restriction\" = \"no\"\n#set-option \"rstt-safe\" = \"warn\"\n#set-option \"rstt-safe\" = \"off\"\n#postulate restricted (A : U) (a : A) : A [TOP ↦ a]\n"]+ `shouldBe` ([], [], 0)+ it "resets the standalone binder default even while safe mode is active" $ do+ run Nothing+ ["#lang rzk-1\n#set-option \"warn-meta-binder\" = \"yes\"\n#unset-option \"warn-meta-binder\"\n#set-option \"rstt-safe\" = \"off\"\n" <> nested]+ `shouldBe` ([], [], 0)+ it "rejects a hole even when the API allows unfinished terms" $ do+ let (errors, warnings, count) = run (Just RSTTSafeError)+ ["#lang rzk-1\n#def unfinished : Unit := ?\n"]+ errors `shouldBe` ["TypeErrorRSTT"]+ warnings `shouldBe` ["RSTTHoleWarning"]+ count `shouldBe` 1+ it "reports unfinished obligations without failing in warning mode" $ do+ run (Just RSTTSafeWarn) ["#lang rzk-1\n#def unfinished : Unit := ?\n"]+ `shouldBe` ([], ["RSTTHoleWarning"], 1)++ it "rejects outer-point capture introduced by an instantiated type family" $ do+ let source = T.unlines+ [ "#lang rzk-1"+ , "#def extension (φ : 2 → TOPE) (A : U) (a : A) : U :="+ , " (t : 2) → A [φ t ↦ a]"+ , "#def at-point (A : U) (a : A) (s : 2)"+ , " (f : extension (\\ t → t === s) A a) : A := f s"+ ]+ (errors, warnings, _) = run (Just RSTTSafeError) [source]+ errors `shouldBe` ["TypeErrorRSTT"]+ warnings `shouldBe` ["RSTTShapeDependencyWarning"]++ it "exposes shapes behind lets and both projections" $ do+ let shape = "(t : 2) → A [φ t ↦ a]"+ bodies =+ [ "let X : U := " <> shape <> " in X"+ , "first ((" <> shape <> "), unit)"+ , "second (unit, (" <> shape <> "))"+ ]+ mapM_ (\body -> do+ let source = T.unlines+ [ "#lang rzk-1"+ , "#def extension (φ : 2 → TOPE) (A : U) (a : A) : U := " <> body+ , "#postulate bad (A : U) (a : A) (s : 2)"+ , " (f : extension (\\ t → t === s) A a) : Unit"+ ]+ (errors, warnings, _) = run (Just RSTTSafeError) [source]+ errors `shouldBe` ["TypeErrorRSTT"]+ warnings `shouldBe` ["RSTTShapeDependencyWarning"]) bodies++ it "checks argument domains created by earlier schematic arguments" $ do+ let source = T.unlines+ [ "#lang rzk-1"+ , "#postulate schema (φ : 2 → TOPE) (A : U) (a : A)"+ , " (f : (t : 2) → A [φ t ↦ a]) : Unit"+ , "#def bad (A : U) (a : A) (s : 2) : Unit :="+ , " schema (\\ t → t === s) A a (\\ t → a)"+ ]+ (errors, warnings, _) = run (Just RSTTSafeError) [source]+ errors `shouldBe` ["TypeErrorRSTT"]+ warnings `shouldBe` ["RSTTShapeDependencyWarning"]++ it "allows independent shapes after unfolding and beta reduction" $ do+ run (Just RSTTSafeError) [T.unlines+ [ "#lang rzk-1"+ , "#def extension (φ : 2 → TOPE) (A : U) (a : A) : U :="+ , " (t : 2) → A [φ t ↦ a]"+ , "#def at-point (A : U) (a : A) (s : 2)"+ , " (f : extension (\\ t → t === 0_2) A a) : A := f s"+ ]] `shouldBe` ([], [], 0)++ it "finds contextual domains after instantiation, let reduction and projection" $ do+ let source = T.unlines+ [ "#lang rzk-1"+ , "#def shape (φ : 2 → TOPE) (A : U) : U := (t : 2 | φ t) → A"+ , "#postulate bad (A : U) (s : 2)"+ , " (f : first ((let X := shape (\\ t → t <= s) A in X), unit)) : Unit"+ ]+ (errors, warnings, _) = run (Just RSTTSafeWarn) [source]+ errors `shouldBe` []+ warnings `shouldSatisfy` elem "RSTTShapeDependencyWarning"++ it "preserves dependencies even when a guard simplifies to top" $ do+ let source = T.unlines+ [ "#lang rzk-1"+ , "#def extension (φ : 2 → TOPE) (A : U) (a : A) : U :="+ , " (t : 2) → A [φ t ↦ a]"+ , "#postulate bad (A : U) (a : A) (s : 2)"+ , " (f : extension (\\ t → s === s) A a) : Unit"+ ]+ (errors, warnings, _) = run (Just RSTTSafeError) [source]+ errors `shouldBe` ["TypeErrorRSTT"]+ warnings `shouldBe` ["RSTTShapeDependencyWarning"]++ it "preserves concluded tails after unfolding" $ do+ let source = T.unlines+ [ "#lang rzk-1"+ , "#set-option \"rstt-safe\" = \"off\""+ , "#def restricted (A : U) (a : A) : U := A [TOP ↦ a]"+ , "#set-option \"rstt-safe\" = \"error\""+ , "#def good (A : U) (a : A) : restricted A a := a"+ ]+ run Nothing [source] `shouldBe` ([], [], 0)++ it "reports an incomplete audit instead of silently accepting a reduction limit" $ do+ let source = T.unlines $ ["#lang rzk-1", "#def T0 : U := Unit"] <>+ [ "#def T" <> T.pack (show i) <> " : U := T" <> T.pack (show (i - 1))+ | i <- [1 .. 260 :: Int] ]+ (errors, warnings, _) = run (Just RSTTSafeWarn) [source]+ (strictErrors, _, _) = run (Just RSTTSafeError) [source]+ errors `shouldBe` []+ warnings `shouldSatisfy` elem "RSTTIncompleteWarning"+ strictErrors `shouldSatisfy` elem "TypeErrorRSTT"++ it "audits computed argument types in standalone commands" $ do+ let declarations = T.unlines+ [ "#lang rzk-1"+ , "#postulate schema (φ : 2 → TOPE) (A : U) (a : A)"+ , " (f : (t : 2) → A [φ t ↦ a]) : Unit"+ ]+ application = "(\\ (s : 2) → schema (\\ t → t === s) Unit unit (\\ t → unit))"+ mapM_ (\command -> do+ let (errors, warnings, _) = run (Just RSTTSafeError) [declarations <> command]+ errors `shouldBe` ["TypeErrorRSTT"]+ warnings `shouldBe` ["RSTTShapeDependencyWarning"])+ [ "#check " <> application <> " : 2 → Unit"+ , "#compute " <> application+ , "#compute-nf " <> application+ ]++ it "locates unsupported syntax below binders before it can reduce away" $ do+ let source = "#lang rzk-1\n#def discard (i : 2) : Unit :=\n (\\ (j : 2) → unit) (sup i 1_2)\n"+ (errors, warnings, _) = runDetails (Just RSTTSafeWarn) [source]+ errors `shouldBe` []+ map checkWarningTag warnings `shouldBe` ["RSTTSyntaxWarning"]+ map warningLocation warnings `shouldBe`+ [Just (LocationInfo (Just "1") (Just 3) (Just 23))]+ it "checks standalone commands as well as declarations" $ do+ let (errors, warnings, _) = run (Just RSTTSafeError)+ ["#lang rzk-1\n#check (\\ (j : 2) → unit) (sup 0_2 1_2) : Unit\n"]+ errors `shouldBe` ["TypeErrorRSTT"]+ warnings `shouldBe` ["RSTTSyntaxWarning"]+ it "locates modal syntax inside an otherwise allowed term" $ do+ let (errors, warnings, _) = runDetails (Just RSTTSafeWarn)+ ["#lang rzk-1\n#def modal : U :=\n (_# Unit)\n"]+ errors `shouldBe` []+ map checkWarningTag warnings `shouldBe` ["RSTTModalWarning"]+ map warningLocation warnings `shouldBe`+ [Just (LocationInfo (Just "1") (Just 3) (Just 4))]+ it "locates match before elaboration turns it into an eliminator" $ do+ let (errors, warnings, _) = runDetails (Just RSTTSafeWarn)+ ["#lang rzk-1\n#data bool := false | true\n#def choose (b : bool) : bool :=\n match b (false ⇒ true | true ⇒ false)\n"]+ errors `shouldBe` []+ map checkWarningTag warnings `shouldBe`+ ["RSTTInductiveWarning", "RSTTInductiveWarning"]+ map warningLocation warnings `shouldBe`+ [ Just (LocationInfo (Just "1") (Just 2) (Just 1))+ , Just (LocationInfo (Just "1") (Just 4) (Just 3)) ]+ it "still rejects direct constructor uses when safe mode is re-enabled" $ do+ let (errors, warnings, _) = runDetails Nothing+ ["#lang rzk-1\n#set-option \"rstt-safe\" = \"off\"\n#data bool := false | true\n#set-option \"rstt-safe\" = \"warn\"\n#def yes : bool := true\n"]+ errors `shouldBe` []+ map checkWarningTag warnings `shouldBe` ["RSTTInductiveWarning"]+ map warningLocation warnings `shouldBe`+ [Just (LocationInfo (Just "1") (Just 5) (Just 20))]+ it "allows local binders that shadow constructor names" $ do+ run Nothing+ ["#lang rzk-1\n#set-option \"rstt-safe\" = \"off\"\n#data bool := false | true\n#set-option \"rstt-safe\" = \"warn\"\n#def shadow (false : Unit) : Unit := false\n"]+ `shouldBe` ([], [], 0)
test/Rzk/RefIndexSpec.hs view
@@ -146,6 +146,21 @@ it "does not occlude the type name with the derived entries" $ -- hovering the declaration's own `bool` must hit `bool`, not ind-bool RI.bindingName (bindingAt riData "data.rzk" (1, 6)) `shouldBe` "bool"++ describe "modal match" $ do+ let matchSrc = T.unlines+ [ "#lang rzk-1" -- 0+ , "#data D := c (a : Unit)" -- 1+ , "#define f (x : D) (m : D -> U) : U" -- 2+ , " := match _b x into m (c a => a)" -- 3+ ]+ riMatch = indexOf [("match.rzk", matchSrc)]++ it "indexes the scrutinee, motive, constructor, and branch binder" $ do+ defPos (bindingAt riMatch "match.rzk" (3, 14)) `shouldBe` ("match.rzk", 2, 11)+ defPos (bindingAt riMatch "match.rzk" (3, 21)) `shouldBe` ("match.rzk", 2, 19)+ defPos (bindingAt riMatch "match.rzk" (3, 24)) `shouldBe` ("match.rzk", 1, 11)+ defPos (bindingAt riMatch "match.rzk" (3, 31)) `shouldBe` ("match.rzk", 3, 26) #else spec :: Spec spec = describe "reference index" (pure ())
+ test/Rzk/SchematicSpec.hs view
@@ -0,0 +1,233 @@+{-# LANGUAGE OverloadedStrings #-}+module Rzk.SchematicSpec (spec) where++import qualified Data.Text as T+import qualified Language.Rzk.Syntax as Syntax+import Rzk.Diagnostic (checkWarningTag, typeErrorTagInScopedContext)+import Rzk.TypeCheck+import Test.Hspec++check :: Maybe RSTTSafeMode -> [T.Text] -> ([String], [String])+check mode sources = case traverse Syntax.parseModule sources of+ Left err -> error (T.unpack err)+ Right modules -> case checkedModules (zip (map show [1 :: Int ..]) modules)+ (emptyContext { ctxRSTTSafeOverride = mode, ctxVerbosity = Silent }) of+ Left err -> ([typeErrorTagInScopedContext err], [])+ Right (checked, _) ->+ (map typeErrorTagInScopedContext (checkedErrors checked),+ map checkWarningTag (checkedWarnings checked))++source :: [T.Text] -> T.Text+source declarations = T.unlines ("#lang rzk-1" : declarations)++identity :: T.Text+identity = "#def id (A : U) (a : A) : A := a"++accepts :: [T.Text] -> Expectation+accepts ds = check (Just RSTTSafeError) [source ds] `shouldBe` ([], [])++rejects :: [T.Text] -> Expectation+rejects ds = do+ let (errors, warnings) = check (Just RSTTSafeError) [source ds]+ errors `shouldBe` ["TypeErrorRSTT"]+ warnings `shouldSatisfy` elem "RSTTSchematicWarning"++spec :: Spec+spec = describe "Schematic declarations" $ do+ it "accepts ordinary type and family arguments" $ accepts+ [ identity+ , "#def apply (A : U) (B : A → U) (f : (a : A) → B a) (a : A) : B a := f a"+ , "#def good : Unit := apply Unit (\\ x → Unit) (\\ x → id Unit x) unit"+ ]++ it "keeps schematic statements distinct from proofs" $ accepts+ [ "#def Bottom : U := (A : U) → A"+ , "#postulate trusted : Bottom"+ ]++ it "accepts schematic rule aliases and their instances" $ accepts+ [ "#def Rule : U := (A : U) → A → A"+ , "#def apply-rule (rule : Rule) (A : U) (a : A) : A := rule A a"+ , "#def good : Unit := apply-rule (\\ A a → a) Unit unit"+ ]++ it "checks every universe instantiation before beta reduction" $+ rejects [identity, "#def bad : U := id U Unit"]++ it "leaves CUBE and TOPE type arguments to the layer discipline" $+ mapM_ (\(arg, value) ->+ fst (check (Just RSTTSafeError)+ [source [identity, "#def bad : " <> arg <> " := id " <> arg <> " " <> value]])+ `shouldBe` ["TypeErrorOther"])+ [("CUBE", "2"), ("TOPE", "TOP")]++ it "rejects families and rules passed as ordinary types" $+ mapM_ (\(ty, value) -> rejects [identity, "#def bad : " <> ty <> " := id (" <> ty <> ") (" <> value <> ")"])+ [("U → U", "\\ x → x"), ("(A : U) → A → A", "\\ A a → a")]++ it "rejects the predicate-of-predicates step of Hurkens" $ rejects+ [ "#def P (A : U) : U := A → U"+ , "#def bad (X : U) : U := P (P X)"+ ]++ it "checks family arguments pointwise" $ rejects+ [ "#def receive (F : Unit → U) : U := F unit"+ , "#def bad : U := receive (\\ x → U)"+ ]++ it "checks higher-order family arguments pointwise" $ rejects+ [ "#def receive (F : U → U) : U := F Unit"+ , "#def bad : U := receive (\\ A → U)"+ ]++ it "allows higher-order meta functions with object-valued instances" $ accepts+ [ "#def receive (F : U → U) : U := F Unit"+ , "#def good : U := receive (\\ A → A → A)"+ ]++ it "allows meta computations through pairs" $ accepts+ [ "#def T : U := first (Unit, unit)"+ , "#def good : T := unit"+ ]++ it "rejects a product containing schematic data as an object type" $ rejects+ [ identity+ , "#def bad : Σ (A : U), A := id (Σ (A : U), A) (Unit, unit)"+ ]++ it "rejects object equality between types" $ rejects+ [ "#postulate bad : Unit =_{U} Unit" ]++ it "rejects equality elimination into the universe" $ rejects+ [ "#def bad : U := idJ (Unit, unit, (\\ _ _ → U), Unit, unit, refl)" ]++ it "rechecks used dependencies introduced with safe mode off" $ do+ let ds = [ "#set-option \"rstt-safe\" = \"off\"", identity+ , "#def bad : U := id U Unit"+ , "#set-option \"rstt-safe\" = \"error\""+ , "#def use : U := bad" ]+ (errors, warnings) = check Nothing [source ds]+ errors `shouldBe` ["TypeErrorRSTT"]+ warnings `shouldSatisfy` elem "RSTTSchematicWarning"++ it "does not recheck unused dependencies" $+ check Nothing [source+ [ "#set-option \"rstt-safe\" = \"off\"", identity+ , "#def bad : U := id U Unit"+ , "#set-option \"rstt-safe\" = \"error\""+ , "#def good : Unit := unit" ]] `shouldBe` ([], [])++ it "keeps the additional check off in ordinary mode" $+ check (Just RSTTSafeOff) [source [identity, "#def bad : U := id U Unit"]]+ `shouldBe` ([], [])++ it "reports kind confusion in warning mode" $+ check (Just RSTTSafeWarn) [source [identity, "#def bad : U := id U Unit"]]+ `shouldBe` ([], ["RSTTSchematicWarning"])++ it "checks standalone commands" $+ mapM_ (\command -> rejects [identity, command])+ ["#check id U Unit : U", "#compute id U Unit", "#compute-nf id U Unit"]++ it "preserves valid section abstraction and checks later instances" $ do+ let section = ["#section S", "#assume A : U", "#def local-id (a : A) : A := a", "#end S"]+ accepts (section <> ["#def good : Unit := local-id Unit unit"])+ rejects (section <> ["#def bad : U := local-id U Unit"])++ it "reconstructs applications after section parameters become explicit" $ accepts+ [ "#def product (X Y : U) : U := Σ (x : X), Y"+ , "#section S", "#assume A B : U"+ , "#def F (f : A → B) : U := A"+ , "#def G (f : A → B) : U := product (F f) (F f)"+ , "#end S"+ , "#postulate test (A B : U) (f : A → B) : G A B f"+ ]++ it "rejects a universe hidden in a neutral case split" $ rejects+ [ "#def mixed (i : 2 | i === 0_2 ∨ i === 1_2) : U :="+ , " recOR (i === 0_2 ↦ Unit, i === 1_2 ↦ U)"+ , "#postulate receive (A : U) : Unit"+ , "#def bad (i : 2 | i === 0_2 ∨ i === 1_2) : Unit := receive (mixed i)"+ ]++ it "accepts object types selected by a neutral case split" $ accepts+ [ "#def mixed (i : 2 | i === 0_2 ∨ i === 1_2) : U :="+ , " recOR (i === 0_2 ↦ Unit, i === 1_2 ↦ Unit → Unit)"+ , "#postulate receive (A : U) : Unit"+ , "#def good (i : 2 | i === 0_2 ∨ i === 1_2) : Unit := receive (mixed i)"+ ]++ it "accepts ex falso under an empty shape without following its cyclic annotation" $ accepts+ [ "#def empty-shape (A : U) (t : 2 | BOT) : A := recBOT" ]++ it "checks erased type arguments in declaration signatures" $ rejects+ [ identity, "#postulate bad : id U Unit" ]++ it "checks the kinds of boundary values on a universe" $ do+ rejects ["#def bad : U [TOP ↦ U] := U"]+ accepts ["#def good : U [TOP ↦ Unit] := Unit"]++ it "checks actual type arguments after reusing an object family" $ do+ let ds =+ [ identity+ , "#def Family (A : U) : U := A → A"+ , "#def good : Family Unit := id (Family Unit) (\\ x → x)"+ ]+ accepts ds+ rejects (ds <> ["#def bad : Family U := id (Family U) (\\ x → x)"])++ it "checks actual family arguments after reusing an object family" $ do+ let ds =+ [ identity+ , "#def at (F : Unit → U) : U := F unit"+ , "#def good : at (\\ _ → Unit) := id (at (\\ _ → Unit)) unit"+ ]+ accepts ds+ rejects (ds <> ["#def bad : at (\\ _ → U) := id (at (\\ _ → U)) Unit"])++ it "does not generalise an object instance of a mixed-kind family" $ do+ let ds =+ [ "#def mixed (i : 2 | i === 0_2 ∨ i === 1_2) : U :="+ , " recOR (i === 0_2 ↦ Unit, i === 1_2 ↦ U)"+ , "#postulate receive (A : U) : Unit"+ , "#def good : Unit := receive (mixed 0_2)"+ ]+ accepts ds+ rejects (ds <> ["#def bad : Unit := receive (mixed 1_2)"])++ it "preserves family checks when section telescopes change" $ do+ let ds =+ [ identity, "#section S", "#assume A : U", "#assume a : A"+ , "#def Family : U := A"+ , "#def first-use uses (A) : Family := id Family a"+ , "#end S"+ , "#def good : Family Unit := id (Family Unit) unit"+ ]+ accepts ds+ rejects (ds <> ["#def bad : Family U := id (Family U) Unit"])++ it "checks dependencies in arguments erased by reduction" $ do+ let ds =+ [ "#set-option \"rstt-safe\" = \"off\"", identity+ , "#def bad : Unit := id (U → Unit) (\\ _ → unit) Unit"+ , "#set-option \"rstt-safe\" = \"error\""+ , "#def discard (x : Unit) : Unit := unit"+ , "#def use : Unit := discard bad"+ ]+ (errors, warnings) = check Nothing [source ds]+ errors `shouldBe` ["TypeErrorRSTT"]+ warnings `shouldSatisfy` elem "RSTTSchematicWarning"++ it "does not cache a family classification justified by a caller's tope" $ do+ let ds =+ [ "#def mixed (i : 2 | i === 0_2 ∨ i === 1_2) : U :="+ , " recOR (i === 0_2 ↦ Unit, i === 1_2 ↦ U)"+ , "#postulate receive (A : U) : Unit"+ , "#def good (i : 2 | i === 0_2 ∨ i === 1_2) : Unit :="+ , " receive (recOR (i === 0_2 ↦ mixed i, i === 1_2 ↦ Unit))"+ ]+ accepts ds+ rejects (ds <>+ [ "#def bad (i : 2 | i === 0_2 ∨ i === 1_2) : Unit :="+ , " receive (recOR (i === 0_2 ↦ Unit, i === 1_2 ↦ mixed i))"+ ])
test/Rzk/SemanticTokensSpec.hs view
@@ -180,6 +180,13 @@ tokenizeSyntaxSymbols "#lang rzk-1\n#define broken (x : A) := ?\n" `shouldSatisfy` any ((== SemanticTokenTypes_Regexp) . _tokenType) + it "marks a modal match modality as a decorator" $ do+ let mtoks = tokensOf $ T.unlines+ [ "#lang rzk-1"+ , "#define f (x : D) : D := match _b x (c a => a)"+ ]+ tokenAt mtoks (1, 31) `shouldBe` Just SemanticTokenTypes_Decorator+ describe "formatSignature" $ do let fmt name src = case parseTerm (T.pack src) of Left err -> error ("parse error: " <> T.unpack err)
test/typecheck/cases/happy-data-bool.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- The simplest inductive type: booleans, with computation through the -- generated eliminators. #data bool := false | true
test/typecheck/cases/happy-data-circle.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- The circle: one point constructor and one path constructor. The path -- methods refer to the point methods, so the generated eliminator types -- bind their methods by name (m-base, m-loop); transport is spelled
test/typecheck/cases/happy-data-coprod.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- A parameterised inductive type, with an explicit return type on one -- constructor (it must be the declared type applied to the parameters). #data coprod
test/typecheck/cases/happy-data-eliminator-reascription.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- An "eliminate with" re-ascription clause stores the user's spelling of a -- generated eliminator's type, after checking that it is definitionally -- equal to the canonical one (with the type former and constructors in
test/typecheck/cases/happy-data-empty.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- The empty family: no := at all, and the eliminator is ex falso. #data empty
test/typecheck/cases/happy-data-eta-short.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- A definition whose value is an under-applied eliminator (no binder): -- the ι-rule must fire through the neutral-application head. #data bool := false | true
test/typecheck/cases/happy-data-hit-reascription.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- The re-ascription clauses give the generated eliminators and -- computation rules readable spellings through a library transport/ap/apd -- (each definable from idJ before any declaration).
test/typecheck/cases/happy-data-hottbook-nat.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- HoTT book §2.13 (natural numbers), drafted against #data stage 2. #data empty
test/typecheck/cases/happy-data-indices-edge.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data nat := zero | suc (n : nat) -- two indices, a constructor pinning them equal
test/typecheck/cases/happy-data-interval-funext.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- Function extensionality is provable from the interval higher inductive -- type, following Lemma 6.3.2 of the HoTT book: a pointwise identification -- α makes a map A → interval → B whose two ends are f and g, and ap of its
test/typecheck/cases/happy-data-large-warning.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- A constructor field storing a universe makes the type large: under -- type-in-type this is a paradox amplifier, so the declaration is accepted -- with a warning (and will be rejected under safe mode).
test/typecheck/cases/happy-data-list.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data nat := zero | suc (n : nat) #data list
+ test/typecheck/cases/happy-data-modal-kind-param.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - data-modal-kind-parameter
+ test/typecheck/cases/happy-data-modal-kind-param.rzk view
@@ -0,0 +1,29 @@+#lang rzk-1++-- The modal kinds are #data parameters, as they are #define parameters.+-- Parameters are uniform, so the eliminators only abstract over them.+#data P-op (psi : _op TOPE) (A : U) := c-op (a : A)+#data P-op-family (psi : 2 -> _op TOPE) := c-op-family+#data P-flat-cube (I : _b CUBE) := c-flat-cube+#data P-flat (psi : _b TOPE) := c-flat+#data P-sharp-family (psi : _# (2 -> TOPE)) := c-sharp-family++#define iota-rec-P-op+ ( psi : _op TOPE) (A : U) (C : U) (f : A -> C) (a : A)+ : rec-P-op psi A C f (c-op psi A a) = f a+ := refl++#define iota-ind-P-op+ ( psi : _op TOPE) (A : U) (C : P-op psi A -> U)+ ( f : (a : A) -> C (c-op psi A a)) (a : A)+ : ind-P-op psi A C f (c-op psi A a) = f a+ := refl++#define inst-P-op (A : U) (a : A) : P-op (mod _op TOP) A := c-op (mod _op TOP) A a++#define inst-P-flat-cube : P-flat-cube (mod _b 2) := c-flat-cube (mod _b 2)++-- A shape field whose tope comes from a modal-tope parameter.+#data R (psi : _op TOPE) := pt (t : 2 | uninv_op psi)++#define pt-top (t : 2) : R (mod _op TOP) := pt (mod _op TOP) t
+ test/typecheck/cases/happy-data-modal-shape-field.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - data-shape-fields-modal-shape-field
+ test/typecheck/cases/happy-data-modal-shape-field.rzk view
@@ -0,0 +1,33 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"++-- A modal shape field: an ordinary shape point sitting under a lock. The+-- eliminator binds it with the field's modality, so the lock discipline of+-- the modal layer applies inside a branch exactly as it does for a modal+-- Π-binder. No crisp induction is involved here; that is the separate+-- principle of eliminating a crisp x :_b D by cases (ind-b-D, match _b).+#data FlatArr := fa (t :_b 2 | ⊤)++#define f0 : FlatArr := fa 0_2++#define fam (A :_b (t : 2) -> U) (x : FlatArr) : U+ := match x (fa t ⇒ A t)++-- Strict β through the lock: the match computes on a syntactic point.+#define beta (A :_b (t : 2) -> U) (s :_b 2) : fam A (fa s) = A s+ := refl++-- The other two spellings of a modal shape field agree with the inline one:+-- a bare modal cube and a named modal shape are decided by the elaborated+-- domain, not the surface form.+#define Delta1 : 2 -> TOPE := \ t -> ⊤++#data FlatCube := fc (t :_b 2)+#data FlatByName := fn (t :_b Delta1)++#define fc0 : FlatCube := fc 0_2+#define fam-fc (A :_b (t : 2) -> U) (x : FlatCube) : U := match x (fc t ⇒ A t)+#define beta-fc (A :_b (t : 2) -> U) (s :_b 2) : fam-fc A (fc s) = A s := refl+#define fam-fn (A :_b (t : 2) -> U) (x : FlatByName) : U := match x (fn t ⇒ A t)
test/typecheck/cases/happy-data-nat.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data nat := zero | suc (n : nat) #check ind-nat
+ test/typecheck/cases/happy-data-path-shape-field.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - data-shape-fields-path-constructor-shape-field
+ test/typecheck/cases/happy-data-path-shape-field.rzk view
@@ -0,0 +1,33 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"++-- A path constructor may take a cube or shape field: a Φ-indexed family of+-- *undirected* cells, i.e. identity paths. This cannot express a directed+-- cell: the return type of a path constructor is an identity type, not a+-- hom, and there is no syntax for face equations, so the directed-cell+-- boundary holds. Deliberately kept and pinned here; the metatheoretic+-- status is by analogy with an ordinary field of the realisation type+-- (merid over ⌈Φ⌉), not by a written rule.++#data Loops := base | turn (t : 2 | ⊤) : base =_{Loops} base++#define rec-Loops-type+ : (C : U) -> (m : C) -> ((t : 2 | ⊤) -> m =_{C} m) -> Loops -> C+ := rec-Loops++-- Endpoints may mention the variable a shape field of the same declaration+-- binds: the undirected cone over the realisation.+#data Cone := apex | pt (t : 2 | ⊤) | edge (t : 2 | ⊤) : pt t =_{Cone} apex++#define rec-Cone-type+ : (C : U) -> (m-apex : C) -> (m-pt : (t : 2 | ⊤) -> C)+ -> ((t : 2 | ⊤) -> m-pt t =_{C} m-apex) -> Cone -> C+ := rec-Cone++-- The point methods still compute strictly on a syntactic point.+#define collapse : Cone -> Unit+ := rec-Cone Unit unit (\ _ -> unit) (\ _ -> refl)++#define collapse-pt : collapse (pt 0_2) = unit := refl
test/typecheck/cases/happy-data-prop-trunc.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- The propositional truncation: the path constructor's endpoints are its -- own recursive fields, so their images in the method types are the -- induction hypotheses.
test/typecheck/cases/happy-data-pushout.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- The pushout: the path constructor's endpoints apply point constructors -- to datatype-free terms (f c and g c), which the endpoint images leave -- untouched.
test/typecheck/cases/happy-data-rec-section.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data nat := zero | suc (n : nat) #section counted
test/typecheck/cases/happy-data-section.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- A #data inside a #section closes over the used assumptions uniformly: -- the type former, the constructors, and the eliminators all gain the -- section parameter, and the ι-rule keeps computing afterwards.
+ test/typecheck/cases/happy-data-shape-realisation.expect.yaml view
@@ -0,0 +1,1 @@+status: ok
+ test/typecheck/cases/happy-data-shape-realisation.rzk view
@@ -0,0 +1,69 @@+#lang rzk-1++-- A constructor may take a shape point. The declared type is then the shape+-- realisation of that shape, and the generated recursor is the+-- representability rule: mapping out of it is giving an extension-type+-- section. See Kudasov 2021, "Booleans, coproducts and shape types in type+-- theory for synthetic ∞-categories", §4 "Shapes as types":+-- https://fizruk.github.io/files/%5Bnotes%5D%20N.Kudasov.%20Booleans%2C%20coproducts%20and%20shape%20types%20in%20type%20theory%20for%20synthetic%20%E2%88%9E-categories.pdf++-- The general realisation ⌈Φ⌉, generic in the cube and in the tope. A shape+-- is a predicate on a cube, so it is a parameter of type `I → TOPE`, exactly+-- as `Δ¹` and `Λ²₁` are written.+#data Shape (I : CUBE) (phi : I -> TOPE) := point (t : phi)++#define rec-Shape-type+ : (I : CUBE) -> (phi : I -> TOPE) -> (C : U)+ -> ((t : I | phi t) -> C) -> Shape I phi -> C+ := rec-Shape++#define ind-Shape-type+ : (I : CUBE) -> (phi : I -> TOPE) -> (C : Shape I phi -> U)+ -> ((t : I | phi t) -> C (point I phi t)) -> (x : Shape I phi) -> C x+ := ind-Shape++#define rec-op-Shape-type+ (I :_op CUBE)+ (phi :_op I -> TOPE)+ (x :_op Shape I phi)+ : Unit+ := rec-op-Shape I phi Unit (\ _ -> unit) x++#define match-op-Shape+ (I :_op CUBE)+ (phi :_op I -> TOPE)+ (x :_op Shape I phi)+ : Unit+ := match _op x into (\ (_ :_op Shape I phi) -> Unit)+ (point _ => unit)++-- Strict computation on a syntactic point: rec(Point p) ≡ a[p/t].+#define shape-beta+ ( I : CUBE) (phi : I -> TOPE)+ ( C : U)+ ( m : (t : I | phi t) -> C)+ ( p : I | phi p)+ : rec-Shape I phi C m (point I phi p) = m p+ := refl++-- Instances: the walking arrow and the (2,1)-horn.+#define Delta1 : 2 -> TOPE := \ t -> ⊤+#define Lambda21 : (2 * 2) -> TOPE := \ (t, s) -> (s === 0_2) \/ (t === 1_2)++#define arr : U := Shape 2 Delta1+#define horn : U := Shape (2 * 2) Lambda21++#define arr-0 : arr := point 2 Delta1 0_2++-- The three spellings of a shape field agree. The first two were already+-- accepted; the inline one is what this change adds.+#data ByCube := byCube (t : 2)+#data ByName := byName (t : Delta1)+#data Inline := inline (t : 2 | ⊤)++#define rec-ByCube-type : (C : U) -> ((t : 2 | ⊤) -> C) -> ByCube -> C+ := rec-ByCube+#define rec-ByName-type : (C : U) -> ((t : 2 | ⊤) -> C) -> ByName -> C+ := rec-ByName+#define rec-Inline-type : (C : U) -> ((t : 2 | ⊤) -> C) -> Inline -> C+ := rec-Inline
+ test/typecheck/cases/happy-data-shape-tope.expect.yaml view
@@ -0,0 +1,1 @@+status: ok
+ test/typecheck/cases/happy-data-shape-tope.rzk view
@@ -0,0 +1,25 @@+#lang rzk-1++-- The tope of a shape field is available inside a match branch: the+-- eliminator brings it into the branch's context, so it is discharged in the+-- tope layer rather than escaping as a cube term.++#data Bd := bd (t : 2 | (t === 0_2) \/ (t === 1_2))++#define at-bd+ ( A : U) (a : A)+ : (j : 2 | (j === 0_2) \/ (j === 1_2)) -> A+ := \ j -> a++#define bd-carries-its-tope (A : U) (a : A) (s : Bd) : A+ := match s (bd t ⇒ at-bd A a t)++-- A shape field may be followed by fields mentioning the cube variable it+-- binds: this is the total space Σ_{t : Δ¹} A(t), which has no other spelling.+#data Total (A : (t : 2) -> U) := tot (t : 2 | ⊤) (a : A t)++#define total-fst (A : (t : 2) -> U) (w : Total A) : U+ := match w (tot t a ⇒ A t)++-- A subshape of a product cube: the 2-simplex as a type.+#data Tri := tri (t : 2 * 2 | second t <= first t)
+ test/typecheck/cases/happy-data-tope-param.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - bare-tope-parameter
+ test/typecheck/cases/happy-data-tope-param.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- TOPE is a parameter kind of #data, like CUBE and tope families.+#data Real (I : CUBE) (psi : TOPE) := pt (t : I | psi)++#define pt-top (I : CUBE) (t : I) : Real I TOP := pt I TOP t
test/typecheck/cases/happy-data-vec.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data nat := zero | suc (n : nat) #data vec
+ test/typecheck/cases/happy-ext-style-restrictions.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings: []+regression_for:+ - free-standing-restriction-warning+ - synthesised-types-are-concluded
+ test/typecheck/cases/happy-ext-style-restrictions.rzk view
@@ -0,0 +1,36 @@+#lang rzk-1++-- Ext-style restrictions, and free-standing ones in concluded positions+-- only: the fragment conservativity covers. Companion of+-- warn-free-standing-restriction-assumed.++-- On the codomain of a shape-Π, also with the shape tope left implicit.+#def ext-type (A : 2 → U) (a : (t : 2 | t ≡ 0₂) → A t) : U+ := (t : 2) → A t [t ≡ 0₂ ↦ a t]++-- A tail type: the restriction sits under an ordinary Π, which is+-- free-standing, but it is concluded rather than assumed.+#def nested-tail+ ( I : CUBE) (ψ : I → TOPE) (ϕ : ψ → TOPE) (X : U) (Y : ψ → X → U)+ ( f : (t : ϕ) → (x : X) → Y t x)+ ( g : (x : X) → (t : ψ) → (Y t x) [ϕ t ↦ f t x])+ : (t : ψ) → (x : X) → (Y t x) [ϕ t ↦ f t x]+ := \ t x → g x t++-- A motive whose restriction is ext-style: the unit-cube encoding of RSTT.+#def rstt-motive (A : U) (x : A) (p : x =_{A} x) : (t : 1) → A [TOP ↦ x]+ := idJ (A , x , (\ _ _ → (t : 1) → A [TOP ↦ x]) , (\ t → x) , x , p)++-- A section of an extension type applied at a point carries a restriction by+-- instantiation. That type is concluded, so naming it, binding it by let, or+-- forming refl at it stays silent: the types the elaborator synthesises for a+-- let annotation and for a refl's element are not assumed positions.+#def at-point (I : CUBE) (ψ : I → TOPE) (ϕ : ψ → TOPE) (A : ψ → U)+ ( a : (t : ϕ) → A t) (f : (t : ψ) → A t [ϕ t ↦ a t]) (s : ψ)+ : A s+ := let z := f s in z++#def refl-at-point (I : CUBE) (ψ : I → TOPE) (ϕ : ψ → TOPE) (A : ψ → U)+ ( a : (t : ϕ) → A t) (f : (t : ψ) → A t [ϕ t ↦ a t]) (s : ψ)+ : (f s) =_{A s} (f s)+ := refl
test/typecheck/cases/happy-flip-unflip.rzk view
@@ -1,29 +1,35 @@ #lang rzk-1 --- Test: _op (flip(i) === 0_2) is equivalent to (i === 1_2)--- Verified via propositional equality of topes under _op+-- Test: _op (flip(i) === 0_2) is equivalent to (i === 1_2).+-- The topes cannot be compared by an identity type (TOPE is not a type),+-- so each law is observed as definitional equality of the extension types+-- the two topes carve out of the unit cube, over an arbitrary type A+-- (op-bound, so it is accessible under the _op lock). #def test-flip-tope-equiv+ (A :_op U) (i : 2) : let mod _op q := inv_op (i === 1_2) in let mod _op fi := flip_op i in- _op (q = (fi === 0_2))+ _op (((t : 1 | q) -> A) = ((t : 1 | fi === 0_2) -> A)) := mod _op refl -- Symmetric case: _op (flip(i) === 1_2) is equivalent to (i === 0_2) #def test-flip-tope-equiv-sym+ (A :_op U) (i : 2) : let mod _op q := inv_op (i === 0_2) in let mod _op fi := flip_op i in- _op (q = (fi === 1_2))+ _op (((t : 1 | q) -> A) = ((t : 1 | fi === 1_2) -> A)) := mod _op refl -- flip/unflip with 2: inv roundtrip #def test-flip-inv-roundtrip-2+ (A :_op U) (i : 2) : let mod _op q := inv_op (i === 0_2) in let mod _op fi := flip_op i in- _op (q = (fi === 1_2))+ _op (((t : 1 | q) -> A) = ((t : 1 | fi === 1_2) -> A)) := mod _op refl
+ test/typecheck/cases/happy-interval-endpoint-entailment.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - interval-endpoint-entailment-through-equality
+ test/typecheck/cases/happy-interval-endpoint-entailment.rzk view
@@ -0,0 +1,19 @@+#lang rzk-1++#def simplex+ : (II * II) -> TOPE+ := \ (t , s) -> s <= t++#def horn+ : (II * II) -> TOPE+ := \ (t , s) -> t === 1_I \/ s === 0_I++#def restrict-simplex+ (A : U)+ (a : simplex -> A)+ : horn -> A+ := \ (t , s) ->+ recOR(+ t === 1_I |-> a (t , s)+ , s === 0_I |-> a (t , s)+ )
test/typecheck/cases/happy-match-basics.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data bool := false | true #data nat := zero | suc (n : nat)
test/typecheck/cases/happy-match-case-vec.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data nat := zero | suc (n : nat) #data vec (A : U) : nat → U
test/typecheck/cases/happy-match-indexed.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #data nat := zero | suc (n : nat) #data vec (A : U) : nat → U
+ test/typecheck/cases/happy-match-modal.expect.yaml view
@@ -0,0 +1,9 @@+status: ok+warnings: []+regression_for:+ - modal-match-scrutinee-accessibility+ - modal-match-composes-constructor-argument-modalities+ - modal-match-explicit-motive+ - modal-match-composition-order-op-op+ - modal-match-keeps-induction-hypothesis-modality+ - modal-data-eliminators-are-generated
+ test/typecheck/cases/happy-match-modal.rzk view
@@ -0,0 +1,83 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"++-- A modal match checks the scrutinee under its modality. Every constructor+-- argument is then bound under the composition of that modality and the+-- argument's own modality: Flat ∘ Id = Flat and Flat ∘ Op = Flat here.+#data ModalMatch := mm (plain : 2) (op :_op 2)++#define modal-match-flat+ (f :_b (i : 2) -> (j : 2) -> Unit)+ (x :_b ModalMatch)+ : _b Unit+ := match _b x+ (mm plain op => mod _b (f plain op))++-- The modal spelling also supports an explicit motive.+#define modal-match-flat-into+ (f :_b (i : 2) -> (j : 2) -> Unit)+ (x :_b ModalMatch)+ : _b Unit+ := match _b x into (\ (_ :_b ModalMatch) -> _b Unit)+ (mm plain op => mod _b (f plain op))++#data Tagged : Unit -> U := tagged : Tagged unit++#define modal-match-indexed-motive+ (x :_b Tagged unit)+ : _b Unit+ := match _b x into (\ (i :_b Unit) (_ :_b Tagged i) -> _b Unit)+ (tagged => mod _b unit)++-- Composition is ordered: Op · Op = Id, so an op field of a value matched+-- under Op becomes available in the plain context.+#data OpField := op-field (point :_op 2)++#define modal-match-op-op+ (f : (i : 2) -> Unit)+ (x :_op OpField)+ : Unit+ := match _op x+ (op-field point => f point)++#data Nat := zero | suc (pred : Nat)++#check ind-Nat+ : (C : Nat -> U)+ -> C zero+ -> ((pred : Nat) -> (ih : C pred) -> C (suc pred))+ -> (n : Nat)+ -> C n+#check rec-Nat+ : (C : U) -> C -> ((pred : Nat) -> C -> C) -> Nat -> C+#check ind-op-Nat+ : (C : (n :_op Nat) -> U)+ -> C zero+ -> ((pred :_op Nat) -> (ih : C pred) -> C (suc pred))+ -> (n :_op Nat)+ -> C n+#check rec-op-Nat+ : (C : U) -> C -> ((pred :_op Nat) -> C -> C) -> (n :_op Nat) -> C+#check ind-b-Nat+ : (C : (n :_b Nat) -> U)+ -> C zero+ -> ((pred :_b Nat) -> (ih : C pred) -> C (suc pred))+ -> (n :_b Nat)+ -> C n+#check rec-b-Nat+ : (C : U) -> C -> ((pred :_b Nat) -> C -> C) -> (n :_b Nat) -> C++#define modal-predecessor-generated+ (n :_b Nat)+ : _b Nat+ := rec-b-Nat (_b Nat) (mod _b zero)+ (\ pred _ -> mod _b pred) n++#define modal-match-recursive+ (x :_b Nat)+ : Unit+ := match _b x+ ( zero => unit+ | suc pred ih => ih)
test/typecheck/cases/happy-meta-prefix-option-off.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #set-option "warn-meta-prefix" = "off" #define my-id (X : U) (x : X) : X := x
test/typecheck/cases/happy-meta-prefix-plumbing.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #define my-id (X : U) (x : X) : X := x -- Aliasing a schema at the root of a definition is macro-level plumbing.
test/typecheck/cases/happy-modal-inv.rzk view
@@ -2,55 +2,146 @@ #compute-nf inv_op (0_2 === 0_2) +-- The inv/uninv laws are observed as definitional equality of the extension+-- types the topes carve out of the unit cube, over an arbitrary type A:+-- TOPE is not a type, so the topes themselves cannot be compared by an+-- identity type. Under an _op lock the type is op-bound (A :_op U).+ -- inv flips endpoint: inv_op(i === 0) = mod _op (flip(i) === 1) #def test-lt-mod-inv+ (A :_op U) ( i : 2)- : let mod _op q := invᵒᵖ (i ≡ 0₂) in let mod _op fi := flip_op i in _op (q = (fi === 1_2))+ : let mod _op q := invᵒᵖ (i ≡ 0₂) in let mod _op fi := flip_op i in+ _op (((t : 1 | q) -> A) = ((t : 1 | fi === 1_2) -> A)) := mod _op refl #def test-inv-endpoint-one+ (A :_op U) (i : 2) : let mod _op q := inv_op (i === 1_2) in let mod _op fi := flip_op i in- _op (q = (fi === 0_2))+ _op (((t : 1 | q) -> A) = ((t : 1 | fi === 0_2) -> A)) := mod _op refl -- uninv(inv(phi)) = phi #def test-inv-uninv-cancel+ (A : U) (i : 2)- : uninv_op (inv_op (i === 0_2)) = (i === 0_2)+ : ((t : 1 | uninv_op (inv_op (i === 0_2))) -> A) = ((t : 1 | i === 0_2) -> A) := refl -- inv(uninv(mod _op phi)) = mod _op phi #def test-uninv-inv-cancel+ (A :_op U) (i : 2) : let mod _op fi := flip_op i in- inv_op (uninv_op (mod _op (fi === 0_2))) = mod _op (fi === 0_2)- := refl+ let mod _op a := inv_op (uninv_op (mod _op (fi === 0_2))) in+ _op (((t : 1 | a) -> A) = ((t : 1 | fi === 0_2) -> A))+ := mod _op refl -- inv distributes over conjunction #def test-inv-distributes-and+ (A :_op U) (i j : 2) : let mod _op q := inv_op ((i === 0_2) /\ (j === 1_2)) in let mod _op fi := flip_op i in let mod _op fj := flip_op j in- _op (q = ((fi === 1_2) /\ (fj === 0_2)))+ _op (((t : 1 | q) -> A) = ((t : 1 | (fi === 1_2) /\ (fj === 0_2)) -> A)) := mod _op refl -- inv/uninv on TOP and BOT (bug catchers: stuck without nfTope fix) #def test-inv-top- : let mod _op q := (inv_op TOP) in _op (q = TOP)+ (A :_op U)+ : let mod _op q := (inv_op TOP) in+ _op (((t : 1 | q) -> A) = ((t : 1 | TOP) -> A)) := mod _op refl #def test-inv-bot- : let mod _op q := inv_op BOT in _op (q = BOT)+ (A :_op U)+ : let mod _op q := inv_op BOT in+ _op (((t : 1 | q) -> A) = ((t : 1 | BOT) -> A)) := mod _op refl #def test-uninv-top- : uninv_op (mod _op TOP) = TOP+ (A : U)+ : ((t : 1 | uninv_op (mod _op TOP)) -> A) = ((t : 1 | TOP) -> A) := refl #def test-uninv-bot- : uninv_op (mod _op BOT) = BOT+ (A : U)+ : ((t : 1 | uninv_op (mod _op BOT)) -> A) = ((t : 1 | BOT) -> A) := refl++-- inv is precomposition with the order-reversing flip, so it commutes with+-- /\, \/, TOP and BOT, and reverses <=.++-- inv distributes over disjunction+#define test-inv-distributes-or+ (A :_op U)+ (i j : 2)+ : let mod _op q := inv_op ((i === 0_2) \/ (j === 1_2)) in+ let mod _op fi := flip_op i in+ let mod _op fj := flip_op j in+ _op (((t : 1 | q) -> A) = ((t : 1 | (fi === 1_2) \/ (fj === 0_2)) -> A))+ := mod _op refl++-- inv reverses an inequality: inv(i <= j) = (fj <= fi)+#define test-inv-leq+ (A :_op U)+ (i j : 2)+ : let mod _op q := inv_op (i <= j) in+ let mod _op fi := flip_op i in+ let mod _op fj := flip_op j in+ _op (((t : 1 | q) -> A) = ((t : 1 | fj <= fi) -> A))+ := mod _op refl++-- uninv distributes over disjunction, via cancellation+#define test-uninv-or+ (A : U)+ (i j : 2)+ : ((t : 1 | uninv_op (inv_op ((i === 0_2) \/ (j === 1_2)))) -> A)+ = ((t : 1 | (i === 0_2) \/ (j === 1_2)) -> A)+ := refl++-- uninv over conjunction, with a nested stuck conjunct+#define test-uninv-and-mixed+ (A : U)+ (i j : 2)+ : ((t : 1 | uninv_op (inv_op ((i <= j) /\ (j === 1_2)))) -> A)+ = ((t : 1 | (i <= j) /\ (j === 1_2)) -> A)+ := refl++-- BOT absorbs under uninv (i must be op-bound to be used under mod _op)+#define test-uninv-and-bot+ (A : U)+ (i :_op 2)+ : ((t : 1 | uninv_op (mod _op ((i === 0_2) /\ BOT))) -> A)+ = ((t : 1 | BOT) -> A)+ := refl++-- inv on the lattice interval endpoints (I_0 / I_1)+#define test-inv-I-endpoint+ (A :_op U)+ (i : 𝕀)+ : let mod _op q := inv_op (i === 0ᵢ) in+ let mod _op fi := flip_op i in+ _op (((t : 1 | q) -> A) = ((t : 1 | fi === 1ᵢ) -> A))+ := mod _op refl++-- inv of a conjunction with BOT first normalises to mod _op BOT+#define test-inv-and-bot+ (A :_op U)+ (i : 2)+ : let mod _op q := inv_op (BOT /\ (i === 0_2)) in+ _op (((t : 1 | q) -> A) = ((t : 1 | BOT) -> A))+ := mod _op refl++-- inv of a let-bound tope variable normalises through the variable+#define test-inv-through-let+ (A :_op U)+ (i : 2)+ : let mod _op q := inv_op (let phi := (i === 0_2) in phi) in+ let mod _op fi := flip_op i in+ _op (((t : 1 | q) -> A) = ((t : 1 | fi === 1_2) -> A))+ := mod _op refl
+ test/typecheck/cases/happy-modal-let-dependent-payload.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - let-mod-infers-a-dependent-type-at-the-payload
+ test/typecheck/cases/happy-modal-let-dependent-payload.rzk view
@@ -0,0 +1,27 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"++-- A motive-free let mod in inference position whose body type depends on the+-- bound variable: the inferred type is instantiated with the payload of x,+-- not with x itself, for the right adjoints _#, _op and _id. The projection+-- forces the let through inference.++#define dep-sharp+ (A : U)+ (x : _# A)+ : x = x+ := first (let mod _# a := x in (refl_{mod _# a}, unit))++#define dep-op+ (A :_op U)+ (x : _op A)+ : x = x+ := first (let mod _op a := x in (refl_{mod _op a}, unit))++#define dep-id+ (A : U)+ (x : _id A)+ : x = x+ := first (let mod _id a := x in (refl_{mod _id a}, unit))
+ test/typecheck/cases/happy-modal-let-restricted.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings: []+regression_for:+ - let-mod-eliminates-an-outer-restricted-modal-type+ - let-mod-into-infers-an-outer-restricted-modal-type
+ test/typecheck/cases/happy-modal-let-restricted.rzk view
@@ -0,0 +1,71 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"++-- A restriction is a refinement of the whole modal type, not an obstacle to+-- modal elimination. `let mod` must look through the outer restriction when+-- finding the modal payload type.+#define unwrap-restricted-modal+ (A :_b U)+ (a :_b A)+ (i : 2)+ (x : (_b A) [ i === 0_2 |-> mod _b a ])+ : _b A+ := let mod _b y := x in mod _b y++-- An explicit motive takes the inference path through the elaborator.+#define unwrap-restricted-modal-into+ (A :_b U)+ (a :_b A)+ (i : 2)+ (x : (_b A) [ i === 0_2 |-> mod _b a ])+ : _b A+ := let mod _b y := x into (\ _ -> _b A) in mod _b y++-- On the face, the let computes to the boundary value.+#define restricted-flat-boundary+ (A :_b U)+ (a :_b A)+ (i : 2)+ (x : (_b A) [ i === 0_2 |-> mod _b a ])+ : (_b A) [ i === 0_2 |-> mod _b a ]+ := let mod _b y := x in mod _b y++-- For a right adjoint, η identifies the let with x.+#define restricted-op-eta+ (A :_op U)+ (a :_op A)+ (i : 2)+ (x : (_op A) [ i === 0_2 |-> mod _op a ])+ : (let mod _op y := x in mod _op y) = x+ := refl++-- A restriction with two faces.+#define restricted-sharp-two-faces+ (A : U)+ (a b : A)+ (i : 2)+ (x : (_# A) [ i === 0_2 |-> mod _# a , i === 1_2 |-> mod _# b ])+ : (_# A) [ i === 0_2 |-> mod _# a , i === 1_2 |-> mod _# b ]+ := let mod _# y := x in mod _# y++-- A restriction nested twice around the modal type.+#define restricted-twice+ (A :_b U)+ (a :_b A)+ (i j : 2)+ (x : ((_b A) [ i === 0_2 |-> mod _b a ]) [ j === 0_2 |-> mod _b a ])+ : _b A+ := let mod _b y := x in mod _b y++-- Dependent motive on a restricted value, outside any face.+#define into-restricted-dependent+ (A :_b U)+ (a :_b A)+ (C : (_b A) -> U)+ (c : (y :_b A) -> C (mod _b y))+ (i : 2)+ (x : (_b A) [ i === 0_2 |-> mod _b a ])+ : C x+ := let mod _b y := x into C in c y
test/typecheck/cases/happy-modal-tope-unwrap.rzk view
@@ -6,10 +6,11 @@ -- given _op phi we can derive uninv_op(phi), and vice versa. #def test-op-unwrap-to-uninv+ (A :_op U) (i : 2) : let mod _op q := inv_op (i === 0_2) in let mod _op fi := flip_op i in- _op (q = (fi === 1_2))+ _op (((t : 1 | q) -> A) = ((t : 1 | fi === 1_2) -> A)) := mod _op refl -- 2. _b phi implies phi:
+ test/typecheck/cases/happy-modal-uninv-shape-restricted.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - "nfTope: uninv distributes over the conjunction that a shape-restricted application normalises to, so each conjunct reaches the tope context"
+ test/typecheck/cases/happy-modal-uninv-shape-restricted.rzk view
@@ -0,0 +1,26 @@+#lang rzk-1++-- Under an _op lock a plain assumption uninv_op (mod _op phi) must make phi+-- available in the op-context: that is what un-inversion means. The control+-- below (an unrestricted phi) works; the case that matters is a phi which is+-- itself shape-restricted, as in sHoTT's op-ext-flip-2-fwd. There the normal+-- form of (phi ft) carries the ambient shape (psi ft) as a side condition, so+-- the assumption un-inverts to a conjunction, and both conjuncts have to become+-- available separately: the domain of x is (psi ft) /\ (phi ft).++#postulate uninv-under-op-unrestricted+ ( phi :_op (2 -> TOPE))+ ( A :_op (t : 2) -> U)+ ( x :_op (t : 2 | phi t) -> A t)+ : ( t : 2) ->+ let mod _op ft := flip_op t in+ (_op (A ft)) [ uninv_op (mod _op (phi ft)) |-> mod _op (x ft) ]++#postulate uninv-under-op-shape-restricted+ ( psi :_op (2 -> TOPE))+ ( phi :_op ((t : 2 | psi t) -> TOPE))+ ( A :_op (t : 2 | psi t) -> U)+ ( x :_op (t : 2 | phi t) -> A t)+ : ( t : 2 | let mod _op ft := flip_op t in _op (psi ft)) ->+ let mod _op ft := flip_op t in+ (_op (A ft)) [ uninv_op (mod _op (phi ft)) |-> mod _op (x ft) ]
test/typecheck/cases/happy-restrict-face-not-contained.rzk view
@@ -3,8 +3,8 @@ -- Restriction faces need not lie within the local tope context. The checker -- constrains the term only on `context ∧ face`, so a face that overhangs the -- context (extends beyond it while still overlapping) is allowed. Following--- Riehl–Shulman, there is no requirement that the face be contained in (entailed--- by) the context. Overhang only triggers a non-fatal warning.+-- Riehl–Shulman, there is no requirement that the face be contained in the context+-- (entail it). Overhang only triggers a non-fatal warning. -- -- (A face *disjoint* from the context is a different matter: it is vacuous and is -- rejected — see `ill-restrict-face-disjoint`.)
+ test/typecheck/cases/happy-rstt-awareness.expect.yaml view
@@ -0,0 +1,6 @@+status: ok+warnings:+ - OverhangWarning+ - TopeFamilyDomainWarning+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-awareness.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#set-option "warn-overhang" = "yes"+#def concluded (t : 2 | t === 0_2) : Unit [TOP ↦ unit] := unit+#def family (I : CUBE) (φ : I → TOPE) (χ : φ → TOPE) (A : U) : U := (t : χ) → A+#def clip (A : U) : U := family 2 (\ t → BOT) (\ t → TOP) A
+ test/typecheck/cases/happy-rstt-bare-tope-param.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings: []+regression_for:+ - rstt-safe-mode+ - bare-tope-parameter
+ test/typecheck/cases/happy-rstt-bare-tope-param.rzk view
@@ -0,0 +1,18 @@+#lang rzk-1++-- A bare tope parameter is a tope parameter of the meta-theoretic parameter+-- layer, like the family (psi : 1 -> TOPE): RSTT-safe mode accepts both.+#set-option "rstt-safe" = "error"++#define const-on+ ( psi : TOPE) (A : U) (a : A)+ : (t : 2 | psi) -> A+ := \ _ -> a++#define use (A : U) (a : A) : (t : 2 | TOP) -> A := const-on TOP A a++#section s+#assume chi : TOPE+#variable B : U+#define r (b : B) : (t : 2) -> B [chi |-> b] := \ _ -> b+#end s
+ test/typecheck/cases/happy-rstt-boundary-error.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-boundary-error.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#postulate overhang (f : (t : 2 | t === 0_2) → Unit [TOP ↦ unit]) : Unit
+ test/typecheck/cases/happy-rstt-boundary-multicube.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-boundary-multicube.rzk view
@@ -0,0 +1,40 @@+#lang rzk-1++#set-option "rstt-safe" = "error"++-- A product cube binds all its coordinates together.+#def clip+ (I J : CUBE) (ψ φ : (I * J) → TOPE)+ (A : (p : I * J | ψ p) → U)+ (a : (p : I * J | ψ p) → A p)+ (f : (p : I * J | ψ p) → A p [φ p ↦ a p])+ : (p : I * J | ψ p) → A p [ψ p /\ φ p ↦ a p]+ := \ p → f p++#def unclip+ (I J : CUBE) (ψ φ : (I * J) → TOPE)+ (A : (p : I * J | ψ p) → U)+ (a : (p : I * J | ψ p) → A p)+ (f : (p : I * J | ψ p) → A p [ψ p /\ φ p ↦ a p])+ : (p : I * J | ψ p) → A p [φ p ↦ a p]+ := \ p → f p++-- Boundary values may depend on outer points; the face must not.+#postulate outer-value (A : U) (a : 2 → A) (s : 2)+ (f : (t : 2 | t === 0_2) → A [TOP ↦ a s]) : Unit++#postulate product-boundary (A : U) (a : A)+ (f : ((t, u) : 2 * 2 | t <= u) → A [t === 0_2 \/ u === 1_2 ↦ a])+ : Unit++-- A concluded tail restriction can be erased in the back-translation.+#def tail (s t : 2) : Unit [s === t ↦ unit] := unit++-- Contextual tope/type families are schematic judgements, not extension types.+#postulate families+ (χ : (s : 2) → (t : 2 | t <= s) → TOPE)+ (A : (s : 2) → (t : 2 | t <= s) → U) : Unit++#def is-zero : 2 → TOPE := \ t → t === 0_2+#postulate closed-alias (A : U) (a : A)+ (f : (t : 2) → A [is-zero t ↦ a]) : Unit
+ test/typecheck/cases/happy-rstt-boundary-warn.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-boundary-warn.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- Boundary obligations are interpreted within the binder's shape.+#postulate overhang (f : (t : 2 | t === 0_2) → Unit [TOP ↦ unit]) : Unit
+ test/typecheck/cases/happy-rstt-boundary.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-boundary.rzk view
@@ -0,0 +1,10 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+-- Overhang along a concluded codomain remains a tail type.+#def concluded (t : 2 | t === 0_2) : Unit [TOP ↦ unit] := unit+-- An ambient constraint is not part of the immediate shape binder.+#postulate ambient (s : 2 | s === 0_2)+ (f : (t : 2) → Unit [t === 0_2 ↦ unit]) : Unit+-- A boundary included in its own shape is ext-style.+#postulate contained (f : (t : 2 | t === 0_2) → Unit [t === 0_2 ↦ unit]) : Unit
+ test/typecheck/cases/happy-rstt-independent-cubes.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-independent-cubes.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def independent (I : CUBE) (s : 2) (f : (t : I) → Unit) : Unit := unit+#def at-endpoint (I : 2 → CUBE) (s : 2)+ (f : (t : I 0_2) → Unit) : Unit := unit+#def product (I J : CUBE) ((s, t) : I × J) : Unit := unit+#def functions (I : CUBE) : U := (t : I) → Unit+#def instance (I : CUBE) (s : 2) (f : functions I) : Unit := unit
+ test/typecheck/cases/happy-rstt-off.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-off.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "rstt-safe" = "off"+#def nested (A : U) (a : A) : A+ := (\ (B : U) (b : B) → b) A a
+ test/typecheck/cases/happy-rstt-schema-parameters.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-schema-parameters.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def family (A : U) : U := A+#def alias : U → U := family+#def receive (F : U → U) (A : U) : U := F A+#def supply (A : U) : U := receive (\ B → B) A+#def ordinary (A : U) : Σ (f : A → A), Unit := ((\ a → a), unit)
+ test/typecheck/cases/happy-rstt-shape-dependency-off.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-shape-dependency-off.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++#set-option "rstt-safe" = "off"+#set-option "warn-shape-dependency" = "no"+#set-option "warn-free-standing-restriction" = "yes"+#postulate mixed (A : U) (a : A) (s : 2)+ (f : (t : 2 | t <= s) → A [t === s ↦ a]) : Unit
+ test/typecheck/cases/happy-rstt-tail-nested.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - rstt-paper-worked-examples
+ test/typecheck/cases/happy-rstt-tail-nested.rzk view
@@ -0,0 +1,27 @@+#lang rzk-1+#set-option "rstt-safe" = "error"++-- Paper example: src/nested-restriction.rzk+++#def nested-lemma+ ( I : CUBE)+ ( ψ : I → TOPE)+ ( ϕ : ψ → TOPE)+ ( X : U)+ ( Y : ψ → X → U)+ ( f : (t : ϕ) → (x : X) → Y t x)+ ( g : (x : X) → (t : ψ) → (Y t x) [ϕ t ↦ f t x])+ : (t : ψ) → (x : X) → (Y t x) [ϕ t ↦ f t x]+ := \ t x → g x t++#def flip-via-nested+ ( I : CUBE)+ ( ψ : I → TOPE)+ ( ϕ : ψ → TOPE)+ ( X : U)+ ( Y : ψ → X → U)+ ( f : (t : ϕ) → (x : X) → Y t x)+ ( g : (x : X) → (t : ψ) → (Y t x) [ϕ t ↦ f t x])+ : (t : ψ) → ((x : X) → Y t x) [ϕ t ↦ f t]+ := \ t x → nested-lemma I ψ ϕ X Y f g t x
+ test/typecheck/cases/happy-rstt-tau-flip.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - rstt-paper-worked-examples
+ test/typecheck/cases/happy-rstt-tau-flip.rzk view
@@ -0,0 +1,56 @@+#lang rzk-1+#set-option "rstt-safe" = "error"++-- Paper example: src/context-hott.rzk+++-- Non-displayed context for the code snippets included in the paper.+-- These definitions mirror the sHoTT library (hott/* modules).++#define product+ ( A B : U)+ : U+ := Σ (a : A) , B++#define has-section+ ( A B : U)+ ( f : A → B)+ : U+ := Σ (s : B → A) , ((b : B) → f (s b) = b)++#define has-retraction+ ( A B : U)+ ( f : A → B)+ : U+ := Σ (r : B → A) , ((a : A) → r (f a) = a)++#define is-equiv+ ( A B : U)+ ( f : A → B)+ : U+ := product (has-retraction A B f) (has-section A B f)++#define Equiv+ ( A B : U)+ : U+ := Σ (f : A → B) , is-equiv A B f++-- Paper example: src/flip-ext-fun.rzk+++#define flip-ext-fun+ ( I : CUBE)+ ( ψ : I → TOPE)+ ( φ : ψ → TOPE)+ ( X : U)+ ( Y : ψ → X → U)+ ( f : (t : φ) → (x : X) → Y t x)+ : Equiv+ ( (t : ψ) → ((x : X) → Y t x) [φ t ↦ f t])+ ( (x : X) → (t : ψ) → Y t x [φ t ↦ f t x])+ :=+ ( \ g x t → g t x ,+ ( ( \ h t x → (h x) t ,+ \ g → refl) ,+ ( \ h t x → (h x) t ,+ \ h → refl)))
+ test/typecheck/cases/happy-rstt-tope-terms.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-tope-terms.rzk view
@@ -0,0 +1,15 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def ordinary (A : U) (a : A)+ : (t : 2 | ((\ (x : A) → 0_2) a) === 0_2) → A+ := \ t → a++#def face (A : U) (a : A)+ : (t : 2) → A [t === ((\ (x : A) → 0_2) a) ↦ a]+ := \ t → a++#def tope-id (φ : 2 → TOPE) : 2 → TOPE := φ+#def schema (A : U) (a : A)+ : (t : 2 | tope-id (\ u → u === 0_2) t) → A+ := \ t → a
+ test/typecheck/cases/happy-rstt-trusted-postulate.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/happy-rstt-trusted-postulate.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+-- Fragment membership does not establish consistency of postulates.+#postulate arbitrary (A : U) : A+#def conditional (A : U) : A := arbitrary A
test/typecheck/cases/happy-set-option-warn-overhang.expect.yaml view
@@ -2,3 +2,5 @@ regression_for: - warn-overhang-option - checkTopeAgainstContext-opt-in-hint+warnings:+ - OverhangWarning
+ test/typecheck/cases/happy-tope-assume.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - bare-tope-assumption
+ test/typecheck/cases/happy-tope-assume.rzk view
@@ -0,0 +1,12 @@+#lang rzk-1++-- A bare tope assumption closes to a bare tope parameter.+#section bare-tope+#assume psi : TOPE+#variable A : U+#define restrict-const (a : A) : (t : 2) -> A [psi |-> a] := \ _ -> a+#end bare-tope++#define closed+ : (psi : TOPE) -> (A : U) -> (a : A) -> (t : 2) -> A [psi |-> a]+ := restrict-const
+ test/typecheck/cases/happy-tope-family-domain-instance.expect.yaml view
@@ -0,0 +1,6 @@+status: ok+warnings:+ - TopeFamilyDomainWarning+ - TopeFamilyDomainWarning+regression_for:+ - tope-family-domain-conjunct-elaboration
+ test/typecheck/cases/happy-tope-family-domain-instance.rzk view
@@ -0,0 +1,28 @@+#lang rzk-1++-- A concrete family checked against a domain type carries the domain:+-- `\ t → TOP` at {t : I | ⊥} → TOPE becomes `\ t → ⊥ ∧ ⊤`. So it is read as+-- its intersection with the domain, also through a parameter with a wider+-- domain. Companion of ill-tope-family-domain-non-instance. Each family that+-- is not included in its domain is reported (warn-tope-family-domain-*).++#def wider (I : CUBE) (φ : I → TOPE) (A : U) : U := (t : φ) → A+#def via-wider (I : CUBE) (ψ : I → TOPE) (χ : ψ → TOPE) (A : U) : U := wider I χ A++-- The family ⊤ over the domain ⊥ selects the empty shape, also through `wider`.+#def into-clipped (I : CUBE) (A : U) (g : (t : I | BOT) → A)+ : via-wider I (\ t → BOT) (\ t → TOP) A+ := g++#def from-clipped (I : CUBE) (A : U) (f : via-wider I (\ t → BOT) (\ t → TOP) A)+ : (t : I | BOT) → A+ := f++-- A family that entails its domain is left unchanged.+#def endpoint (A : U) (a : A)+ : via-wider 2 (\ t → TOP) (\ t → t ≡ 0₂) A+ := \ t → a++#def use-endpoint (A : U) (h : via-wider 2 (\ t → TOP) (\ t → t ≡ 0₂) A)+ : A+ := h 0₂
+ test/typecheck/cases/happy-tope-param.expect.yaml view
@@ -0,0 +1,3 @@+status: ok+regression_for:+ - bare-tope-parameter
+ test/typecheck/cases/happy-tope-param.rzk view
@@ -0,0 +1,39 @@+#lang rzk-1++-- A bare tope parameter (psi : TOPE) means the same as the tope family+-- (psi : 1 -> TOPE): it can restrict a shape or an extension type, it is+-- instantiated with any tope in scope, and the two spellings convert.++#define const-on+ ( psi : TOPE) (A : U) (a : A)+ : (t : 2 | psi) -> A+ := \ _ -> a++#define ext-at+ ( psi : TOPE) (A : U) (a : A)+ : (t : 2) -> A [psi |-> a]+ := \ _ -> a++#define use-top (A : U) (a : A) : (t : 2 | TOP) -> A := const-on TOP A a++#define use-point+ ( s : 2) (A : U) (a : A)+ : (t : 2 | s === 0_2) -> A+ := const-on (s === 0_2) A a++#define weaken+ ( psi chi : TOPE) (A : U) (f : (t : 2 | psi \/ chi) -> A)+ : (t : 2 | psi) -> A+ := \ t -> f t++#define to-family+ ( f : (psi : TOPE) -> (A : U) -> (a : A) -> (t : 2 | psi) -> A)+ : (psi : 1 -> TOPE) -> (A : U) -> (a : A) -> (t : 2 | psi *_1) -> A+ := \ psi -> f (psi *_1)++#define from-family+ ( g : (psi : 1 -> TOPE) -> (A : U) -> (a : A) -> (t : 2 | psi *_1) -> A)+ : (psi : TOPE) -> (A : U) -> (a : A) -> (t : 2 | psi) -> A+ := \ psi -> g (\ _ -> psi)++#define lam : (psi : TOPE) -> U := \ (psi : TOPE) -> (t : 2 | psi) -> Unit
+ test/typecheck/cases/ill-data-cube-index.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "an index of a #data sort must be a type, got a cube: 2"+line: 7+regression_for:+ - data-shape-fields-reject-cube-index
+ test/typecheck/cases/ill-data-cube-index.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++-- A cube index is rejected on the elaborated sort. A cube is an unrestricted+-- shape, so it goes the same way as shape indices: a family varying over a+-- shape is what extension types are for, and no metatheory is written down+-- for an inductive family over one.+#data Fam : 2 -> U := at (t : 2) : Fam t
+ test/typecheck/cases/ill-data-cube-param.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "a parameter of a #data must be a type, CUBE, TOPE, or a tope family, got a cube: 2"+line: 9+regression_for:+ - data-shape-fields-reject-cube-param
+ test/typecheck/cases/ill-data-cube-param.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++-- A #data cannot be parametrised by a cube point, in any spelling: the+-- inline shape spelling is rejected on the surface form, and the bare-cube+-- and named-shape spellings are rejected on the elaborated sort, so the rule+-- does not depend on how the binder is written. Parameters of type CUBE or+-- I → TOPE range over cubes and shapes themselves and remain accepted (see+-- happy-data-shape-realisation).+#data P (t : 2) := c
+ test/typecheck/cases/ill-data-cube-universe-field.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "a field of constructor c must be a type, a cube point, or a shape, got the cube universe: CUBE"+regression_for:+ - data-shape-fields-b-prime-layer-rules
+ test/typecheck/cases/ill-data-cube-universe-field.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- A field may not store a cube itself: a CUBE-valued field puts a cube-layer+-- citizen inside type-layer data, which no written metatheory covers. (A+-- CUBE *parameter* stays legal: the generic Shape realisation depends on it.)+#data F := c (I : CUBE)
+ test/typecheck/cases/ill-data-cube-universe-index.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "an index of a #data sort must be a type, got the cube universe: CUBE"+regression_for:+ - data-shape-fields-b-prime-layer-rules
+ test/typecheck/cases/ill-data-cube-universe-index.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++-- An index must be a type, full stop: a family over the cube universe is+-- internal quantification over the cube layer.+#data X : CUBE -> U
test/typecheck/cases/ill-data-eliminator-unknown.expect.yaml view
@@ -2,7 +2,7 @@ error_tag: TypeErrorOther message_contains: - "eliminate with clause for elim-d"- - "the eliminators are ind-d and rec-d"+ - "the eliminators are ind-d, rec-d, ind-op-d, rec-op-d, ind-b-d, rec-b-d)" line: 4 regression_for: - data-eliminator-reascription-clause
test/typecheck/cases/ill-data-eliminator-unknown.rzk view
@@ -1,5 +1,5 @@ #lang rzk-1 --- An eliminate with clause must name one of the two generated eliminators.+-- An eliminate with clause must name one of the generated eliminators. #data d := c eliminate with elim-d : (C : d → U) → C c → (x : d) → C x
+ test/typecheck/cases/ill-data-modal-cube-field.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "got a modal cube or tope kind: _b CUBE"+regression_for:+ - layer-discipline-kind-names
+ test/typecheck/cases/ill-data-modal-cube-field.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++-- A field of a modal cube kind is rejected like one of a modal tope kind,+-- and the error names the kind.+#data F := c (I : _b CUBE)
+ test/typecheck/cases/ill-data-modal-kind-param-lock.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorUnaccessibleVar+message_contains:+ - "variable J is inaccessible in the current modal context"+regression_for:+ - data-modal-kind-parameter
+ test/typecheck/cases/ill-data-modal-kind-param-lock.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++#data P-flat-cube (I : _b CUBE) := c-flat-cube++-- A modal parameter is instantiated under its lock: a plain cube variable is+-- not available under _b.+#define bad (J : CUBE) : U := P-flat-cube (mod _b J)
+ test/typecheck/cases/ill-data-modal-kind-param-point.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+regression_for:+ - data-modal-kind-parameter
+ test/typecheck/cases/ill-data-modal-kind-param-point.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#data R (psi : _op TOPE) := pt (t : 2 | uninv_op psi)++-- The shape field keeps its tope: there is no point of R (mod _op BOT).+#define bad : R (mod _op BOT) := pt (mod _op BOT) 0_2
+ test/typecheck/cases/ill-data-modal-shape-field-lock.expect.yaml view
@@ -0,0 +1,8 @@+status: error+error_tag: TypeErrorUnaccessibleVar+message_contains:+ - "variable s is inaccessible"+ - "declared modality: _id"+ - "current locks: ♭"+regression_for:+ - data-shape-fields-modal-shape-field-lock
+ test/typecheck/cases/ill-data-modal-shape-field-lock.rzk view
@@ -0,0 +1,13 @@+#lang rzk-1++-- The lock discipline is enforced for a modal shape field: the branch binds+-- the cube variable under the field's modality, so applying a family to it+-- demands the matching accessibility. An unannotated (s : 2) is not+-- accessible under the ♭ lock.+#data FlatArr := fa (t :_b 2 | ⊤)++#define fam (A :_b (t : 2) -> U) (x : FlatArr) : U+ := match x (fa t ⇒ A t)++#define bad (A :_b (t : 2) -> U) (s : 2) : fam A (fa s) = A s+ := refl
+ test/typecheck/cases/ill-data-modal-tope-field.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "a field of constructor c must be a type, a cube point, or a shape, got a modal cube or tope kind: _op TOPE"+regression_for:+ - data-shape-fields-b-prime-layer-rules
+ test/typecheck/cases/ill-data-modal-tope-field.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- A field of a modal tope kind would store a tope-layer citizen, seen+-- through a modality, inside type-layer data. The modal kinds are+-- parameters only.+#data F := c (psi : _op TOPE)
+ test/typecheck/cases/ill-data-modal-tope-index.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "an index of a #data sort must be a type, got a modal cube or tope kind: _op TOPE"+regression_for:+ - data-shape-fields-b-prime-layer-rules
+ test/typecheck/cases/ill-data-modal-tope-index.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++-- An index of a modal tope kind is internal quantification over the tope+-- layer through a modality; an index must be a type.+#data X : (_op TOPE) -> U
+ test/typecheck/cases/ill-data-modal-type-field.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "modal type fields are not supported yet"+line: 8+regression_for:+ - data-shape-fields-reject-modal-type-field
+ test/typecheck/cases/ill-data-modal-type-field.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++-- A modal field whose domain is a type is rejected: unlike a cube or shape+-- field, a type field can be recursive, and the recursion and positivity+-- bookkeeping does not see through a modal binder. The decision is made on+-- the elaborated constructor type (checkDataConFieldLayers), since on the+-- surface (x :_b Unit) is indistinguishable from a named modal shape field.+#data Wrap := wrap (x :_b Unit)
+ test/typecheck/cases/ill-data-no-sharp-eliminator.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorUndefined+regression_for:+ - modal-data-no-sharp-eliminators
+ test/typecheck/cases/ill-data-no-sharp-eliminator.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- A #data generates no ♯ eliminators (see ill-match-modal-sharp).+#data Bool := false | true++#define retract : (z :_# Bool) -> Bool := rec-sharp-Bool Bool false true
− test/typecheck/cases/ill-data-shape-field.expect.yaml
@@ -1,7 +0,0 @@-status: error-error_tag: TypeErrorOther-message_contains:- - "directed cell"-line: 5-regression_for:- - data-stage1-reject-shape-fields
− test/typecheck/cases/ill-data-shape-field.rzk
@@ -1,5 +0,0 @@-#lang rzk-1---- A constructor with a cube or shape argument would declare a directed--- cell over rzk's simplicial interval; rejected in all M3 stages.-#data d := arrow (t : 2 | TOP)
+ test/typecheck/cases/ill-data-shape-index-named.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "an index of a #data sort must be a type, got a shape: Delta1"+line: 9+regression_for:+ - data-shape-fields-reject-shape-index
+ test/typecheck/cases/ill-data-shape-index-named.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++-- The named spelling of a shape index is rejected on the elaborated sort:+-- (Delta1 used as an index type) elaborates to a restricted binder, the same+-- form the inline spelling (see ill-data-shape-index) would produce, so both+-- spellings meet the same rule.+#define Delta1 : 2 -> TOPE := \ t -> ⊤++#data Fam : Delta1 -> U := at (t : Delta1) : Fam t
+ test/typecheck/cases/ill-data-shape-index.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "index of a #data sort must be a plain type"+line: 7+regression_for:+ - data-shape-fields-reject-shape-index
+ test/typecheck/cases/ill-data-shape-index.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++-- The inline spelling of a shape index is rejected on the surface form.+-- The named spelling `#data Fam : D1 → U` for `D1 : 2 → TOPE` is rejected+-- too, on the elaborated sort (see ill-data-shape-index-named), so the two+-- spellings of one thing meet the same rule.+#data Fam : (t : 2 | ⊤) → U+ := at (t : 2 | ⊤) : Fam t
+ test/typecheck/cases/ill-data-shape-param.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "a parameter of a #data must be a type, CUBE, TOPE, or a tope family, got a shape: D1"+line: 9+regression_for:+ - data-shape-fields-reject-shape-param
+ test/typecheck/cases/ill-data-shape-param.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++-- The named spelling of a shape parameter is rejected on the elaborated+-- sort: (t : D1) elaborates to the restricted binder (t : 2 | D1 t), the+-- same form the inline spelling would produce, so both spellings meet the+-- same rule.+#define D1 : 2 -> TOPE := \ t -> ⊤++#data P (t : D1) := c
+ test/typecheck/cases/ill-data-tope-family-field.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "a field of constructor c must be a type, a cube point, or a shape, got a tope family: 2 -> TOPE"+regression_for:+ - data-shape-fields-b-prime-layer-rules
+ test/typecheck/cases/ill-data-tope-family-field.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- A field may not store a tope family. Cube and shape *points* are the+-- realisation fragment and stay; the family itself is a parameter kind, not+-- data.+#data F := c (phi : 2 -> TOPE)
+ test/typecheck/cases/ill-data-tope-family-index.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "an index of a #data sort must be a type, got a tope family: 2 -> TOPE"+regression_for:+ - data-shape-fields-b-prime-layer-rules
+ test/typecheck/cases/ill-data-tope-family-index.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++-- A family indexed by tope families is internal quantification over the+-- tope layer; families over shapes are what extension types are for.+#data X : (2 -> TOPE) -> U
+ test/typecheck/cases/ill-data-tope-field.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "a field of constructor box must be a type, a cube point, or a shape, got the tope universe"+regression_for:+ - layer-discipline-tope-universe
+ test/typecheck/cases/ill-data-tope-field.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- TOPE is a parameter kind, not a field: a field would store a tope as data.+#data Boxed := box (psi : TOPE)
+ test/typecheck/cases/ill-data-tope-index.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "an index of a #data sort must be a type, got the tope universe"+regression_for:+ - layer-discipline-tope-universe
+ test/typecheck/cases/ill-data-tope-index.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- An index of a #data sort must be a type.+#data OverTopes : TOPE -> U := at-top : OverTopes TOP
+ test/typecheck/cases/ill-hole-recor-guard-point.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorCannotInferHole+message_contains:+ - "cannot infer the type of a hole"+regression_for:+ - holes-point-inference-position
+ test/typecheck/cases/ill-hole-recor-guard-point.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++-- The points in a tope relation are in inference position. Strict mode cannot+-- guess their cube and therefore rejects a bare hole. Lenient mode records the+-- same term as an incomplete sketch; this is covered by Rzk.HolesSpec.+#define square (A : U) (a : A)+ : ( 2 × 2) → A+ := \ (t , s) → recOR (? ≤ ? ↦ a , ? ↦ a)
+ test/typecheck/cases/ill-kind-app-argument-tope.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "a type argument must be a type, got the tope universe"+regression_for:+ - layer-discipline-direct-guards
+ test/typecheck/cases/ill-kind-app-argument-tope.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- A universe kind cannot be passed where a type is expected: the guard is+-- at the application, since at formation time the parameter is opaque.+#define diag (X : U) : U := Σ (p : X) , Unit+#define bad : U := diag TOPE
+ test/typecheck/cases/ill-kind-define-tope.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "a definition at type U must be a type, got the tope universe"+regression_for:+ - layer-discipline-direct-guards
+ test/typecheck/cases/ill-kind-define-tope.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++-- A definition at type U must define a type; a universe-kind body would be+-- a synonym smuggling the kind into every position that accepts U.+#define A : U := TOPE
+ test/typecheck/cases/ill-kind-id-carrier-tope.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "the carrier of an identity type must be a type, got the tope universe"+regression_for:+ - layer-discipline-direct-guards
+ test/typecheck/cases/ill-kind-id-carrier-tope.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- No identity types over the tope universe: TOPE is not a type.+#define e : U := (TOP /\ TOP) =_{TOPE} TOP
+ test/typecheck/cases/ill-kind-sigma-body-tope.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "a Σ component must be a type, got the tope universe"+regression_for:+ - layer-discipline-direct-guards
+ test/typecheck/cases/ill-kind-sigma-body-tope.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- The second component is checked too.+#define A : U := Σ (x : Unit) , TOPE
+ test/typecheck/cases/ill-kind-sigma-cube-universe.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "a Σ component must be a type, got the cube universe"+regression_for:+ - layer-discipline-direct-guards
+ test/typecheck/cases/ill-kind-sigma-cube-universe.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- The cube universe cannot be a Σ component.+#define A : U := Σ (I : CUBE) , Unit
+ test/typecheck/cases/ill-kind-sigma-tope-family.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "a Σ component must be a type, got a tope family"+regression_for:+ - layer-discipline-direct-guards
+ test/typecheck/cases/ill-kind-sigma-tope-family.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- A tope family cannot be a Σ component.+#define A : U := Σ (phi : 2 -> TOPE) , Unit
+ test/typecheck/cases/ill-kind-sigma-tope.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "a Σ component must be a type, got the tope universe"+regression_for:+ - layer-discipline-direct-guards
+ test/typecheck/cases/ill-kind-sigma-tope.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++-- The tope universe cannot be a Σ component: it would store topes as data.+#define A : U := Σ (p : TOPE) , Unit
+ test/typecheck/cases/ill-match-modal-hit.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "modal match is not supported for higher inductive types"+regression_for:+ - modal-match-rejects-higher-inductive-types
+ test/typecheck/cases/ill-match-modal-hit.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++#data S1 := base | loop : base =_{S1} base++#define modal-match-hit (x :_b S1) : Unit+ := match _b x+ (base => unit+ | loop => unit)
+ test/typecheck/cases/ill-match-modal-ih-remodalized.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorUnaccessibleVar+message_contains:+ - ih+regression_for:+ - a modal match changes constructor-field modalities but not the modality of an induction hypothesis
+ test/typecheck/cases/ill-match-modal-ih-remodalized.rzk view
@@ -0,0 +1,10 @@+#lang rzk-1++#data Nat := zero | suc (pred : Nat)++#define modal-match-ih-remodalized+ (x :_b Nat)+ : Unit+ := match _b x+ ( zero => unit+ | suc pred ih => let _b copy := ih in unit)
+ test/typecheck/cases/ill-match-modal-inaccessible.expect.yaml view
@@ -0,0 +1,8 @@+status: error+error_tag: TypeErrorUnaccessibleVar+message_contains:+ - "variable x is inaccessible"+ - "declared modality: _id"+ - "current locks: ♭"+regression_for:+ - modal-match-scrutinee-accessibility
+ test/typecheck/cases/ill-match-modal-inaccessible.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++#data ModalMatch := mm (point : 2)++-- A plain variable is not available under Flat, so it cannot be the+-- scrutinee of `match _b`.+#define modal-match-inaccessible (x : ModalMatch) : Unit+ := match _b x (mm point => unit)
+ test/typecheck/cases/ill-match-modal-motive.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorModalityMismatch+message_contains:+ - "modality mismatch"+regression_for:+ - modal-match-motive-binder-modality
+ test/typecheck/cases/ill-match-modal-motive.rzk view
@@ -0,0 +1,9 @@+#lang rzk-1++#data D := c++#define bad-modal-motive+ (x :_b D)+ : Unit+ := match _b x into (\ (_ : D) -> Unit)+ (c => unit)
+ test/typecheck/cases/ill-match-modal-sharp.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "modal match is not supported for ♯"+regression_for:+ - modal-data-no-sharp-eliminators
+ test/typecheck/cases/ill-match-modal-sharp.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++-- There is no modal match for ♯: as a right adjoint it does not preserve+-- coproducts, and an eliminator rec-sharp-Bool would retract ♯ Bool onto Bool.+#data Bool := false | true++#define retract (b :_# Bool) : Bool+ := match _# b (false => false | true => true)
test/typecheck/cases/ill-modal-b-no-dist.expect.yaml view
@@ -1,4 +1,4 @@ status: error error_tag: TypeErrorUnaccessibleVar message_contains:- - "unaccessible var with modality"+ - "is inaccessible in the current modal context"
test/typecheck/cases/ill-modal-not-modal.expect.yaml view
@@ -1,4 +1,6 @@ status: error error_tag: TypeErrorNotModal message_contains:- - "expected modal type"+ - "cannot eliminate a non-modal value"+ - "value: x"+ - "type: A"
+ test/typecheck/cases/ill-rstt-auxiliary-interval.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - auxiliary interval+regression_for:+ - rstt-excludes-auxiliary-interval
+ test/typecheck/cases/ill-rstt-auxiliary-interval.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1+#set-option "rstt-safe" = "error"+#def auxiliary : CUBE := II
+ test/typecheck/cases/ill-rstt-boundary-obligation.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorUnifyTerms+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-boundary-obligation.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1+#set-option "rstt-safe" = "error"+#def boundary-obligation (A : U) (a b : A)+ ((s, t) : 2 * 2 | s === 0_2 /\ t === 0_2)+ : A [s === t ↦ a] := b
+ test/typecheck/cases/ill-rstt-dependent-cube-family.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - cube domain+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-dependent-cube-family.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def dependent (I : 2 → CUBE) (s : 2)+ (A : (t : I s) → U) : Unit := unit
+ test/typecheck/cases/ill-rstt-dependent-cube-instance.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - cube domain+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-dependent-cube-instance.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def functions (I : CUBE) : U := (t : I) → Unit+#def dependent (I : 2 → CUBE) (s : 2)+ (f : functions (I s)) : Unit := unit
+ test/typecheck/cases/ill-rstt-dependent-cube.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - cube domain+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-dependent-cube.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def dependent (I : 2 → CUBE) (s : 2)+ (f : (t : I s) → Unit) : Unit := unit
+ test/typecheck/cases/ill-rstt-false-bottom.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-false-bottom.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def false-proof (A : U) : A := recBOT
+ test/typecheck/cases/ill-rstt-false-refl.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorUnifyTerms+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-false-refl.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def false-path (A : U) (a b : A) : a = b := refl
+ test/typecheck/cases/ill-rstt-inductive.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - inductive declaration+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-inductive.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#data bool := false | true
+ test/typecheck/cases/ill-rstt-meta-binder-in-face.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - schematic binder+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-meta-binder-in-face.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def missed (A : U) (a : A)+ : (t : 2) → A [t === ((\ (B : U) → 0_2) A) ↦ a]+ := \ t → a
+ test/typecheck/cases/ill-rstt-meta-binder.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - schematic binder+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-meta-binder.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def nested (A : U) (a : A) : A+ := (\ (B : U) (b : B) → b) A a
+ test/typecheck/cases/ill-rstt-meta-prefix.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - unsaturated schematic parameters+regression_for:+ - rstt-error-propagates-through-meta-prefix-traversal
+ test/typecheck/cases/ill-rstt-meta-prefix.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1+#set-option "rstt-safe" = "error"+#set-option "warn-meta-prefix" = "off"+#def my-id (X : U) (x : X) : X := x+#def stash : Σ (h : (X : U) → X → X), Unit := (my-id, unit)
+ test/typecheck/cases/ill-rstt-modal.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - modal type+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-modal.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def sharp-pure (A : U) (a : A) : _# A := mod _# a
+ test/typecheck/cases/ill-rstt-option.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - unknown rstt-safe mode+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-option.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#set-option "rstt-safe" = "yes"
+ test/typecheck/cases/ill-rstt-packed-cube-family.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - "a Σ component must be a type, got a cube family"+regression_for:+ - rstt-safe-mode+ - layer-discipline-direct-guards
+ test/typecheck/cases/ill-rstt-packed-cube-family.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+-- The layer discipline rejects a cube family as a Σ component in every mode,+-- before RSTT-safe mode sees the binder.+#def pack : Σ (F : CUBE → CUBE), Unit := ((\ I → I), unit)
+ test/typecheck/cases/ill-rstt-packed-type-family.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - schematic binder+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-packed-type-family.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def pack : Σ (F : U → U), Unit := ((\ A → A), unit)
+ test/typecheck/cases/ill-rstt-postulate.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - free-standing restriction+regression_for:+ - rstt-postulate-is-an-assumption
+ test/typecheck/cases/ill-rstt-postulate.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1+#set-option "rstt-safe" = "error"+#postulate restricted (A : U) (a : A) : A [TOP ↦ a]
+ test/typecheck/cases/ill-rstt-restriction-in-domain.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - free-standing restriction+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-restriction-in-domain.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def missed (A : U) (a : A)+ : (t : 2 | ((\ (x : A [TOP ↦ a]) → 0_2) a) === 0_2) → A+ := \ t → a
+ test/typecheck/cases/ill-rstt-restriction.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - free-standing restriction+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-restriction.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#set-option "warn-free-standing-restriction" = "no"+#def assumed (A : U) (a : A) (f : (A [TOP ↦ a]) → A) : A := f a
+ test/typecheck/cases/ill-rstt-shape-boundary.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - restriction boundary+ - outer cube points+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-shape-boundary.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#postulate mixed (A : U) (a : A) (s : 2)+ (f : (t : 2) → A [t === s ↦ a]) : Unit
+ test/typecheck/cases/ill-rstt-shape-domain.expect.yaml view
@@ -0,0 +1,7 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - shape domain+ - outer cube points+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-shape-domain.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def mixed (s : 2) : (t : 2 | t <= s) → Unit := \ t → unit
+ test/typecheck/cases/ill-rstt-uncovered-endpoints.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-rstt-uncovered-endpoints.rzk view
@@ -0,0 +1,5 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#def uncovered (A : U) (a : A) (t : 2) : A :=+ recOR (t === 0_2 ↦ a, t === 1_2 ↦ a)
+ test/typecheck/cases/ill-rstt-unsupported.expect.yaml view
@@ -0,0 +1,8 @@+status: error+error_tag: TypeErrorRSTT+message_contains:+ - cube supremum (sup)+line: 4+column: 23+regression_for:+ - rstt-safe-syntax-allow-list
+ test/typecheck/cases/ill-rstt-unsupported.rzk view
@@ -0,0 +1,4 @@+#lang rzk-1+#set-option "rstt-safe" = "error"+#def discard (i : 2) : Unit :=+ (\ (j : 2) → unit) (sup i 1_2)
+ test/typecheck/cases/ill-shape-dependency-option.expect.yaml view
@@ -0,0 +1,6 @@+status: error+error_tag: TypeErrorOther+message_contains:+ - unknown value for "warn-shape-dependency"+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/ill-shape-dependency-option.rzk view
@@ -0,0 +1,3 @@+#lang rzk-1++#set-option "warn-shape-dependency" = "off"
+ test/typecheck/cases/ill-tope-family-domain-non-instance.expect.yaml view
@@ -0,0 +1,8 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+message_contains:+ - "local context"+ - "entails"+line: 17+regression_for:+ - tope-family-domain-conjunct-elaboration
+ test/typecheck/cases/ill-tope-family-domain-non-instance.rzk view
@@ -0,0 +1,17 @@+#lang rzk-1++-- A family χ : ψ → TOPE is read together with its domain where it is applied:+-- the binder (t : χ) carries ψ t ∧ χ t. Passed to `wider`, it is read without+-- the domain. For a family variable the two readings agree, so `coerce` is+-- accepted. The instantiation ψ := ⊥, χ := ⊤ violates the inclusion, and+-- without the domain conjunct on the concrete family `bad` inhabited every+-- type. It must be rejected.++#def wider (I : CUBE) (φ : I → TOPE) (A : U) : U := (t : φ) → A++#def coerce (I : CUBE) (ψ : I → TOPE) (χ : ψ → TOPE) (A : U) (f : (t : χ) → A)+ : wider I χ A+ := f++#def bad (A : U) : A+ := coerce 2 (\ t → BOT) (\ t → TOP) A (\ t → recBOT) 0₂
+ test/typecheck/cases/ill-tope-family-domain-same-domain.expect.yaml view
@@ -0,0 +1,5 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+line: 14+regression_for:+ - tope-family-domain-conjunct-elaboration
+ test/typecheck/cases/ill-tope-family-domain-same-domain.rzk view
@@ -0,0 +1,14 @@+#lang rzk-1++-- Control for ill-tope-family-domain-non-instance: with a callee parameter of+-- the same domain ψ, both readings carry ψ t ∧ φ t, and `bad` is rejected+-- independently of the domain conjunct on concrete families.++#def same (I : CUBE) (ψ : I → TOPE) (φ : ψ → TOPE) (A : U) : U := (t : φ) → A++#def coerce (I : CUBE) (ψ : I → TOPE) (χ : ψ → TOPE) (A : U) (f : (t : χ) → A)+ : same I ψ χ A+ := f++#def bad (A : U) : A+ := coerce 2 (\ t → BOT) (\ t → TOP) A (\ t → recBOT) 0₂
+ test/typecheck/cases/ill-tope-param-entailment.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+regression_for:+ - bare-tope-parameter
+ test/typecheck/cases/ill-tope-param-entailment.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++-- Bare tope parameters are opaque: psi does not entail an unrelated chi.+#define bad+ ( psi chi : TOPE) (A : U) (f : (t : 2 | chi) -> A)+ : (t : 2 | psi) -> A+ := \ t -> f t
+ test/typecheck/cases/ill-tope-param-instance.expect.yaml view
@@ -0,0 +1,4 @@+status: error+error_tag: TypeErrorTopeNotSatisfied+regression_for:+ - bare-tope-parameter
+ test/typecheck/cases/ill-tope-param-instance.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++-- Instantiating a bare tope parameter keeps the restriction: a function on+-- the shape t === 0_2 cannot be applied at an arbitrary point.+#define const-on (psi : TOPE) (A : U) (a : A) : (t : 2 | psi) -> A := \ _ -> a++#define bad (A : U) (a : A) (t : 2) : A := const-on (t === 0_2) A a t
− test/typecheck/cases/ill-tope-param-lambda.expect.yaml
@@ -1,6 +0,0 @@-status: error-error_tag: TypeErrorOther-message_contains:- - "tope params are illegal"-regression_for:- - lambda-TOPE-param-forbidden
− test/typecheck/cases/ill-tope-param-lambda.rzk
@@ -1,3 +0,0 @@-#lang rzk-1--#define bad : (p : TOPE) -> U := \ p -> U
− test/typecheck/cases/ill-tope-param-typefun.expect.yaml
@@ -1,6 +0,0 @@-status: error-error_tag: TypeErrorOther-message_contains:- - "tope params are illegal"-regression_for:- - TypeFun-TOPE-domain-forbidden
− test/typecheck/cases/ill-tope-param-typefun.rzk
@@ -1,3 +0,0 @@-#lang rzk-1--#define bad (phi : TOPE) : U := U
+ test/typecheck/cases/warn-free-standing-restriction-assumed.expect.yaml view
@@ -0,0 +1,13 @@+status: ok+warnings:+ - FreeStandingRestrictionWarning+ - FreeStandingRestrictionWarning+ - FreeStandingRestrictionWarning+ - FreeStandingRestrictionWarning+ - FreeStandingRestrictionWarning+ - FreeStandingRestrictionWarning+ - FreeStandingRestrictionWarning+ - FreeStandingRestrictionWarning+ - FreeStandingRestrictionWarning+regression_for:+ - free-standing-restriction-warning
+ test/typecheck/cases/warn-free-standing-restriction-assumed.rzk view
@@ -0,0 +1,41 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"++-- A restriction is ext-style when it sits on the codomain of a shape-Π.+-- Conservativity over RSTT covers the derivations that conclude a+-- free-standing restriction but never assume one, so the checker reports the+-- assumed positions: a binder, an eliminator motive, a type passed as data.++#def at-binder (A : U) (x : A) (f : (A [TOP ↦ x]) → A) : A+ := f x++-- The motive of idJ: the eliminator binds its variables at it.+#def at-motive (A : U) (x : A) (p : x =_{A} x) : A [TOP ↦ x]+ := idJ (A , x , (\ _ _ → A [TOP ↦ x]) , x , x , p)++-- Passed as data at a U-valued parameter, then substituted into a motive.+#def generic-J (A : U) (x : A) (C : (z : A) → (x =_{A} z) → U) (d : C x refl)+ ( y : A) (p : x =_{A} y)+ : C y p+ := idJ (A , x , C , d , y , p)++#def at-data (A : U) (x : A) (p : x =_{A} x) : A [TOP ↦ x]+ := generic-J A x (\ _ _ → A [TOP ↦ x]) x x p++-- A definition at U whose body is a type: data as well.+#def at-universe (A : U) (x : A) : U+ := A [TOP ↦ x]++-- The type of an identity type, which types its endpoints: Def. 5.7 of the+-- paper does not reach a restriction there.+#def at-identity (A : U) (x : A) (y : A [TOP ↦ x]) : U+ := y =_{A [TOP ↦ x]} y++-- The motive of a generated eliminator, passed at its U-valued parameter.+#data bool := false | true++#def at-eliminator (A : U) (x : A) (b : bool) : A [TOP ↦ x]+ := ind-bool (\ _ → A [TOP ↦ x]) x x b
+ test/typecheck/cases/warn-free-standing-restriction-option.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+ - FreeStandingRestrictionWarning+regression_for:+ - free-standing-restriction-warning
+ test/typecheck/cases/warn-free-standing-restriction-option.rzk view
@@ -0,0 +1,20 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"++-- The report is controlled by warn-free-standing-restriction; what the+-- checker accepts does not change.++#def quietly (A : U) (x : A) : U+ := A [TOP ↦ x]++#set-option "warn-free-standing-restriction" = "yes"++#def reported (A : U) (x : A) : U+ := A [TOP ↦ x]++#unset-option "warn-free-standing-restriction"++#def reset-quietly (A : U) (x : A) : U+ := A [TOP ↦ x]
+ test/typecheck/cases/warn-meta-binder-inside-term.expect.yaml view
@@ -0,0 +1,7 @@+status: ok+warnings:+ - MetaBinderWarning+ - MetaBinderWarning+ - MetaBinderWarning+regression_for:+ - meta-binder-warning
+ test/typecheck/cases/warn-meta-binder-inside-term.rzk view
@@ -0,0 +1,45 @@+#lang rzk-1++-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"++-- Schematic parameters are bound in a declaration's parameter prefix, so+-- that a declaration is a family of object-theory statements, one per+-- instantiation. A λ inside a term that binds a universe, a cube or a tope+-- family is outside that reading; it is reported when asked for.++#set-option "warn-meta-binder" = "yes"++-- Leading λs are the declaration's own parameters: silent.+#def my-id : (X : U) → X → X+ := \ X x → x++#def at-universe (A : U) (a : A) : A+ := (\ (B : U) → \ (b : B) → b) A a++#def at-cube (A : U) (a : A) : A+ := (\ (J : CUBE) → a) 2++#def at-tope-family (I : CUBE) (A : U) (a : A) : A+ := (\ (φ : I → TOPE) → a) (\ t → TOP)++-- A schema defined by recursion on a schematic index: the case split has to+-- come first, so the remaining parameters are bound in its branches. Both the+-- index and the universe are in the meta prefix, so uses supply them; silent.+#data nat := zero | suc (n : nat)++#def Schematic (n : nat) : U+ := ( A : U) → A → A++#def by-index (n : nat) : Schematic n+ := match n+ ( zero ⇒ \ A a → a+ | suc _ ih ⇒ \ A a → ih (A → A) (\ x → x) a)++-- Supplying a schema at a schematic parameter is the plumbing the+-- meta-prefix check allows; silent.+#def takes-schema (h : (A : U) → A → A) (B : U) (b : B) : B+ := h B b++#def supplies-schema (B : U) (b : B) : B+ := takes-schema (\ A a → a) B b
test/typecheck/cases/warn-meta-prefix-object-position.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- my-id has meta prefix X (a universe parameter). #define my-id (X : U) (x : X) : X := x
test/typecheck/cases/warn-meta-prefix-option-structural.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #set-option "warn-meta-prefix" = "structural" #define my-id (X : U) (x : X) : X := x
test/typecheck/cases/warn-meta-prefix-section.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ -- Closing the section abstracts T out of use-T, whose type becomes -- (T : U) → U: the meta prefix must be recomputed at #end. #section sec
test/typecheck/cases/warn-meta-prefix-strict-only.rzk view
@@ -1,5 +1,8 @@ #lang rzk-1 +-- Exercise standalone diagnostics independently of the safe-mode bundle.+#set-option "rstt-safe" = "off"+ #define my-id (X : U) (x : X) : X := x -- Passing the unsaturated schema to a local parameter whose declared type
+ test/typecheck/cases/warn-overhang-controls.expect.yaml view
@@ -0,0 +1,7 @@+status: ok+warnings:+ - OverhangWarning+regression_for:+ - structured-overhang-recOR-silent-verbosity+ - warn-overhang-disable-and-reset+ - overhang-entailment-direction
+ test/typecheck/cases/warn-overhang-controls.rzk view
@@ -0,0 +1,13 @@+#lang rzk-1++-- Disabling and unsetting restore silence; a contained face stays silent.+#set-option "warn-overhang" = "yes"+#set-option "verbosity" = "silent"+#def contained (t : 2 | t === 0_2) : Unit [t === 0_2 |-> unit] := unit+#def split (t : 2 | t === 0_2) : Unit+ := recOR ((t === 0_2) \/ (t === 1_2) |-> unit)+#set-option "warn-overhang" = "no"+#def disabled (t : 2 | t === 0_2) : Unit [TOP |-> unit] := unit+#set-option "warn-overhang" = "yes"+#unset-option "warn-overhang"+#def reset (t : 2 | t === 0_2) : Unit [TOP |-> unit] := unit
+ test/typecheck/cases/warn-rstt-bare-tope-binder-in-term.expect.yaml view
@@ -0,0 +1,7 @@+status: ok+warnings:+ - MetaBinderWarning+ - MetaBinderWarning+regression_for:+ - rstt-safe-mode+ - bare-tope-parameter
+ test/typecheck/cases/warn-rstt-bare-tope-binder-in-term.rzk view
@@ -0,0 +1,11 @@+#lang rzk-1++-- A TOPE binder inside a term is a meta binder in an object position, as+-- for a tope family: once inside data, once in a redex.+#set-option "rstt-safe" = "warn"++#define in-pair (A : U) (a : A) : A+ := first ((a , \ psi -> a) as Σ (x : A) , ((psi : TOPE) -> A))++#define in-redex (A : U) (a : A) : A+ := (\ (psi : TOPE) -> a) TOP
+ test/typecheck/cases/warn-rstt-bare-tope-object-point.expect.yaml view
@@ -0,0 +1,6 @@+status: ok+warnings:+ - RSTTShapeDependencyWarning+regression_for:+ - rstt-safe-mode+ - bare-tope-parameter
+ test/typecheck/cases/warn-rstt-bare-tope-object-point.rzk view
@@ -0,0 +1,10 @@+#lang rzk-1++-- A bare tope parameter is a meta parameter, like (psi : 1 -> TOPE): an+-- instance that mentions an object-level point is outside RSTT.+#set-option "rstt-safe" = "warn"++#define const-on (psi : TOPE) (A : U) (a : A) : (t : 2 | psi) -> A := \ _ -> a++#define at-point (s : 2) (A : U) (a : A) : (t : 2 | s === 0_2) -> A+ := const-on (s === 0_2) A a
+ test/typecheck/cases/warn-rstt-default.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/warn-rstt-default.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++-- RSTT-safe mode is off by default: the schematic binder inside the body+-- passes silently.+#set-option "warn-meta-binder" = "no"+#set-option "warn-meta-prefix" = "off"+#def nested (A : U) (a : A) : A+ := (\ (B : U) (b : B) → b) A a
+ test/typecheck/cases/warn-rstt-escape-beta.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+ - FreeStandingRestrictionWarning+regression_for:+ - rstt-restriction-escape-beta
+ test/typecheck/cases/warn-rstt-escape-beta.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- Audit S2 alone: report the introduction, not an unfolded use site.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"+#def beta (A : U) (a : A) : U := (\ (X : U) → X) (A [TOP ↦ a])
+ test/typecheck/cases/warn-rstt-escape-iota.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+ - FreeStandingRestrictionWarning+regression_for:+ - rstt-restriction-escape-iota
+ test/typecheck/cases/warn-rstt-escape-iota.rzk view
@@ -0,0 +1,8 @@+#lang rzk-1++-- Audit S2 alone: report the introduction, not an unfolded use site.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"+#data nat := zero | suc (n : nat)+#def via-match (A : U) (a : A) (n : nat) : U+ := match n (zero ⇒ Unit | suc k ih ⇒ A [TOP ↦ a])
+ test/typecheck/cases/warn-rstt-escape-let.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+ - FreeStandingRestrictionWarning+regression_for:+ - rstt-restriction-escape-let
+ test/typecheck/cases/warn-rstt-escape-let.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- Audit S2 alone: report the introduction, not an unfolded use site.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"+#def via-let (A : U) (a : A) : U := let X := A [TOP ↦ a] in X
+ test/typecheck/cases/warn-rstt-escape-pair.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+ - FreeStandingRestrictionWarning+regression_for:+ - rstt-restriction-escape-pair
+ test/typecheck/cases/warn-rstt-escape-pair.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- Audit S2 alone: report the introduction, not an unfolded use site.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"+#def via-pair (A : U) (a : A) : U := first ((A [TOP ↦ a], unit) as Σ (X : U), Unit)
+ test/typecheck/cases/warn-rstt-escape-section.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+ - FreeStandingRestrictionWarning+regression_for:+ - rstt-restriction-escape-section
+ test/typecheck/cases/warn-rstt-escape-section.rzk view
@@ -0,0 +1,11 @@+#lang rzk-1++-- Audit S2 alone: report the introduction, not an unfolded use site.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"+#section assumptions+#assume A : U+#assume a : A+#assume x : A [TOP ↦ a]+#def use uses (a) : A := x+#end assumptions
+ test/typecheck/cases/warn-rstt-escape-tope-family.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+ - FreeStandingRestrictionWarning+regression_for:+ - rstt-restriction-escape-tope-family
+ test/typecheck/cases/warn-rstt-escape-tope-family.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++-- Audit S2 alone: report the introduction, not an unfolded use site.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"+#def family (A : U) (a : A) : 2 → U := \ t → A [t === 0_2 ↦ a]
+ test/typecheck/cases/warn-rstt-escape-unfolding.expect.yaml view
@@ -0,0 +1,6 @@+status: ok+warnings:+ - FreeStandingRestrictionWarning+ - FreeStandingRestrictionWarning+regression_for:+ - rstt-restriction-escape-unfolding
+ test/typecheck/cases/warn-rstt-escape-unfolding.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++-- Audit S2 alone: report both the introduction and its unfolded use.+#set-option "rstt-safe" = "off"+#set-option "warn-free-standing-restriction" = "yes"+#def restricted (A : U) (a : A) : U := A [TOP ↦ a]+#postulate use (A : U) (a : A) (x : restricted A a) : A
+ test/typecheck/cases/warn-rstt-inductive.expect.yaml view
@@ -0,0 +1,6 @@+status: ok+warnings:+ - RSTTInductiveWarning+ - RSTTInductiveWarning+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/warn-rstt-inductive.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "warn"++#data bool := false | true+#def choose (b : bool) : bool := match b (false ⇒ true | true ⇒ false)
+ test/typecheck/cases/warn-rstt-modal.expect.yaml view
@@ -0,0 +1,8 @@+status: ok+warnings:+ - RSTTModalWarning+ - RSTTModalWarning+ - RSTTModalWarning+ - RSTTModalWarning+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/warn-rstt-modal.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "warn"++#def sharp-pure (A : U) (a : A) : _# A := mod _# a+#def crisp (A :_b U) (a :_b A) : A := a
+ test/typecheck/cases/warn-rstt-reset.expect.yaml view
@@ -0,0 +1,4 @@+status: ok+warnings: []+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/warn-rstt-reset.rzk view
@@ -0,0 +1,6 @@+#lang rzk-1++#set-option "rstt-safe" = "error"+#unset-option "rstt-safe"+#def nested (A : U) (a : A) : A+ := (\ (B : U) (b : B) → b) A a
+ test/typecheck/cases/warn-rstt-shape-dependency.expect.yaml view
@@ -0,0 +1,11 @@+status: ok+warnings:+ - RSTTShapeDependencyWarning+ - RSTTShapeDependencyWarning+ - RSTTShapeDependencyWarning+ - RSTTShapeDependencyWarning+ - RSTTShapeDependencyWarning+ - RSTTShapeDependencyWarning+ - RSTTShapeDependencyWarning+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/warn-rstt-shape-dependency.rzk view
@@ -0,0 +1,27 @@+#lang rzk-1++#set-option "rstt-safe" = "warn"++-- A mixed face fails even when the inner domain is the whole cube.+#postulate mixed-boundary (A : U) (a : A) (s : 2)+ (f : (t : 2) → A [t === s ↦ a]) : Unit++-- An outer point in the domain is forbidden even without a restriction.+#postulate mixed-domain (A : U) (s : 2)+ (f : (t : 2 | t <= s) → A) : Unit++-- Different cubes can be related by a schematic tope family.+#postulate distinct-cubes (I J : CUBE) (φ : I → J → TOPE)+ (s : I) (f : (t : J) → Unit [φ s t ↦ unit]) : Unit++-- A product-pattern binder does not hide its dependency from an inner binder.+#postulate outer-product (A : U) (a : A) ((s, u) : 2 * 2)+ (f : (t : 2) → A [t === s ↦ a]) : Unit++-- A domain may occur only in a nested lambda's inferred type.+#def nested (s : 2) : Unit := (\ (t : 2 | t <= s) → unit) 0_2++-- A local tope-family alias must not hide an outer cube point.+#def alias (s : 2) : U :=+ let face : 2 → TOPE := \ t → t === s in+ (t : 2) → Unit [face t ↦ unit]
+ test/typecheck/cases/warn-rstt-warn-overrides-standalone.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+ - MetaBinderWarning+regression_for:+ - rstt-safe-mode
+ test/typecheck/cases/warn-rstt-warn-overrides-standalone.rzk view
@@ -0,0 +1,7 @@+#lang rzk-1++#set-option "rstt-safe" = "warn"+#set-option "warn-meta-binder" = "no"+#set-option "warn-meta-prefix" = "off"+#def nested (A : U) (a : A) : A+ := (\ (B : U) (b : B) → b) A a
+ test/typecheck/cases/warn-tope-family-domain-non-instance.expect.yaml view
@@ -0,0 +1,6 @@+status: ok+warnings:+ - TopeFamilyDomainWarning+ - TopeFamilyDomainWarning+regression_for:+ - tope-family-domain-warning
+ test/typecheck/cases/warn-tope-family-domain-non-instance.rzk view
@@ -0,0 +1,22 @@+#lang rzk-1++-- A concrete family not included in its declared domain is read as its+-- intersection with the domain (happy-tope-family-domain-instance), so the+-- family checked differs from the family written, and the checker says so.++#def over-domain (I : CUBE) (ψ : I → TOPE) (χ : ψ → TOPE) (A : U) : U+ := (t : χ) → A++-- ⊤ over the domain ⊥ is read as ⊥ ∧ ⊤.+#def instantiate (I : CUBE) (A : U) : U+ := over-domain I (\ t → BOT) (\ t → TOP) A++-- In a parameter type, the family is elaborated twice and reported once.+#def from-instantiated (I : CUBE) (A : U) (f : over-domain I (\ t → BOT) (\ t → TOP) A)+ : (t : I | BOT) → A+ := f++-- t ≡ 0₂ over the domain t ≡ 0₂ ∨ t ≡ 1₂ is included; silent.+#def endpoint (A : U) (a : A)+ : over-domain 2 (\ t → t ≡ 0₂ ∨ t ≡ 1₂) (\ t → t ≡ 0₂) A+ := \ t → a
+ test/typecheck/cases/warn-tope-family-domain-option.expect.yaml view
@@ -0,0 +1,5 @@+status: ok+warnings:+ - TopeFamilyDomainWarning+regression_for:+ - tope-family-domain-warning
+ test/typecheck/cases/warn-tope-family-domain-option.rzk view
@@ -0,0 +1,19 @@+#lang rzk-1++-- The warning is controlled by warn-tope-family-domain. The family is read as+-- its intersection with the domain either way.++#def over-domain (I : CUBE) (ψ : I → TOPE) (χ : ψ → TOPE) (A : U) : U+ := (t : χ) → A++#set-option "warn-tope-family-domain" = "no"++-- Silent.+#def instantiate-quietly (I : CUBE) (A : U) : U+ := over-domain I (\ t → BOT) (\ t → TOP) A++#unset-option "warn-tope-family-domain"++-- Reported again.+#def instantiate (I : CUBE) (A : U) : U+ := over-domain I (\ t → BOT) (\ t → TOP) A