eo-phi-normalizer 0.4.1 → 1.0.0
raw patch · 50 files changed
+24484/−15144 lines, 50 filesdep +containersdep +hashabledep +unordered-containers
Dependencies added: containers, hashable, unordered-containers
Files
- CHANGELOG.md +25/−0
- app/Main.hs +53/−13
- data/0.38.0/org/eolang/int.phi +0/−0
- data/0.38.4/org/eolang/as-phi.phi +14/−0
- data/0.38.4/org/eolang/bytes.phi +107/−0
- data/0.38.4/org/eolang/cage.phi +28/−0
- data/0.38.4/org/eolang/cti.phi +16/−0
- data/0.38.4/org/eolang/dataized.phi +14/−0
- data/0.38.4/org/eolang/error.phi +14/−0
- data/0.38.4/org/eolang/false.phi +33/−0
- data/0.38.4/org/eolang/float.phi +142/−0
- data/0.38.4/org/eolang/go.phi +69/−0
- data/0.38.4/org/eolang/int.phi +86/−0
- data/0.38.4/org/eolang/io/stdin.phi +21/−0
- data/0.38.4/org/eolang/io/stdout.phi +17/−0
- data/0.38.4/org/eolang/malloc.phi +95/−0
- data/0.38.4/org/eolang/nan.phi +62/−0
- data/0.38.4/org/eolang/negative-infinity.phi +246/−0
- data/0.38.4/org/eolang/positive-infinity.phi +246/−0
- data/0.38.4/org/eolang/rust.phi +16/−0
- data/0.38.4/org/eolang/seq.phi +65/−0
- data/0.38.4/org/eolang/string.phi +28/−0
- data/0.38.4/org/eolang/switch.phi +73/−0
- data/0.38.4/org/eolang/true.phi +33/−0
- data/0.38.4/org/eolang/try.phi +16/−0
- data/0.38.4/org/eolang/tuple.phi +128/−0
- data/0.38.4/org/eolang/while.phi +64/−0
- eo-phi-normalizer.cabal +41/−1
- grammar/EO/Phi/Syntax.cf +16/−5
- src/Language/EO/Phi/Dataize.hs +156/−104
- src/Language/EO/Phi/Normalize.hs +1/−0
- src/Language/EO/Phi/Pipeline/Config.hs +9/−0
- src/Language/EO/Phi/Pipeline/Dataize/PrintConfigs.hs +32/−0
- src/Language/EO/Phi/Rules/Common.hs +16/−20
- src/Language/EO/Phi/Rules/Fast.hs +1/−14
- src/Language/EO/Phi/Rules/RunYegor.hs +20/−0
- src/Language/EO/Phi/Rules/Yaml.hs +204/−13
- src/Language/EO/Phi/Syntax/Abs.hs +30/−5
- src/Language/EO/Phi/Syntax/Lex.hs +20830/−13834
- src/Language/EO/Phi/Syntax/Lex.x +40/−14
- src/Language/EO/Phi/Syntax/Par.hs +1231/−1063
- src/Language/EO/Phi/Syntax/Par.y +53/−25
- src/Language/EO/Phi/Syntax/Print.hs +23/−6
- src/Language/EO/Phi/Syntax/Skel.hs +32/−7
- src/Language/EO/Phi/TH.hs +1/−1
- src/Language/EO/Phi/ToLaTeX.hs +1/−0
- test/Language/EO/Phi/DataizeSpec.hs +2/−2
- test/Language/EO/PhiSpec.hs +2/−1
- test/Language/EO/Rules/PhiPaperSpec.hs +14/−3
- test/Language/EO/YamlSpec.hs +18/−13
CHANGELOG.md view
@@ -6,6 +6,31 @@ and this project adheres to the [Haskell Package Versioning Policy](https://pvp.haskell.org/). +## v1.0.0 - 2024-07-19++### New++- Align reductions from application to `⊥` with the paper ([#418](https://github.com/objectionary/normalizer/pull/418), [#435](https://github.com/objectionary/normalizer/pull/435))+- Support enabling/disabling particular atoms ([#426](https://github.com/objectionary/normalizer/pull/426))+- Support custom rules ([#432](https://github.com/objectionary/normalizer/pull/432))+ - Test ruleset `streams.yaml` with the example rule equipped with a passing test, matching <https://github.com/objectionary/normalizer/issues/423#issue-2366637410>+ - Allow rules to go inside abstract objects (and add explicit `apply_in_abstract_subformations` option to maintain correctness for `yegor.yaml` rules)+ - Support tail patterns (restricted one-hole contexts)+ - Matching against objects inside dispatch+ - Matching against objects inside application (left only)+ - Properly generate fresh names+ - Allow explicit `forall` to keep track of all metavariables for extra safety (force in the future, see [#441](https://github.com/objectionary/normalizer/issues/441)).+ - Distinguish types of metavariables for extra safety.++### Changes and fixes++- Update decoration rule ([#420](https://github.com/objectionary/normalizer/pull/420))+- Generalize `Φ-dispatch` to rewrite `Φ` instead of `Φ.a` ([#419](https://github.com/objectionary/normalizer/pull/419))++### Documentation and maintenance++- Update EO to 0.38.4 ([#426](https://github.com/objectionary/normalizer/pull/426))+ ## v0.4.1 — 2024-06-12 Changes and fixes:
app/Main.hs view
@@ -46,6 +46,7 @@ import Language.EO.Phi.Metrics.Collect as Metrics (getProgramMetrics) import Language.EO.Phi.Metrics.Data as Metrics (ProgramMetrics (..), splitPath) import Language.EO.Phi.Pipeline.Config+import Language.EO.Phi.Pipeline.Dataize.PrintConfigs import Language.EO.Phi.Pipeline.EOTests.PrepareTests (prepareTests) import Language.EO.Phi.Report.Data (makeProgramReport, makeReport) import Language.EO.Phi.Report.Html (reportCSS, reportJS, toStringReport)@@ -86,6 +87,8 @@ , asPackage :: Bool , minimizeStuckTerms :: Bool , wrapRawBytes :: Bool+ , disabledAtomNames :: [String]+ , enabledAtomNames :: [String] } deriving (Show) @@ -101,9 +104,15 @@ } deriving (Show) -newtype CLI'PreparePipelineTests = CLI'PreparePipelineTests- { configFile :: FilePath- }+data CLI'Pipeline+ = CLI'Pipeline'PrepareTests+ { configFile :: FilePath+ }+ | CLI'Pipeline'PrintDataizeConfigs+ { configFile :: FilePath+ , phiPrefixesToStrip :: [FilePath]+ , singleLine :: Bool+ } deriving (Show) data CLI@@ -111,13 +120,14 @@ | CLI'DataizePhi' CLI'DataizePhi | CLI'MetricsPhi' CLI'MetricsPhi | CLI'ReportPhi' CLI'ReportPhi- | CLI'PreparePipelineTests' CLI'PreparePipelineTests+ | CLI'Pipeline' CLI'Pipeline deriving (Show) data MetavarName = MetavarName { file :: String , int :: String , path :: String+ , atomName :: String } metavarName :: MetavarName@@ -126,12 +136,14 @@ { file = "FILE" , int = "INT" , path = "PATH"+ , atomName = "ATOM_NAME" } data Metavar a b = Metavar { file :: Mod a b , int :: Mod a b , path :: Mod a b+ , atomName :: Mod a b } metavar :: (HasMetavar a) => Metavar a b@@ -140,6 +152,7 @@ { file = Optparse.metavar metavarName.file , int = Optparse.metavar metavarName.int , path = Optparse.metavar metavarName.path+ , atomName = Optparse.metavar metavarName.atomName } newtype OptionName = OptionName@@ -196,7 +209,9 @@ , transform :: Parser CLI'TransformPhi , dataize :: Parser CLI'DataizePhi , report :: Parser CLI'ReportPhi- , preparePipelineTests :: Parser CLI'PreparePipelineTests+ , pipeline :: Parser CLI'Pipeline+ , pipelinePrepareTests :: Parser CLI'Pipeline+ , pipelinePrintDataizeConfigs :: Parser CLI'Pipeline } commandParser :: CommandParser@@ -236,20 +251,34 @@ latex <- latexSwitch asPackage <- asPackageSwitch minimizeStuckTerms <- minimizeStuckTermsSwitch+ disabledAtomNames <- many $ strOption (long "disable-atom" <> metavar.atomName <> help "Disable a particular atom by its name.")+ enabledAtomNames <- many $ strOption (long "enable-atom" <> metavar.atomName <> help "Enable a particular atom by its name.") pure CLI'DataizePhi{..} report = do configFile <- strOption (long "config" <> short 'c' <> metavar.file <> help [fmt|A report configuration {metavarName.file}.|]) pure CLI'ReportPhi{..}- preparePipelineTests = do+ pipelinePrepareTests = do configFile <- strOption (long "config" <> short 'c' <> metavar.file <> help [fmt|A pipeline tests configuration {metavarName.file}.|])- pure CLI'PreparePipelineTests{..}+ pure CLI'Pipeline'PrepareTests{..}+ pipelinePrintDataizeConfigs = do+ configFile <- strOption (long "config" <> short 'c' <> metavar.file <> help [fmt|A pipeline tests configuration {metavarName.file}.|])+ phiPrefixesToStrip <- many $ strOption (long "strip-phi-prefix" <> short 'p' <> metavar.atomName <> help "Remove prefixes in PHI file paths.")+ singleLine <- switch (long "single-line" <> short 'l' <> help [fmt|Output configs on an single line.|])+ pure CLI'Pipeline'PrintDataizeConfigs{..}+ pipeline =+ hsubparser+ ( command commandNames.pipelinePrepareTests commandParserInfo.pipelinePrepareTests+ <> command commandNames.pipelinePrintDataizeConfigs commandParserInfo.pipelinePrintDataizeConfigs+ ) data CommandParserInfo = CommandParserInfo { metrics :: ParserInfo CLI , transform :: ParserInfo CLI , dataize :: ParserInfo CLI , report :: ParserInfo CLI- , preparePipelineTests :: ParserInfo CLI+ , pipeline :: ParserInfo CLI+ , pipelinePrepareTests :: ParserInfo CLI'Pipeline+ , pipelinePrintDataizeConfigs :: ParserInfo CLI'Pipeline } commandParserInfo :: CommandParserInfo@@ -259,7 +288,9 @@ , transform = info (CLI'TransformPhi' <$> commandParser.transform) (progDesc "Transform a PHI program.") , dataize = info (CLI'DataizePhi' <$> commandParser.dataize) (progDesc "Dataize a PHI program.") , report = info (CLI'ReportPhi' <$> commandParser.report) (progDesc "Generate reports about initial and normalized PHI programs.")- , preparePipelineTests = info (CLI'PreparePipelineTests' <$> commandParser.preparePipelineTests) (progDesc "Prepare EO test files for the pipeline.")+ , pipeline = info (CLI'Pipeline' <$> commandParser.pipeline) (progDesc "Run pipeline-related commands.")+ , pipelinePrepareTests = info commandParser.pipelinePrepareTests (progDesc "Prepare EO test files for the pipeline.")+ , pipelinePrintDataizeConfigs = info commandParser.pipelinePrintDataizeConfigs (progDesc "Print configs for the `normalizer dataize` command.") } data CommandNames = CommandNames@@ -267,7 +298,9 @@ , metrics :: String , dataize :: String , report :: String- , preparePipelineTests :: String+ , pipeline :: String+ , pipelinePrepareTests :: String+ , pipelinePrintDataizeConfigs :: String } commandNames :: CommandNames@@ -277,7 +310,9 @@ , metrics = "metrics" , dataize = "dataize" , report = "report"- , preparePipelineTests = "prepare-pipeline-tests"+ , pipeline = "pipeline"+ , pipelinePrepareTests = "prepare-tests"+ , pipelinePrintDataizeConfigs = "print-dataize-configs" } cli :: Parser CLI@@ -287,7 +322,7 @@ <> command commandNames.metrics commandParserInfo.metrics <> command commandNames.dataize commandParserInfo.dataize <> command commandNames.report commandParserInfo.report- <> command commandNames.preparePipelineTests commandParserInfo.preparePipelineTests+ <> command commandNames.pipeline commandParserInfo.pipeline ) cliOpts :: ParserInfo CLI@@ -428,6 +463,7 @@ Termination -> wrapTermination obj@MetaSubstThis{} -> obj obj@MetaObject{} -> obj+ obj@MetaTailContext{} -> obj obj@MetaFunction{} -> obj -- * Main@@ -528,6 +564,7 @@ (defaultContext rules (Formation bindingsWithDeps)) -- IMPORTANT: context contains dependencies! { minimizeTerms = minimizeStuckTerms , builtinRules = builtin+ , enabledAtomNames = mkEnabledAtomNames disabledAtomNames enabledAtomNames } if chain then do@@ -594,6 +631,9 @@ $ \(path, reportString) -> do createDirectoryIfMissing True (takeDirectory path) writeFile path reportString- CLI'PreparePipelineTests' CLI'PreparePipelineTests{..} -> do+ CLI'Pipeline' CLI'Pipeline'PrepareTests{..} -> do config <- decodeFileThrow @_ @PipelineConfig configFile prepareTests config+ CLI'Pipeline' CLI'Pipeline'PrintDataizeConfigs{..} -> do+ config <- decodeFileThrow @_ @PipelineConfig configFile+ printDataizeConfigs config phiPrefixesToStrip singleLine
data/0.38.0/org/eolang/int.phi view
+ data/0.38.4/org/eolang/as-phi.phi view
@@ -0,0 +1,14 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ as-phi ↦ ⟦+ λ ⤍ Lorg_eolang_as_phi,+ x ↦ ∅+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/bytes.phi view
@@ -0,0 +1,107 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ bytes ↦ ⟦+ Δ ⤍ ∅,+ as-bytes ↦ ξ,+ eq ↦ ⟦+ λ ⤍ Lorg_eolang_bytes_eq,+ b ↦ ∅+ ⟧,+ size ↦ ⟦+ λ ⤍ Lorg_eolang_bytes_size+ ⟧,+ slice ↦ ⟦+ λ ⤍ Lorg_eolang_bytes_slice,+ start ↦ ∅,+ len ↦ ∅+ ⟧,+ as-string ↦ ⟦+ φ ↦ Φ.org.eolang.string(+ α0 ↦ ξ.ρ+ )+ ⟧,+ as-int ↦ ⟦+ φ ↦ ξ.ρ.size.eq(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-08+ )+ )+ ).if(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ ξ.ρ+ ),+ α1 ↦ Φ.org.eolang.error(+ α0 ↦ Φ.org.eolang.string(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 43-61-6E-27-74-20-63-6F-6E-76-65-72-74-20-6E-6F-6E-20-38-20-6C-65-6E-67-74-68-20-62-79-74-65-73-20-74-6F-20-69-6E-74+ )+ )+ )+ )+ ⟧,+ as-float ↦ ⟦+ φ ↦ ξ.ρ.size.eq(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-08+ )+ )+ ).if(+ α0 ↦ Φ.org.eolang.float(+ α0 ↦ ξ.ρ+ ),+ α1 ↦ Φ.org.eolang.error(+ α0 ↦ Φ.org.eolang.string(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 43-61-6E-27-74-20-63-6F-6E-76-65-72-74-20-6E-6F-6E-20-38-20-6C-65-6E-67-74-68-20-62-79-74-65-73-20-74-6F-20-66-6C-6F-61-74+ )+ )+ )+ )+ ⟧,+ and ↦ ⟦+ λ ⤍ Lorg_eolang_bytes_and,+ b ↦ ∅+ ⟧,+ or ↦ ⟦+ λ ⤍ Lorg_eolang_bytes_or,+ b ↦ ∅+ ⟧,+ xor ↦ ⟦+ λ ⤍ Lorg_eolang_bytes_xor,+ b ↦ ∅+ ⟧,+ not ↦ ⟦+ λ ⤍ Lorg_eolang_bytes_not+ ⟧,+ left ↦ ⟦+ φ ↦ ξ.ρ.right(+ α0 ↦ ξ.x.neg+ ),+ x ↦ ∅+ ⟧,+ right ↦ ⟦+ λ ⤍ Lorg_eolang_bytes_right,+ x ↦ ∅+ ⟧,+ as-bool ↦ ⟦+ φ ↦ ξ.ρ.eq(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 01-+ )+ )+ ⟧,+ concat ↦ ⟦+ λ ⤍ Lorg_eolang_bytes_concat,+ b ↦ ∅+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/cage.phi view
@@ -0,0 +1,28 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ cage ↦ ⟦+ object ↦ ∅,+ new ↦ ξ.φ.self,+ φ ↦ ⟦+ λ ⤍ Lorg_eolang_cage_φ+ ⟧,+ encaged ↦ ⟦+ locator ↦ ∅,+ self ↦ ξ,+ φ ↦ ⟦+ λ ⤍ Lorg_eolang_cage_encaged_φ+ ⟧,+ encage ↦ ⟦+ λ ⤍ Lorg_eolang_cage_encaged_encage,+ object ↦ ∅+ ⟧+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/cti.phi view
@@ -0,0 +1,16 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ cti ↦ ⟦+ φ ↦ ξ.delegate,+ delegate ↦ ∅,+ level ↦ ∅,+ message ↦ ∅+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/dataized.phi view
@@ -0,0 +1,14 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ dataized ↦ ⟦+ λ ⤍ Lorg_eolang_dataized,+ target ↦ ∅+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/error.phi view
@@ -0,0 +1,14 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ error ↦ ⟦+ λ ⤍ Lorg_eolang_error,+ message ↦ ∅+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/false.phi view
@@ -0,0 +1,33 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ false ↦ ⟦+ φ ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-+ ),+ not ↦ Φ.org.eolang.true,+ if ↦ ⟦+ φ ↦ ξ.right,+ left ↦ ∅,+ right ↦ ∅+ ⟧,+ and ↦ ⟦+ φ ↦ ξ.ρ,+ x ↦ ∅+ ⟧,+ or ↦ ⟦+ φ ↦ Φ.org.eolang.bytes(+ Δ ⤍ 01-+ ).eq(+ α0 ↦ ξ.x+ ),+ x ↦ ∅+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/float.phi view
@@ -0,0 +1,142 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ float ↦ ⟦+ as-bytes ↦ ∅,+ φ ↦ ξ.as-bytes,+ eq ↦ ⟦+ x ↦ ∅,+ x-as-bytes ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes,+ self-as-bytes ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.ρ+ ).as-bytes,+ nan-as-bytes ↦ Φ.org.eolang.dataized(+ α0 ↦ Φ.org.eolang.nan+ ).as-bytes,+ pos-zero-as-bytes ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.ρ.ρ.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ ).as-bytes,+ neg-zero-as-bytes ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.ρ.ρ.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 80-00-00-00-00-00-00-00+ )+ )+ ).as-bytes,+ φ ↦ ξ.x-as-bytes.eq(+ α0 ↦ ξ.nan-as-bytes+ ).or(+ α0 ↦ ξ.self-as-bytes.eq(+ α0 ↦ ξ.nan-as-bytes+ )+ ).if(+ α0 ↦ Φ.org.eolang.false,+ α1 ↦ ξ.x-as-bytes.eq(+ α0 ↦ ξ.pos-zero-as-bytes+ ).or(+ α0 ↦ ξ.x-as-bytes.eq(+ α0 ↦ ξ.neg-zero-as-bytes+ )+ ).and(+ α0 ↦ ξ.self-as-bytes.eq(+ α0 ↦ ξ.pos-zero-as-bytes+ ).or(+ α0 ↦ ξ.self-as-bytes.eq(+ α0 ↦ ξ.neg-zero-as-bytes+ )+ )+ ).or(+ α0 ↦ ξ.self-as-bytes.eq(+ α0 ↦ ξ.x-as-bytes+ )+ )+ )+ ⟧,+ lt ↦ ⟦+ x ↦ ∅,+ φ ↦ ξ.ρ.ρ.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ).gt(+ α0 ↦ ξ.ρ.minus(+ α0 ↦ ξ.ρ.ρ.float(+ α0 ↦ ξ.value+ )+ )+ ),+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes+ ⟧,+ lte ↦ ⟦+ x ↦ ∅,+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes,+ φ ↦ ξ.ρ.eq(+ α0 ↦ ξ.value+ ).or(+ α0 ↦ ξ.ρ.lt(+ α0 ↦ ξ.value+ )+ )+ ⟧,+ gt ↦ ⟦+ λ ⤍ Lorg_eolang_float_gt,+ x ↦ ∅+ ⟧,+ gte ↦ ⟦+ x ↦ ∅,+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes,+ φ ↦ ξ.ρ.eq(+ α0 ↦ ξ.value+ ).or(+ α0 ↦ ξ.ρ.gt(+ α0 ↦ ξ.value+ )+ )+ ⟧,+ times ↦ ⟦+ λ ⤍ Lorg_eolang_float_times,+ x ↦ ∅+ ⟧,+ plus ↦ ⟦+ λ ⤍ Lorg_eolang_float_plus,+ x ↦ ∅+ ⟧,+ neg ↦ ⟦+ φ ↦ ξ.ρ.times(+ α0 ↦ ξ.ρ.ρ.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ BF-F0-00-00-00-00-00-00+ )+ )+ )+ ⟧,+ minus ↦ ⟦+ φ ↦ ξ.ρ.plus(+ α0 ↦ ξ.x.neg+ ),+ x ↦ ∅+ ⟧,+ div ↦ ⟦+ λ ⤍ Lorg_eolang_float_div,+ x ↦ ∅+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/go.phi view
@@ -0,0 +1,69 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ go ↦ ⟦+ id ↦ Φ.org.eolang.dataized(+ α0 ↦ Φ.org.eolang.malloc.of(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-08+ )+ ),+ α1 ↦ ⟦+ φ ↦ ξ.m.put(+ α0 ↦ ξ.m.id+ ),+ m ↦ ∅+ ⟧+ )+ ).as-bytes,+ to ↦ ⟦+ body ↦ ∅,+ φ ↦ Φ.org.eolang.try(+ α0 ↦ ξ.body(+ α0 ↦ ξ.token+ ),+ α1 ↦ ξ.auto-named-attr-at-64-9,+ α2 ↦ Φ.org.eolang.true+ ),+ token ↦ ⟦+ backward ↦ Φ.org.eolang.error(+ α0 ↦ ξ.jump(+ α0 ↦ ξ.ρ.ρ.to(+ α0 ↦ ξ.ρ.body+ )+ )+ ),+ jump ↦ ⟦+ value ↦ ∅,+ id ↦ ξ.ρ.ρ.ρ.id+ ⟧,+ forward ↦ ⟦+ res ↦ ∅,+ φ ↦ Φ.org.eolang.error(+ α0 ↦ ξ.ρ.jump(+ α0 ↦ ξ.res+ )+ )+ ⟧+ ⟧,+ auto-named-attr-at-64-9 ↦ ⟦+ e ↦ ∅,+ φ ↦ ξ.ρ.ρ.id.eq(+ α0 ↦ ξ.e.id+ ).if(+ α0 ↦ ξ.e.value,+ α1 ↦ Φ.org.eolang.error(+ α0 ↦ ξ.e+ )+ )+ ⟧+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/int.phi view
@@ -0,0 +1,86 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ int ↦ ⟦+ as-bytes ↦ ∅,+ φ ↦ ξ.as-bytes,+ eq ↦ ⟦+ x ↦ ∅,+ φ ↦ ξ.ρ.as-bytes.eq(+ α0 ↦ ξ.x.as-bytes+ )+ ⟧,+ lt ↦ ⟦+ x ↦ ∅,+ φ ↦ ξ.ρ.ρ.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ).gt(+ α0 ↦ ξ.ρ.minus(+ α0 ↦ ξ.ρ.ρ.int(+ α0 ↦ ξ.value+ )+ )+ ),+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes+ ⟧,+ lte ↦ ⟦+ x ↦ ∅,+ φ ↦ ξ.ρ.gt(+ α0 ↦ ξ.value+ ).not,+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes+ ⟧,+ gt ↦ ⟦+ λ ⤍ Lorg_eolang_int_gt,+ x ↦ ∅+ ⟧,+ gte ↦ ⟦+ x ↦ ∅,+ φ ↦ ξ.ρ.lt(+ α0 ↦ ξ.value+ ).not,+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes+ ⟧,+ neg ↦ ⟦+ φ ↦ ξ.ρ.times(+ α0 ↦ ξ.ρ.ρ.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ FF-FF-FF-FF-FF-FF-FF-FF+ )+ )+ )+ ⟧,+ plus ↦ ⟦+ λ ⤍ Lorg_eolang_int_plus,+ x ↦ ∅+ ⟧,+ minus ↦ ⟦+ φ ↦ ξ.ρ.plus(+ α0 ↦ ξ.x.neg+ ),+ x ↦ ∅+ ⟧,+ times ↦ ⟦+ λ ⤍ Lorg_eolang_int_times,+ x ↦ ∅+ ⟧,+ div ↦ ⟦+ λ ⤍ Lorg_eolang_int_div,+ x ↦ ∅+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/io/stdin.phi view
@@ -0,0 +1,21 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ io ↦ ⟦+ stdin ↦ ⟦+ next-line ↦ ⟦+ λ ⤍ Lorg_eolang_io_stdin_next_line+ ⟧,+ φ ↦ ⟦+ λ ⤍ Lorg_eolang_io_stdin_φ+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/io/stdout.phi view
@@ -0,0 +1,17 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ io ↦ ⟦+ stdout ↦ ⟦+ λ ⤍ Lorg_eolang_io_stdout,+ text ↦ ∅+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/malloc.phi view
@@ -0,0 +1,95 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ malloc ↦ ⟦+ for ↦ ⟦+ object ↦ ∅,+ scope ↦ ∅,+ bts ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.object+ ).as-bytes,+ φ ↦ ξ.ρ.ρ.malloc.of(+ α0 ↦ ξ.bts.size,+ α1 ↦ ξ.auto-named-attr-at-89-9+ ),+ auto-named-attr-at-89-9 ↦ ⟦+ m ↦ ∅,+ φ ↦ Φ.org.eolang.seq(+ α0 ↦ Φ.org.eolang.tuple(+ α0 ↦ Φ.org.eolang.tuple(+ α0 ↦ Φ.org.eolang.tuple.empty,+ α1 ↦ ξ.m.write(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ),+ α1 ↦ ξ.ρ.bts+ )+ ),+ α1 ↦ ξ.ρ.scope(+ α0 ↦ ξ.m+ )+ )+ )+ ⟧+ ⟧,+ of ↦ ⟦+ size ↦ ∅,+ scope ↦ ∅,+ φ ↦ ⟦+ λ ⤍ Lorg_eolang_malloc_of_φ+ ⟧,+ allocated ↦ ⟦+ id ↦ ∅,+ size ↦ ξ.ρ.size,+ φ ↦ ξ.get,+ read ↦ ⟦+ λ ⤍ Lorg_eolang_malloc_of_allocated_read,+ offset ↦ ∅,+ length ↦ ∅+ ⟧,+ write ↦ ⟦+ λ ⤍ Lorg_eolang_malloc_of_allocated_write,+ offset ↦ ∅,+ data ↦ ∅+ ⟧,+ get ↦ ⟦+ φ ↦ ξ.ρ.read(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ),+ α1 ↦ ξ.ρ.size+ )+ ⟧,+ put ↦ ⟦+ object ↦ ∅,+ φ ↦ Φ.org.eolang.seq(+ α0 ↦ Φ.org.eolang.tuple(+ α0 ↦ Φ.org.eolang.tuple(+ α0 ↦ Φ.org.eolang.tuple.empty,+ α1 ↦ ξ.ρ.write(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ),+ α1 ↦ ξ.object+ )+ ),+ α1 ↦ ξ.ρ.get+ )+ )+ ⟧+ ⟧+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/nan.phi view
@@ -0,0 +1,62 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ nan ↦ ⟦+ φ ↦ Φ.org.eolang.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ).div(+ α0 ↦ Φ.org.eolang.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ ),+ eq ↦ ⟦+ φ ↦ Φ.org.eolang.false,+ x ↦ ∅+ ⟧,+ lt ↦ ⟦+ φ ↦ Φ.org.eolang.false,+ x ↦ ∅+ ⟧,+ lte ↦ ⟦+ φ ↦ Φ.org.eolang.false,+ x ↦ ∅+ ⟧,+ gt ↦ ⟦+ φ ↦ Φ.org.eolang.false,+ x ↦ ∅+ ⟧,+ gte ↦ ⟦+ φ ↦ Φ.org.eolang.false,+ x ↦ ∅+ ⟧,+ times ↦ ⟦+ φ ↦ ξ.ρ,+ x ↦ ∅+ ⟧,+ plus ↦ ⟦+ φ ↦ ξ.ρ,+ x ↦ ∅+ ⟧,+ neg ↦ ⟦+ φ ↦ ξ.ρ+ ⟧,+ minus ↦ ⟦+ φ ↦ ξ.ρ,+ x ↦ ∅+ ⟧,+ div ↦ ⟦+ φ ↦ ξ.ρ,+ x ↦ ∅+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/negative-infinity.phi view
@@ -0,0 +1,246 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ negative-infinity ↦ ⟦+ φ ↦ Φ.org.eolang.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ BF-F0-00-00-00-00-00-00+ )+ ).div(+ α0 ↦ Φ.org.eolang.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ ),+ eq ↦ ⟦+ x ↦ ∅,+ φ ↦ ξ.ρ.as-bytes.eq(+ α0 ↦ ξ.x.as-bytes+ )+ ⟧,+ lt ↦ ⟦+ x ↦ ∅,+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes,+ φ ↦ ξ.value.eq(+ α0 ↦ Φ.org.eolang.nan.as-bytes+ ).or(+ α0 ↦ ξ.ρ.eq(+ α0 ↦ ξ.value+ )+ ).not+ ⟧,+ lte ↦ ⟦+ x ↦ ∅,+ φ ↦ ξ.x.as-bytes.eq(+ α0 ↦ Φ.org.eolang.nan.as-bytes+ ).not+ ⟧,+ gt ↦ ⟦+ x ↦ ∅,+ φ ↦ Φ.org.eolang.false+ ⟧,+ gte ↦ ⟦+ x ↦ ∅,+ φ ↦ ξ.ρ.eq(+ α0 ↦ ξ.x+ )+ ⟧,+ times ↦ ⟦+ x ↦ ∅,+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes,+ is-num-gt-zero ↦ ⟦+ num ↦ ∅,+ φ ↦ Φ.org.eolang.try(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ).lt(+ α0 ↦ ξ.num+ ),+ α1 ↦ ξ.auto-named-attr-at-69-26,+ α2 ↦ Φ.org.eolang.false+ ),+ auto-named-attr-at-69-26 ↦ ⟦+ φ ↦ Φ.org.eolang.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ).lt(+ α0 ↦ ξ.ρ.num+ ),+ e ↦ ∅+ ⟧+ ⟧,+ is-nan ↦ ⟦+ num ↦ ∅,+ φ ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.nan.as-bytes+ )+ ⟧,+ is-nan-or-zero ↦ ⟦+ num ↦ ∅,+ φ ↦ ξ.ρ.is-nan(+ α0 ↦ ξ.num+ ).or(+ α0 ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 80-00-00-00-00-00-00-00+ )+ )+ )+ ).or(+ α0 ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ )+ ).or(+ α0 ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ )+ )+ ⟧,+ φ ↦ ξ.is-nan-or-zero(+ α0 ↦ ξ.value+ ).if(+ α0 ↦ Φ.org.eolang.nan,+ α1 ↦ ξ.is-num-gt-zero(+ α0 ↦ ξ.value+ ).if(+ α0 ↦ ξ.ρ.ρ.negative-infinity,+ α1 ↦ Φ.org.eolang.positive-infinity+ )+ )+ ⟧,+ plus ↦ ⟦+ x ↦ ∅,+ pos-inf-as-bytes ↦ Φ.org.eolang.dataized(+ α0 ↦ Φ.org.eolang.positive-infinity.as-bytes+ ).as-bytes,+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes,+ is-nan ↦ ⟦+ num ↦ ∅,+ φ ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.nan.as-bytes+ )+ ⟧,+ φ ↦ ξ.is-nan(+ α0 ↦ ξ.value+ ).or(+ α0 ↦ ξ.value.eq(+ α0 ↦ ξ.pos-inf-as-bytes+ )+ ).if(+ α0 ↦ Φ.org.eolang.nan,+ α1 ↦ ξ.ρ.ρ.negative-infinity+ )+ ⟧,+ minus ↦ ⟦+ x ↦ ∅,+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes,+ neg-inf-as-bytes ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.ρ.ρ.negative-infinity+ ).as-bytes,+ is-nan ↦ ⟦+ num ↦ ∅,+ φ ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.nan.as-bytes+ )+ ⟧,+ φ ↦ ξ.is-nan(+ α0 ↦ ξ.value+ ).or(+ α0 ↦ ξ.value.eq(+ α0 ↦ ξ.neg-inf-as-bytes+ )+ ).if(+ α0 ↦ Φ.org.eolang.nan,+ α1 ↦ ξ.ρ.ρ.negative-infinity+ )+ ⟧,+ div ↦ ⟦+ x ↦ ∅,+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes,+ is-nan ↦ ⟦+ num ↦ ∅,+ φ ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.nan.as-bytes+ )+ ⟧,+ is-nan-or-infinite ↦ ⟦+ num ↦ ∅,+ φ ↦ ξ.ρ.is-nan(+ α0 ↦ ξ.num+ ).or(+ α0 ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.positive-infinity+ )+ ).or(+ α0 ↦ ξ.num.eq(+ α0 ↦ ξ.ρ.ρ.ρ.negative-infinity+ )+ )+ ⟧,+ is-num-gte-zero ↦ ⟦+ num ↦ ∅,+ φ ↦ Φ.org.eolang.try(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ).lte(+ α0 ↦ ξ.num+ ),+ α1 ↦ ξ.auto-named-attr-at-136-27,+ α2 ↦ Φ.org.eolang.false+ ),+ auto-named-attr-at-136-27 ↦ ⟦+ φ ↦ Φ.org.eolang.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ).lte(+ α0 ↦ ξ.ρ.num+ ),+ e ↦ ∅+ ⟧+ ⟧,+ φ ↦ ξ.is-nan-or-infinite(+ α0 ↦ ξ.value+ ).if(+ α0 ↦ Φ.org.eolang.nan,+ α1 ↦ ξ.is-num-gte-zero(+ α0 ↦ ξ.value+ ).if(+ α0 ↦ ξ.ρ.ρ.negative-infinity,+ α1 ↦ Φ.org.eolang.positive-infinity+ )+ )+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/positive-infinity.phi view
@@ -0,0 +1,246 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ positive-infinity ↦ ⟦+ φ ↦ Φ.org.eolang.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 3F-F0-00-00-00-00-00-00+ )+ ).div(+ α0 ↦ Φ.org.eolang.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ ),+ eq ↦ ⟦+ x ↦ ∅,+ φ ↦ ξ.ρ.as-bytes.eq(+ α0 ↦ ξ.x.as-bytes+ )+ ⟧,+ lt ↦ ⟦+ x ↦ ∅,+ φ ↦ Φ.org.eolang.false+ ⟧,+ lte ↦ ⟦+ x ↦ ∅,+ φ ↦ ξ.ρ.eq(+ α0 ↦ ξ.x+ )+ ⟧,+ gt ↦ ⟦+ x ↦ ∅,+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes,+ φ ↦ ξ.value.eq(+ α0 ↦ Φ.org.eolang.nan.as-bytes+ ).or(+ α0 ↦ ξ.ρ.eq(+ α0 ↦ ξ.value+ )+ ).not+ ⟧,+ gte ↦ ⟦+ x ↦ ∅,+ φ ↦ ξ.x.as-bytes.eq(+ α0 ↦ Φ.org.eolang.nan.as-bytes+ ).not+ ⟧,+ times ↦ ⟦+ x ↦ ∅,+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes,+ is-nan ↦ ⟦+ num ↦ ∅,+ φ ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.nan.as-bytes+ )+ ⟧,+ is-nan-or-zero ↦ ⟦+ num ↦ ∅,+ φ ↦ ξ.ρ.is-nan(+ α0 ↦ ξ.num+ ).or(+ α0 ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 80-00-00-00-00-00-00-00+ )+ )+ )+ ).or(+ α0 ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ )+ ).or(+ α0 ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ )+ )+ ⟧,+ is-num-gt-zero ↦ ⟦+ num ↦ ∅,+ φ ↦ Φ.org.eolang.try(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ).lt(+ α0 ↦ ξ.num+ ),+ α1 ↦ ξ.auto-named-attr-at-81-26,+ α2 ↦ Φ.org.eolang.false+ ),+ auto-named-attr-at-81-26 ↦ ⟦+ φ ↦ Φ.org.eolang.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ).lt(+ α0 ↦ ξ.ρ.num+ ),+ e ↦ ∅+ ⟧+ ⟧,+ φ ↦ ξ.is-nan-or-zero(+ α0 ↦ ξ.value+ ).if(+ α0 ↦ Φ.org.eolang.nan,+ α1 ↦ ξ.is-num-gt-zero(+ α0 ↦ ξ.value+ ).if(+ α0 ↦ ξ.ρ.ρ.positive-infinity,+ α1 ↦ Φ.org.eolang.negative-infinity+ )+ )+ ⟧,+ plus ↦ ⟦+ x ↦ ∅,+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes,+ neg-inf-as-bytes ↦ Φ.org.eolang.dataized(+ α0 ↦ Φ.org.eolang.negative-infinity+ ).as-bytes,+ is-nan ↦ ⟦+ num ↦ ∅,+ φ ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.nan.as-bytes+ )+ ⟧,+ φ ↦ ξ.is-nan(+ α0 ↦ ξ.value+ ).or(+ α0 ↦ ξ.value.eq(+ α0 ↦ ξ.neg-inf-as-bytes+ )+ ).if(+ α0 ↦ Φ.org.eolang.nan,+ α1 ↦ ξ.ρ.ρ.positive-infinity+ )+ ⟧,+ minus ↦ ⟦+ x ↦ ∅,+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes,+ pos-inf-as-bytes ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.ρ.ρ.positive-infinity+ ).as-bytes,+ is-nan ↦ ⟦+ num ↦ ∅,+ φ ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.nan.as-bytes+ )+ ⟧,+ φ ↦ ξ.is-nan(+ α0 ↦ ξ.value+ ).or(+ α0 ↦ ξ.value.eq(+ α0 ↦ ξ.pos-inf-as-bytes+ )+ ).if(+ α0 ↦ Φ.org.eolang.nan,+ α1 ↦ ξ.ρ.ρ.positive-infinity+ )+ ⟧,+ div ↦ ⟦+ x ↦ ∅,+ value ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.x+ ).as-bytes,+ is-nan ↦ ⟦+ num ↦ ∅,+ φ ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.nan.as-bytes+ )+ ⟧,+ is-nan-or-infinite ↦ ⟦+ num ↦ ∅,+ φ ↦ ξ.ρ.is-nan(+ α0 ↦ ξ.num+ ).or(+ α0 ↦ ξ.num.eq(+ α0 ↦ ξ.ρ.ρ.ρ.positive-infinity+ )+ ).or(+ α0 ↦ ξ.num.eq(+ α0 ↦ Φ.org.eolang.negative-infinity+ )+ )+ ⟧,+ is-num-gte-zero ↦ ⟦+ num ↦ ∅,+ φ ↦ Φ.org.eolang.try(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ).lte(+ α0 ↦ ξ.num+ ),+ α1 ↦ ξ.auto-named-attr-at-136-27,+ α2 ↦ Φ.org.eolang.false+ ),+ auto-named-attr-at-136-27 ↦ ⟦+ φ ↦ Φ.org.eolang.float(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ).lte(+ α0 ↦ ξ.ρ.num+ ),+ e ↦ ∅+ ⟧+ ⟧,+ φ ↦ ξ.is-nan-or-infinite(+ α0 ↦ ξ.value+ ).if(+ α0 ↦ Φ.org.eolang.nan,+ α1 ↦ ξ.is-num-gte-zero(+ α0 ↦ ξ.value+ ).if(+ α0 ↦ ξ.ρ.ρ.positive-infinity,+ α1 ↦ Φ.org.eolang.negative-infinity+ )+ )+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/rust.phi view
@@ -0,0 +1,16 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ rust ↦ ⟦+ λ ⤍ Lorg_eolang_rust,+ code ↦ ∅,+ portal ↦ ∅,+ params ↦ ∅+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/seq.phi view
@@ -0,0 +1,65 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ seq ↦ ⟦+ steps ↦ ∅,+ φ ↦ ξ.steps.length.eq(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ ).if(+ α0 ↦ Φ.org.eolang.true,+ α1 ↦ ξ.loop(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ )+ ),+ max-len ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.steps.length.minus(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-01+ )+ )+ )+ ).as-bytes,+ loop ↦ ⟦+ index ↦ ∅,+ φ ↦ ξ.index.lt(+ α0 ↦ ξ.ρ.max-len+ ).and(+ α0 ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.ρ.steps.at(+ α0 ↦ ξ.index+ )+ ).as-bool.or(+ α0 ↦ Φ.org.eolang.true+ )+ ).if(+ α0 ↦ ξ.ρ.loop(+ α0 ↦ ξ.index.plus(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-01+ )+ )+ )+ ),+ α1 ↦ ξ.ρ.steps.at(+ α0 ↦ ξ.index+ )+ )+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/string.phi view
@@ -0,0 +1,28 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ string ↦ ⟦+ as-bytes ↦ ∅,+ φ ↦ ξ.as-bytes,+ eq ↦ ⟦+ x ↦ ∅,+ φ ↦ ξ.ρ.as-bytes.eq(+ α0 ↦ ξ.x.as-bytes+ )+ ⟧,+ length ↦ ⟦+ λ ⤍ Lorg_eolang_string_length+ ⟧,+ slice ↦ ⟦+ λ ⤍ Lorg_eolang_string_slice,+ start ↦ ∅,+ len ↦ ∅+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/switch.phi view
@@ -0,0 +1,73 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ switch ↦ ⟦+ cases ↦ ∅,+ len ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.cases.length+ ).as-bytes,+ case-at ↦ ⟦+ index ↦ ∅,+ φ ↦ ξ.index.eq(+ α0 ↦ ξ.ρ.len+ ).if(+ α0 ↦ Φ.org.eolang.true,+ α1 ↦ ξ.case.at(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ ).if(+ α0 ↦ ξ.case.at(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-01+ )+ )+ ),+ α1 ↦ ξ.ρ.case-at(+ α0 ↦ ξ.index.plus(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-01+ )+ )+ )+ )+ )+ ),+ case ↦ ξ.ρ.cases.at(+ α0 ↦ ξ.index+ )+ ⟧,+ φ ↦ ξ.len.eq(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ ).if(+ α0 ↦ Φ.org.eolang.error(+ α0 ↦ Φ.org.eolang.string(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 73-77-69-74-63-68-20-63-61-73-65-73-20-61-72-65-20-65-6D-70-74-79+ )+ )+ ),+ α1 ↦ ξ.case-at(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ )+ )+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/true.phi view
@@ -0,0 +1,33 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ true ↦ ⟦+ φ ↦ Φ.org.eolang.bytes(+ Δ ⤍ 01-+ ),+ not ↦ Φ.org.eolang.false,+ if ↦ ⟦+ φ ↦ ξ.left,+ left ↦ ∅,+ right ↦ ∅+ ⟧,+ and ↦ ⟦+ φ ↦ Φ.org.eolang.bytes(+ Δ ⤍ 01-+ ).eq(+ α0 ↦ ξ.x+ ),+ x ↦ ∅+ ⟧,+ or ↦ ⟦+ φ ↦ ξ.ρ,+ x ↦ ∅+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/try.phi view
@@ -0,0 +1,16 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ try ↦ ⟦+ λ ⤍ Lorg_eolang_try,+ main ↦ ∅,+ catch ↦ ∅,+ finally ↦ ∅+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/tuple.phi view
@@ -0,0 +1,128 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ tuple ↦ ⟦+ head ↦ ∅,+ tail ↦ ∅,+ empty ↦ ⟦+ length ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ),+ at ↦ ⟦+ i ↦ ∅,+ φ ↦ Φ.org.eolang.error(+ α0 ↦ Φ.org.eolang.string(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 43-61-6E-27-74-20-67-65-74-20-61-6E-20-6F-62-6A-65-63-74-20-66-72-6F-6D-20-74-68-65-20-65-6D-70-74-79-20-74-75-70-6C-65+ )+ )+ )+ ⟧,+ with ↦ ⟦+ x ↦ ∅,+ φ ↦ ξ.ρ.ρ.ρ.tuple(+ α0 ↦ ξ.ρ.ρ.ρ.tuple.empty,+ α1 ↦ ξ.x+ )+ ⟧+ ⟧,+ length ↦ ⟦+ φ ↦ Φ.org.eolang.int(+ α0 ↦ ξ.len+ ),+ len ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.ρ.head.length.plus(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-01+ )+ )+ )+ ).as-bytes+ ⟧,+ at ↦ ⟦+ i ↦ ∅,+ len ↦ ξ.ρ.length,+ index ↦ Φ.org.eolang.dataized(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ).gt(+ α0 ↦ ξ.idx+ ).if(+ α0 ↦ ξ.len.plus(+ α0 ↦ ξ.idx+ ),+ α1 ↦ ξ.idx+ )+ ).as-bytes,+ φ ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ ).gt(+ α0 ↦ ξ.index+ ).or(+ α0 ↦ ξ.len.lte(+ α0 ↦ ξ.index+ )+ ).if(+ α0 ↦ Φ.org.eolang.error(+ α0 ↦ Φ.org.eolang.string(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 47-69-76-65-6E-20-69-6E-64-65-78-20-69-73-20-6F-75-74-20-6F-66-20-74-75-70-6C-65-20-62-6F-75-6E-64-73+ )+ )+ ),+ α1 ↦ ξ.at-fast(+ α0 ↦ ξ.ρ,+ α1 ↦ ξ.len+ )+ ),+ at-fast ↦ ⟦+ tup ↦ ∅,+ len ↦ ∅,+ φ ↦ ξ.len.plus(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ FF-FF-FF-FF-FF-FF-FF-FF+ )+ )+ ).gt(+ α0 ↦ ξ.ρ.index+ ).if(+ α0 ↦ ξ.ρ.at-fast(+ α0 ↦ ξ.tup.head,+ α1 ↦ ξ.len.plus(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ FF-FF-FF-FF-FF-FF-FF-FF+ )+ )+ )+ ),+ α1 ↦ ξ.tup.tail+ )+ ⟧,+ idx ↦ Φ.org.eolang.dataized(+ α0 ↦ ξ.i+ ).as-bytes+ ⟧,+ with ↦ ⟦+ φ ↦ ξ.ρ.ρ.tuple(+ α0 ↦ ξ.ρ,+ α1 ↦ ξ.x+ ),+ x ↦ ∅+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
+ data/0.38.4/org/eolang/while.phi view
@@ -0,0 +1,64 @@+{+ ⟦+ org ↦ ⟦+ eolang ↦ ⟦+ while ↦ ⟦+ condition ↦ ∅,+ body ↦ ∅,+ φ ↦ ξ.condition(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ ).as-bool.if(+ α0 ↦ ξ.loop(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-00+ )+ )+ ),+ α1 ↦ Φ.org.eolang.false+ ),+ loop ↦ ⟦+ index ↦ ∅,+ current ↦ ξ.ρ.body(+ α0 ↦ ξ.index+ ),+ φ ↦ ξ.ρ.condition(+ α0 ↦ ξ.index.plus(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-01+ )+ )+ )+ ).as-bool.if(+ α0 ↦ Φ.org.eolang.seq(+ α0 ↦ Φ.org.eolang.tuple(+ α0 ↦ Φ.org.eolang.tuple(+ α0 ↦ Φ.org.eolang.tuple.empty,+ α1 ↦ ξ.current+ ),+ α1 ↦ ξ.ρ.loop(+ α0 ↦ ξ.index.plus(+ α0 ↦ Φ.org.eolang.int(+ α0 ↦ Φ.org.eolang.bytes(+ Δ ⤍ 00-00-00-00-00-00-00-01+ )+ )+ )+ )+ )+ ),+ α1 ↦ ξ.current+ )+ ⟧+ ⟧,+ λ ⤍ Package+ ⟧,+ λ ⤍ Package+ ⟧+ ⟧+}
eo-phi-normalizer.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: eo-phi-normalizer-version: 0.4.1+version: 1.0.0 synopsis: Command line normalizer of 𝜑-calculus expressions. description: Please see the README on GitHub at <https://github.com/objectionary/eo-phi-normalizer#readme> homepage: https://github.com/objectionary/eo-phi-normalizer#readme@@ -99,6 +99,30 @@ data/0.38.0/org/eolang/try.phi data/0.38.0/org/eolang/tuple.phi data/0.38.0/org/eolang/while.phi+ data/0.38.4/org/eolang/as-phi.phi+ data/0.38.4/org/eolang/bytes.phi+ data/0.38.4/org/eolang/cage.phi+ data/0.38.4/org/eolang/cti.phi+ data/0.38.4/org/eolang/dataized.phi+ data/0.38.4/org/eolang/error.phi+ data/0.38.4/org/eolang/false.phi+ data/0.38.4/org/eolang/float.phi+ data/0.38.4/org/eolang/go.phi+ data/0.38.4/org/eolang/int.phi+ data/0.38.4/org/eolang/io/stdin.phi+ data/0.38.4/org/eolang/io/stdout.phi+ data/0.38.4/org/eolang/malloc.phi+ data/0.38.4/org/eolang/nan.phi+ data/0.38.4/org/eolang/negative-infinity.phi+ data/0.38.4/org/eolang/positive-infinity.phi+ data/0.38.4/org/eolang/rust.phi+ data/0.38.4/org/eolang/seq.phi+ data/0.38.4/org/eolang/string.phi+ data/0.38.4/org/eolang/switch.phi+ data/0.38.4/org/eolang/true.phi+ data/0.38.4/org/eolang/try.phi+ data/0.38.4/org/eolang/tuple.phi+ data/0.38.4/org/eolang/while.phi source-repository head type: git@@ -120,6 +144,7 @@ Language.EO.Phi.Metrics.Data Language.EO.Phi.Normalize Language.EO.Phi.Pipeline.Config+ Language.EO.Phi.Pipeline.Dataize.PrintConfigs Language.EO.Phi.Pipeline.EOTests.Data Language.EO.Phi.Pipeline.EOTests.PrepareTests Language.EO.Phi.Report.Data@@ -127,6 +152,7 @@ Language.EO.Phi.Rules.Common Language.EO.Phi.Rules.Fast Language.EO.Phi.Rules.PhiPaper+ Language.EO.Phi.Rules.RunYegor Language.EO.Phi.Rules.Yaml Language.EO.Phi.Syntax Language.EO.Phi.Syntax.Abs@@ -156,16 +182,19 @@ , blaze-markup , bytestring , cereal+ , containers , directory , file-embed >=0.0.16.0 , filepath , generic-lens+ , hashable , lens , mtl , regex-compat , scientific , template-haskell , text+ , unordered-containers , yaml default-language: Haskell2010 @@ -193,11 +222,13 @@ , blaze-markup , bytestring , cereal+ , containers , directory , eo-phi-normalizer , file-embed >=0.0.16.0 , filepath , generic-lens+ , hashable , lens , mtl , optparse-applicative@@ -205,6 +236,7 @@ , scientific , template-haskell , text+ , unordered-containers , with-utf8 , yaml default-language: Haskell2010@@ -220,6 +252,7 @@ Language.EO.Phi.Metrics.Data Language.EO.Phi.Normalize Language.EO.Phi.Pipeline.Config+ Language.EO.Phi.Pipeline.Dataize.PrintConfigs Language.EO.Phi.Pipeline.EOTests.Data Language.EO.Phi.Pipeline.EOTests.PrepareTests Language.EO.Phi.Report.Data@@ -227,6 +260,7 @@ Language.EO.Phi.Rules.Common Language.EO.Phi.Rules.Fast Language.EO.Phi.Rules.PhiPaper+ Language.EO.Phi.Rules.RunYegor Language.EO.Phi.Rules.Yaml Language.EO.Phi.Syntax Language.EO.Phi.Syntax.Abs@@ -257,18 +291,21 @@ , blaze-markup , bytestring , cereal+ , containers , directory , doctest-parallel , eo-phi-normalizer , file-embed >=0.0.16.0 , filepath , generic-lens+ , hashable , lens , mtl , regex-compat , scientific , template-haskell , text+ , unordered-containers , yaml default-language: Haskell2010 @@ -305,11 +342,13 @@ , blaze-markup , bytestring , cereal+ , containers , directory , eo-phi-normalizer , file-embed >=0.0.16.0 , filepath , generic-lens+ , hashable , hspec , hspec-discover , lens@@ -318,6 +357,7 @@ , scientific , template-haskell , text+ , unordered-containers , with-utf8 , yaml default-language: Haskell2010
grammar/EO/Phi/Syntax.cf view
@@ -11,11 +11,21 @@ token Function upper (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ; token LabelId lower (char - [" \r\n\t,.|':;!?][}{)(⟧⟦"])* ; token AlphaIndex ({"α0"} | {"α"} (digit - ["0"]) (digit)* ) ;-token MetaId {"!"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;+token LabelMetaId {"!τ"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;+token TailMetaId {"!t"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;+token BindingsMetaId {"!B"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;+token ObjectMetaId {"!b"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ;+token BytesMetaId {"!y"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ; token MetaFunctionName {"@"} (char - [" \r\n\t,.|':;!-?][}{)(⟧⟦"])* ; Program. Program ::= "{" "⟦" [Binding] "⟧" "}" ; +MetaIdLabel. MetaId ::= LabelMetaId ;+MetaIdTail. MetaId ::= TailMetaId ;+MetaIdBindings. MetaId ::= BindingsMetaId ;+MetaIdObject. MetaId ::= ObjectMetaId ;+MetaIdBytes. MetaId ::= BytesMetaId ;+ Formation. Object ::= "⟦" [Binding] "⟧" ; Application. Object ::= Object "(" [Binding] ")" ; ObjectDispatch. Object ::= Object "." Attribute ;@@ -23,7 +33,8 @@ ThisObject. Object ::= "ξ"; Termination. Object ::= "⊥" ; MetaSubstThis. Object ::= Object "[" "ξ" "↦" Object "]" ;-MetaObject. Object ::= MetaId ;+MetaObject. Object ::= ObjectMetaId ;+MetaTailContext. Object ::= Object "*" TailMetaId ; MetaFunction. Object ::= MetaFunctionName "(" Object ")" ; AlphaBinding. Binding ::= Attribute "↦" Object ;@@ -31,15 +42,15 @@ DeltaBinding. Binding ::= "Δ" "⤍" Bytes ; DeltaEmptyBinding. Binding ::= "Δ" "⤍" "∅" ; LambdaBinding. Binding ::= "λ" "⤍" Function ;-MetaBindings. Binding ::= MetaId ;-MetaDeltaBinding. Binding ::= "Δ" "⤍" MetaId ;+MetaBindings. Binding ::= BindingsMetaId ;+MetaDeltaBinding. Binding ::= "Δ" "⤍" BytesMetaId ; separator Binding "," ; Phi. Attribute ::= "φ" ; -- decoratee object Rho. Attribute ::= "ρ" ; -- parent object Label. Attribute ::= LabelId ; Alpha. Attribute ::= AlphaIndex ;-MetaAttr. Attribute ::= MetaId ;+MetaAttr. Attribute ::= LabelMetaId ; -- Additional symbols used as attributes in the rules ObjectAttr. RuleAttribute ::= Attribute ;
src/Language/EO/Phi/Dataize.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedRecordDot #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TupleSections #-}@@ -10,10 +11,11 @@ module Language.EO.Phi.Dataize where import Data.Bits+import Data.HashMap.Strict qualified as HashMap+import Data.HashSet (HashSet, difference, fromList)+import Data.HashSet qualified as HashSet import Data.List (singleton) import Data.List.NonEmpty qualified as NonEmpty---- import Data.List.NonEmpty qualified as NonEmpty import Data.Maybe (listToMaybe) import Language.EO.Phi (printTree) import Language.EO.Phi.Rules.Common@@ -50,14 +52,21 @@ return (ctx, Right bytes) | Just (LambdaBinding (Function funcName)) <- listToMaybe [b | b@(LambdaBinding _) <- bs] , not hasEmpty = do- logStep ("Evaluating lambda '" <> funcName <> "'") (Left obj)- msplit (evaluateBuiltinFunChain funcName obj ()) >>= \case- Nothing -> do- ctx <- getContext- return (ctx, Left obj)- Just ((obj', _state), _alts) -> do- ctx <- getContext- return (ctx, Left obj')+ ctx' <- getContext+ let lambaIsKnownAndNotEnabled = HashSet.member funcName knownAtomNames && not (HashSet.member funcName ctx'.enabledAtomNames)+ if lambaIsKnownAndNotEnabled+ then do+ logStep [fmt|Not evaluating the lambda '{funcName}' since it's disabled.|] (Left obj)+ pure (ctx', Left obj)+ else do+ logStep [fmt|Evaluating lambda '{funcName}' |] (Left obj)+ msplit (evaluateBuiltinFunChain funcName obj ()) >>= \case+ Nothing -> do+ ctx <- getContext+ return (ctx, Left obj)+ Just ((obj', _state), _alts) -> do+ ctx <- getContext+ return (ctx, Left obj') | Just (AlphaBinding Phi decoratee) <- listToMaybe [b | b@(AlphaBinding Phi _) <- bs] , not hasEmpty = do let decoratee' = substThis obj decoratee@@ -166,8 +175,6 @@ return (result, ()) evaluateBinaryDataizationFunChain ::- -- | Name of the atom.- String -> -- | How to convert the result back to bytes (res -> Bytes) -> -- | How to interpret the bytes in terms of the given data type@@ -180,10 +187,12 @@ (Object -> Object) -> -- | A binary function on the argument (a -> a -> res) ->+ -- | Name of the atom.+ String -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState)-evaluateBinaryDataizationFunChain name resultToBytes bytesToParam wrapBytes arg1 arg2 func obj _state = do+evaluateBinaryDataizationFunChain resultToBytes bytesToParam wrapBytes arg1 arg2 func name obj _state = do let lhsArg = arg1 obj let rhsArg = arg2 obj lhs <- incLogLevel $ do@@ -208,7 +217,6 @@ -- | Unary functions operate on the given object without any additional parameters evaluateUnaryDataizationFunChain ::- String -> -- | How to convert the result back to bytes (res -> Bytes) -> -- | How to interpret the bytes in terms of the given data type@@ -219,11 +227,12 @@ (Object -> Object) -> -- | A unary function on the argument (a -> res) ->+ String -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState)-evaluateUnaryDataizationFunChain name resultToBytes bytesToParam wrapBytes extractArg func =- evaluateBinaryDataizationFunChain name resultToBytes bytesToParam wrapBytes extractArg extractArg (const . func)+evaluateUnaryDataizationFunChain resultToBytes bytesToParam wrapBytes extractArg func =+ evaluateBinaryDataizationFunChain resultToBytes bytesToParam wrapBytes extractArg extractArg (const . func) evaluateIODataizationFunChain :: IO String -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState) evaluateIODataizationFunChain action _obj state =@@ -254,103 +263,146 @@ | otherwise = [fmt|Φ.org.eolang.true|] -- This should maybe get converted to a type class and some instances?-evaluateIntIntIntFunChain :: String -> (Int -> Int -> Int) -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState)-evaluateIntIntIntFunChain name = evaluateBinaryDataizationFunChain name intToBytes bytesToInt wrapBytesInInt extractRho (extractLabel "x")+evaluateIntIntIntFunChain :: (Int -> Int -> Int) -> String -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState)+evaluateIntIntIntFunChain = evaluateBinaryDataizationFunChain intToBytes bytesToInt wrapBytesInInt extractRho (extractLabel "x") -evaluateIntIntBoolFunChain :: String -> (Int -> Int -> Bool) -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState)-evaluateIntIntBoolFunChain name = evaluateBinaryDataizationFunChain name boolToBytes bytesToInt wrapBytesAsBool extractRho (extractLabel "x")+evaluateIntIntBoolFunChain :: (Int -> Int -> Bool) -> String -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState)+evaluateIntIntBoolFunChain = evaluateBinaryDataizationFunChain boolToBytes bytesToInt wrapBytesAsBool extractRho (extractLabel "x") -- Int because Bytes are just a string, but Int has a Bits instance-evaluateBytesBytesBytesFunChain :: String -> (Int -> Int -> Int) -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState)-evaluateBytesBytesBytesFunChain name = evaluateBinaryDataizationFunChain name intToBytes bytesToInt wrapBytesInBytes extractRho (extractLabel "b")+evaluateBytesBytesBytesFunChain :: (Int -> Int -> Int) -> String -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState)+evaluateBytesBytesBytesFunChain = evaluateBinaryDataizationFunChain intToBytes bytesToInt wrapBytesInBytes extractRho (extractLabel "b") -evaluateBytesBytesFunChain :: String -> (Int -> Int) -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState)-evaluateBytesBytesFunChain name = evaluateUnaryDataizationFunChain name intToBytes bytesToInt wrapBytesInBytes extractRho+evaluateBytesBytesFunChain :: (Int -> Int) -> String -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState)+evaluateBytesBytesFunChain = evaluateUnaryDataizationFunChain intToBytes bytesToInt wrapBytesInBytes extractRho -evaluateFloatFloatFloatFunChain :: String -> (Double -> Double -> Double) -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState)-evaluateFloatFloatFloatFunChain name = evaluateBinaryDataizationFunChain name floatToBytes bytesToFloat wrapBytesInFloat extractRho (extractLabel "x")+evaluateFloatFloatFloatFunChain :: (Double -> Double -> Double) -> String -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState)+evaluateFloatFloatFloatFunChain = evaluateBinaryDataizationFunChain floatToBytes bytesToFloat wrapBytesInFloat extractRho (extractLabel "x") +knownAtoms :: [(String, String -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState))]+knownAtoms =+ [ ("Lorg_eolang_int_gt", evaluateIntIntBoolFunChain (>))+ , ("Lorg_eolang_int_plus", evaluateIntIntIntFunChain (+))+ , ("Lorg_eolang_int_times", evaluateIntIntIntFunChain (*))+ , ("Lorg_eolang_int_div", evaluateIntIntIntFunChain quot)+ , ("Lorg_eolang_bytes_eq", evaluateBinaryDataizationFunChain boolToBytes bytesToInt wrapBytesAsBool extractRho (extractLabel "b") (==))+ ,+ ( "Lorg_eolang_bytes_size"+ , let f = evaluateUnaryDataizationFunChain intToBytes id wrapBytesInBytes extractRho (\(Bytes bytes) -> length (words (map dashToSpace bytes)))+ where+ dashToSpace '-' = ' '+ dashToSpace c = c+ in f+ )+ ,+ ( "Lorg_eolang_bytes_slice"+ , \name obj state -> do+ thisStr <- incLogLevel $ dataizeRecursivelyChain True (extractRho obj)+ bytes <- case thisStr of+ Right bytes -> pure bytes+ Left _ -> fail "Couldn't find bytes"+ evaluateBinaryDataizationFunChain id bytesToInt wrapBytesInBytes (extractLabel "start") (extractLabel "len") (sliceBytes bytes) name obj state+ )+ , ("Lorg_eolang_bytes_and", evaluateBytesBytesBytesFunChain (.&.))+ , ("Lorg_eolang_bytes_or", evaluateBytesBytesBytesFunChain (.|.))+ , ("Lorg_eolang_bytes_xor", evaluateBytesBytesBytesFunChain (.^.))+ , ("Lorg_eolang_bytes_not", evaluateBytesBytesFunChain complement)+ , ("Lorg_eolang_bytes_right", evaluateBinaryDataizationFunChain intToBytes bytesToInt wrapBytesInBytes extractRho (extractLabel "x") (\x i -> shift x (-i)))+ , ("Lorg_eolang_bytes_concat", evaluateBinaryDataizationFunChain id id wrapBytesInBytes extractRho (extractLabel "b") concatBytes)+ , -- float+ ("Lorg_eolang_float_gt", evaluateBinaryDataizationFunChain boolToBytes bytesToFloat wrapBytesInBytes extractRho (extractLabel "x") (>))+ , ("Lorg_eolang_float_times", evaluateFloatFloatFloatFunChain (*))+ , ("Lorg_eolang_float_plus", evaluateFloatFloatFloatFunChain (+))+ , ("Lorg_eolang_float_div", evaluateFloatFloatFloatFunChain (/))+ , ("Lorg_eolang_float_gt", evaluateBinaryDataizationFunChain boolToBytes bytesToFloat wrapBytesInBytes extractRho (extractLabel "x") (>))+ , ("Lorg_eolang_float_times", evaluateFloatFloatFloatFunChain (*))+ , ("Lorg_eolang_float_plus", evaluateFloatFloatFloatFunChain (+))+ , ("Lorg_eolang_float_div", evaluateFloatFloatFloatFunChain (/))+ , -- string+ ("Lorg_eolang_string_length", evaluateUnaryDataizationFunChain intToBytes bytesToString wrapBytesInInt extractRho length)+ ,+ ( "Lorg_eolang_string_slice"+ , \name obj state -> do+ thisStr <- incLogLevel $ dataizeRecursivelyChain True (extractRho obj)+ string <- case thisStr of+ Right bytes -> pure $ bytesToString bytes+ Left _ -> fail "Couldn't find bytes"+ evaluateBinaryDataizationFunChain stringToBytes bytesToInt wrapBytesInString (extractLabel "start") (extractLabel "len") (\start len -> take len (drop start string)) name obj state+ )+ , -- others+ ("Lorg_eolang_dataized", evaluateUnaryDataizationFunChain id id wrapBytesInBytes (extractLabel "target") id)+ , ("Lorg_eolang_error", evaluateUnaryDataizationFunChain stringToBytes bytesToString wrapBytesInBytes (extractLabel "message") error)+ ,+ ( "Package"+ , let+ f _name obj@(Formation bindings) = do+ \state -> do+ fmap dataizePackage getContext >>= \case+ True -> do+ let (packageBindings, restBindings) = span isPackage bindings+ bs <- mapM dataizeBindingChain restBindings+ logStep "Dataized 'Package' siblings" (Left $ Formation (bs ++ packageBindings))+ return (Formation (bs ++ packageBindings), state)+ False ->+ return (Formation bindings, state)+ where+ isPackage (LambdaBinding (Function "Package")) = True+ isPackage _ = False+ dataizeBindingChain (AlphaBinding attr o) = do+ ctx <- getContext+ let extendedContext = (extendContextWith obj ctx){currentAttr = attr}+ dataizationResult <- incLogLevel $ withContext extendedContext $ dataizeRecursivelyChain False o+ return (AlphaBinding attr (either id (Formation . singleton . DeltaBinding) dataizationResult))+ dataizeBindingChain b = return b+ f name _otherwise = evaluateBuiltinFunChainUnknown name _otherwise+ in+ f+ )+ ]++-- | Atoms supported by 'evaluateBuiltinFunChain'+knownAtomNames :: HashSet String+knownAtomNames = fromList $ fst <$> knownAtoms++defaultContext :: [NamedRule] -> Object -> Context+defaultContext rules obj =+ Context+ { builtinRules = False+ , allRules = rules+ , enabledAtomNames = knownAtomNames+ , outerFormations = NonEmpty.singleton obj+ , currentAttr = Phi+ , insideFormation = False+ , insideAbstractFormation = False+ , dataizePackage = True+ , minimizeTerms = False+ , insideSubObject = False+ }++mkEnabledAtomNames :: [String] -> [String] -> HashSet String+mkEnabledAtomNames enabled disabled = enabledSet'+ where+ enabledSet =+ case enabled of+ [] -> knownAtomNames+ _ -> fromList enabled+ disabledSet = fromList disabled+ enabledSet' = difference enabledSet disabledSet++knownAtomsSet :: HashMap.HashMap String (String -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState))+knownAtomsSet = HashMap.fromList knownAtoms+ -- | Like `evaluateDataizationFunChain` but specifically for the built-in functions. -- This function is not safe. It returns undefined for unknown functions evaluateBuiltinFunChain :: String -> Object -> EvaluationState -> DataizeChain (Object, EvaluationState)--- int-evaluateBuiltinFunChain name@"Lorg_eolang_int_gt" obj = evaluateIntIntBoolFunChain name (>) obj-evaluateBuiltinFunChain name@"Lorg_eolang_int_plus" obj = evaluateIntIntIntFunChain name (+) obj-evaluateBuiltinFunChain name@"Lorg_eolang_int_times" obj = evaluateIntIntIntFunChain name (*) obj-evaluateBuiltinFunChain name@"Lorg_eolang_int_div" obj = evaluateIntIntIntFunChain name quot obj--- bytes-evaluateBuiltinFunChain name@"Lorg_eolang_bytes_eq" obj = evaluateBinaryDataizationFunChain name boolToBytes bytesToInt wrapBytesAsBool extractRho (extractLabel "b") (==) obj-evaluateBuiltinFunChain name@"Lorg_eolang_bytes_size" obj = evaluateUnaryDataizationFunChain name intToBytes id wrapBytesInBytes extractRho (\(Bytes bytes) -> length (words (map dashToSpace bytes))) obj- where- dashToSpace '-' = ' '- dashToSpace c = c-evaluateBuiltinFunChain name@"Lorg_eolang_bytes_slice" obj = \state -> do- thisStr <- incLogLevel $ dataizeRecursivelyChain True (extractRho obj)- bytes <- case thisStr of- Right bytes -> pure bytes- Left _ -> fail "Couldn't find bytes"- evaluateBinaryDataizationFunChain name id bytesToInt wrapBytesInBytes (extractLabel "start") (extractLabel "len") (sliceBytes bytes) obj state-evaluateBuiltinFunChain name@"Lorg_eolang_bytes_and" obj = evaluateBytesBytesBytesFunChain name (.&.) obj-evaluateBuiltinFunChain name@"Lorg_eolang_bytes_or" obj = evaluateBytesBytesBytesFunChain name (.|.) obj-evaluateBuiltinFunChain name@"Lorg_eolang_bytes_xor" obj = evaluateBytesBytesBytesFunChain name (.^.) obj-evaluateBuiltinFunChain name@"Lorg_eolang_bytes_not" obj = evaluateBytesBytesFunChain name complement obj-evaluateBuiltinFunChain name@"Lorg_eolang_bytes_right" obj = evaluateBinaryDataizationFunChain name intToBytes bytesToInt wrapBytesInBytes extractRho (extractLabel "x") (\x i -> shift x (-i)) obj-evaluateBuiltinFunChain name@"Lorg_eolang_bytes_concat" obj = evaluateBinaryDataizationFunChain name id id wrapBytesInBytes extractRho (extractLabel "b") concatBytes obj--- float-evaluateBuiltinFunChain name@"Lorg_eolang_float_gt" obj = evaluateBinaryDataizationFunChain name boolToBytes bytesToFloat wrapBytesInBytes extractRho (extractLabel "x") (>) obj-evaluateBuiltinFunChain name@"Lorg_eolang_float_times" obj = evaluateFloatFloatFloatFunChain name (*) obj-evaluateBuiltinFunChain name@"Lorg_eolang_float_plus" obj = evaluateFloatFloatFloatFunChain name (+) obj-evaluateBuiltinFunChain name@"Lorg_eolang_float_div" obj = evaluateFloatFloatFloatFunChain name (/) obj--- string-evaluateBuiltinFunChain name@"Lorg_eolang_string_length" obj = evaluateUnaryDataizationFunChain name intToBytes bytesToString wrapBytesInInt extractRho length obj-evaluateBuiltinFunChain name@"Lorg_eolang_string_slice" obj = \state -> do- thisStr <- incLogLevel $ dataizeRecursivelyChain True (extractRho obj)- string <- case thisStr of- Right bytes -> pure $ bytesToString bytes- Left _ -> fail "Couldn't find bytes"- evaluateBinaryDataizationFunChain name stringToBytes bytesToInt wrapBytesInString (extractLabel "start") (extractLabel "len") (\start len -> take len (drop start string)) obj state--- malloc--- evaluateBuiltinFunChain name@"Lorg_eolang_malloc_φ" obj = _ -- TODO--- evaluateBuiltinFunChain name@"Lorg_eolang_malloc_memory_block_pointer_read" obj = _ -- TODO--- evaluateBuiltinFunChain name@"Lorg_eolang_malloc_memory_block_pointer_write" obj = _ -- TODO--- evaluateBuiltinFunChain name@"Lorg_eolang_malloc_memory_block_pointer_free" obj = _ -- TODO--- cage--- evaluateBuiltinFunChain name@"Lorg_eolang_cage_φ" obj = _ -- TODO--- evaluateBuiltinFunChain name@"Lorg_eolang_cage_encaged_φ" obj = _ -- TODO--- evaluateBuiltinFunChain name@"Lorg_eolang_cage_encaged_encage" obj = _ -- TODO--- I/O--- evaluateBuiltinFunChain name@"Lorg_eolang_io_stdin_next_line" obj = evaluateIODataizationFunChain getLine obj--- evaluateBuiltinFunChain name@"Lorg_eolang_io_stdin_φ" obj = evaluateIODataizationFunChain getContents obj--- evaluateBuiltinFunChain name@"Lorg_eolang_io_stdout" obj = evaluateUnaryDataizationFunChain boolToBytes bytesToString wrapBytesInBytes (extractLabel "text") ((`seq` True) . unsafePerformIO . putStrLn) obj--- others-evaluateBuiltinFunChain name@"Lorg_eolang_dataized" obj =- evaluateUnaryDataizationFunChain name id id wrapBytesInBytes (extractLabel "target") id obj-evaluateBuiltinFunChain name@"Lorg_eolang_error" obj = evaluateUnaryDataizationFunChain name stringToBytes bytesToString wrapBytesInBytes (extractLabel "message") error obj--- evaluateBuiltinFunChain name@"Lorg_eolang_seq" obj = _ -- TODO--- evaluateBuiltinFunChain name@"Lorg_eolang_as_phi" obj = _ -- TODO--- evaluateBuiltinFunChain name@"Lorg_eolang_rust" obj = _ -- TODO--- evaluateBuiltinFunChain name@"Lorg_eolang_try" obj = _ -- TODO-evaluateBuiltinFunChain "Package" obj@(Formation bindings) = do- \state -> do- fmap dataizePackage getContext >>= \case- True -> do- let (packageBindings, restBindings) = span isPackage bindings- bs <- mapM dataizeBindingChain restBindings- logStep "Dataized 'Package' siblings" (Left $ Formation (bs ++ packageBindings))- return (Formation (bs ++ packageBindings), state)- False ->- return (Formation bindings, state)- where- isPackage (LambdaBinding (Function "Package")) = True- isPackage _ = False- dataizeBindingChain (AlphaBinding attr o) = do- ctx <- getContext- let extendedContext = (extendContextWith obj ctx){currentAttr = attr}- dataizationResult <- incLogLevel $ withContext extendedContext $ dataizeRecursivelyChain False o- return (AlphaBinding attr (either id (Formation . singleton . DeltaBinding) dataizationResult))- dataizeBindingChain b = return b-evaluateBuiltinFunChain atomName obj = \state -> do- logStep ("[WARNING]: unknown atom (" <> atomName <> ")") (Left obj)+evaluateBuiltinFunChain name obj =+ case HashMap.lookup name knownAtomsSet of+ Just f -> f name obj+ Nothing -> evaluateBuiltinFunChainUnknown name obj++evaluateBuiltinFunChainUnknown :: String -> a -> b1 -> Chain (Either a b2) (a, b1)+evaluateBuiltinFunChainUnknown atomName obj state = do+ logStep [fmt|[INFO]: unknown atom ({atomName})|] (Left obj) return (obj, state) -- | Like `evaluateDataizationFun` but specifically for the built-in functions.
src/Language/EO/Phi/Normalize.hs view
@@ -50,6 +50,7 @@ ThisObject -> PeeledObject HeadThis [] Termination -> PeeledObject HeadTermination [] MetaObject _ -> PeeledObject HeadTermination []+ MetaTailContext{} -> error "impossible" MetaFunction _ _ -> error "To be honest, I'm not sure what should be here" MetaSubstThis{} -> error "impossible" where
src/Language/EO/Phi/Pipeline/Config.hs view
@@ -96,9 +96,18 @@ $(deriveJSON ''TestSetEO) +data AtomsSet = AtomsSet+ { enable :: Maybe [String]+ , disable :: Maybe [String]+ }+ deriving stock (Show, Generic)++$(deriveJSON ''AtomsSet)+ data TestSet = TestSet { eo :: TestSetEO , phi :: TestSetPhi+ , atoms :: Maybe AtomsSet , enable :: Maybe Bool -- ^ -- Whether to enable this test set.
+ src/Language/EO/Phi/Pipeline/Dataize/PrintConfigs.hs view
@@ -0,0 +1,32 @@+{-# LANGUAGE OverloadedRecordDot #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE RecordWildCards #-}++module Language.EO.Phi.Pipeline.Dataize.PrintConfigs where++import Data.Functor ((<&>))+import Data.List (stripPrefix)+import Data.Maybe+import Language.EO.Phi.Pipeline.Config+import PyF (fmt)++printDataizeConfigs :: PipelineConfig -> [String] -> Bool -> IO ()+printDataizeConfigs pipelineConfig phiPrefixes singleLine = do+ let args =+ pipelineConfig.testSets <&> \testSet ->+ let phiInitial = testSet.phi.initial+ phi =+ case catMaybes [stripPrefix prefix phiInitial | prefix <- phiPrefixes] of+ [] -> phiInitial+ x : _ -> x+ atoms = case testSet.atoms of+ Nothing -> ""+ Just (AtomsSet{..}) ->+ let enable' = unwords . ((\atom -> [fmt|--enable-atom {atom}|]) <$>) <$> enable+ disable' = unwords . ((\atom -> [fmt|--disable-atom {atom}|]) <$>) <$> disable+ in unwords (catMaybes [enable', disable'])+ enableTestSet+ | fromMaybe True testSet.enable = "true"+ | otherwise = "false"+ in [fmt|'{{"atoms": "{atoms}", "phi": "{phi}", "enable": "{enableTestSet}"}}'|]+ putStrLn ((if singleLine then unwords else unlines) args)
src/Language/EO/Phi/Rules/Common.hs view
@@ -1,13 +1,14 @@ {-# HLINT ignore "Use &&" #-} {-# LANGUAGE DeriveFunctor #-}+{-# HLINT ignore "Redundant fmap" #-}+{-# LANGUAGE DerivingStrategies #-}+{-# LANGUAGE GeneralisedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ViewPatterns #-} {-# OPTIONS_GHC -Wno-orphans #-} {-# OPTIONS_GHC -Wno-unrecognised-pragmas #-} -{-# HLINT ignore "Redundant fmap" #-}- module Language.EO.Phi.Rules.Common where import Control.Applicative (Alternative ((<|>)), asum)@@ -16,9 +17,9 @@ import Data.ByteString (ByteString) import Data.ByteString qualified as ByteString.Strict import Data.Char (toUpper)+import Data.HashSet (HashSet) import Data.List (intercalate, minimumBy, nubBy, sortOn) import Data.List.NonEmpty (NonEmpty (..), (<|))-import Data.List.NonEmpty qualified as NonEmpty import Data.Ord (comparing) import Data.Serialize qualified as Serialize import Data.String (IsString (..))@@ -42,6 +43,8 @@ instance IsString PeeledObject where fromString = unsafeParseWith pPeeledObject instance IsString ObjectHead where fromString = unsafeParseWith pObjectHead +instance IsString MetaId where fromString = unsafeParseWith pMetaId+ parseWith :: ([Token] -> Either String a) -> String -> Either String a parseWith parser input = parser tokens where@@ -60,10 +63,12 @@ data Context = Context { builtinRules :: Bool , allRules :: [NamedRule]+ , enabledAtomNames :: HashSet String , outerFormations :: NonEmpty Object , currentAttr :: Attribute , insideFormation :: Bool -- ^ Temporary hack for applying Ksi and Phi rules when dataizing+ , insideAbstractFormation :: Bool , dataizePackage :: Bool -- ^ Temporary flag to only dataize Package attributes for the top-level formation. , minimizeTerms :: Bool@@ -77,19 +82,6 @@ , currentAttr ctx1 == currentAttr ctx2 ] -defaultContext :: [NamedRule] -> Object -> Context-defaultContext rules obj =- Context- { builtinRules = False- , allRules = rules- , outerFormations = NonEmpty.singleton obj- , currentAttr = Phi- , insideFormation = False- , dataizePackage = True- , minimizeTerms = False- , insideSubObject = False- }- -- | A rule tries to apply a transformation to the root object, if possible. type Rule = Context -> Object -> [Object] @@ -117,9 +109,11 @@ withSubObject f ctx root = f ctx root <|> case root of- Formation bindings- | not (any isEmptyBinding bindings) -> propagateName1 Formation <$> withSubObjectBindings f ((extendContextWith root subctx){insideFormation = True}) bindings- | otherwise -> []+ Formation bindings ->+ propagateName1 Formation+ <$> withSubObjectBindings f ((extendContextWith root subctx){insideFormation = True, insideAbstractFormation = isAbstract}) bindings+ where+ isAbstract = any isEmptyBinding bindings Application obj bindings -> asum [ propagateName2 Application <$> withSubObject f subctx obj <*> pure bindings@@ -131,6 +125,7 @@ Termination -> [] MetaObject _ -> [] MetaFunction _ _ -> []+ MetaTailContext{} -> [] MetaSubstThis _ _ -> [] where subctx = ctx{insideSubObject = True}@@ -199,6 +194,7 @@ MetaObject{} -> 1 -- should be impossible MetaFunction{} -> 1 -- should be impossible MetaSubstThis{} -> 1 -- should be impossible+ MetaTailContext{} -> 1 -- should be impossible bindingSize :: Binding -> Int bindingSize = \case@@ -250,7 +246,7 @@ attr DeltaEmptyBinding = Label (LabelId "Δ") attr (MetaDeltaBinding _) = Label (LabelId "Δ") attr (LambdaBinding _) = Label (LabelId "λ")- attr (MetaBindings metaId) = MetaAttr metaId+ attr (MetaBindings (BindingsMetaId metaId)) = MetaAttr (LabelMetaId metaId) equalBinding :: Binding -> Binding -> Bool equalBinding (AlphaBinding attr1 obj1) (AlphaBinding attr2 obj2) = attr1 == attr2 && equalObject obj1 obj2
src/Language/EO/Phi/Rules/Fast.hs view
@@ -6,25 +6,11 @@ import Data.List.NonEmpty qualified as NonEmpty import Language.EO.Phi.Rules.Common import Language.EO.Phi.Rules.Yaml qualified as Yaml-import Language.EO.Phi.Syntax (printTree) import Language.EO.Phi.Syntax.Abs-import System.IO.Unsafe (unsafePerformIO) -- $setup -- >>> :set -XOverloadedStrings -runWithYegorRules :: (Context -> Object -> Object) -> Object -> IO ()-runWithYegorRules f obj = putStrLn (printTree (f (defaultContext yegorRules obj) obj))--yegorRuleSet :: Yaml.RuleSet-{-# NOINLINE yegorRuleSet #-}-yegorRuleSet =- unsafePerformIO $- Yaml.parseRuleSetFromFile "eo-phi-normalizer/test/eo/phi/rules/yegor.yaml"--yegorRules :: [NamedRule]-yegorRules = map Yaml.convertRuleNamed (Yaml.rules yegorRuleSet)- withBinding :: (Context -> Object -> Object) -> Context -> Binding -> Binding withBinding f ctx = \case AlphaBinding Rho obj -> AlphaBinding Rho obj -- do not apply f inside ρ-bindings@@ -199,4 +185,5 @@ Termination -> Termination MetaSubstThis{} -> error "impossible MetaSubstThis!" MetaObject{} -> error "impossible MetaObject!"+ MetaTailContext{} -> error "impossible MetaTailContext!" MetaFunction{} -> error "impossible MetaFunction!"
+ src/Language/EO/Phi/Rules/RunYegor.hs view
@@ -0,0 +1,20 @@+module Language.EO.Phi.Rules.RunYegor where++import Language.EO.Phi.Dataize+import Language.EO.Phi.Rules.Common+import Language.EO.Phi.Rules.Yaml qualified as Yaml+import Language.EO.Phi.Syntax (printTree)+import Language.EO.Phi.Syntax.Abs+import System.IO.Unsafe (unsafePerformIO)++runWithYegorRules :: (Context -> Object -> Object) -> Object -> IO ()+runWithYegorRules f obj = putStrLn (printTree (f (defaultContext yegorRules obj) obj))++yegorRuleSet :: Yaml.RuleSet+{-# NOINLINE yegorRuleSet #-}+yegorRuleSet =+ unsafePerformIO $+ Yaml.parseRuleSetFromFile "eo-phi-normalizer/test/eo/phi/rules/yegor.yaml"++yegorRules :: [NamedRule]+yegorRules = map Yaml.convertRuleNamed (Yaml.rules yegorRuleSet)
src/Language/EO/Phi/Rules/Yaml.hs view
@@ -8,12 +8,14 @@ {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeApplications #-}+{-# OPTIONS_GHC -Wno-forall-identifier #-} {-# OPTIONS_GHC -Wno-orphans #-} {-# OPTIONS_GHC -Wno-partial-fields #-}+{-# OPTIONS_GHC -Wno-type-defaults #-} module Language.EO.Phi.Rules.Yaml where -import Control.Monad (guard)+import Control.Monad (guard, unless) import Control.Monad.State (State, evalState) import Data.Aeson (FromJSON (..), Options (sumEncoding), SumEncoding (UntaggedValue), genericParseJSON) import Data.Aeson.Types (defaultOptions)@@ -21,13 +23,16 @@ import Data.List (intercalate) import Data.List.NonEmpty qualified as NonEmpty import Data.Maybe (fromMaybe)+import Data.Set (Set)+import Data.Set qualified as Set import Data.String (IsString (..)) import Data.Yaml qualified as Yaml import GHC.Generics (Generic) -import Language.EO.Phi-import Language.EO.Phi.Rules.Common (Context (insideFormation, outerFormations), NamedRule)+import Language.EO.Phi (printTree)+import Language.EO.Phi.Rules.Common (Context (..), NamedRule) import Language.EO.Phi.Rules.Common qualified as Common+import Language.EO.Phi.Syntax.Abs import PyF (fmt) -- $setup@@ -36,7 +41,16 @@ instance FromJSON Object where parseJSON = fmap fromString . parseJSON instance FromJSON Binding where parseJSON = fmap fromString . parseJSON-instance FromJSON MetaId where parseJSON = fmap MetaId . parseJSON++instance FromJSON ObjectMetaId where parseJSON = fmap ObjectMetaId . parseJSON+instance FromJSON LabelMetaId where parseJSON = fmap LabelMetaId . parseJSON+instance FromJSON TailMetaId where parseJSON = fmap TailMetaId . parseJSON+instance FromJSON BindingsMetaId where parseJSON = fmap BindingsMetaId . parseJSON+instance FromJSON BytesMetaId where parseJSON = fmap BytesMetaId . parseJSON++instance FromJSON MetaId where+ parseJSON = fmap fromString . parseJSON+ instance FromJSON Attribute where parseJSON = fmap fromString . parseJSON instance FromJSON RuleAttribute where parseJSON = fmap fromString . parseJSON @@ -60,13 +74,21 @@ { name :: String , description :: String , context :: Maybe RuleContext+ , forall :: Maybe [MetaId] , pattern :: Object , result :: Object+ , fresh :: Maybe [FreshMetaId] , when :: [Condition] , tests :: [RuleTest] } deriving (Generic, FromJSON, Show) +data FreshMetaId = FreshMetaId+ { name :: LabelMetaId+ , prefix :: Maybe String+ }+ deriving (Generic, FromJSON, Show)+ data RuleTest = RuleTest { name :: String , input :: Object@@ -86,6 +108,7 @@ | AbsentAttrs {absent_attrs :: AttrsInBindings} | AttrNotEqual {not_equal :: (Attribute, Attribute)} | ApplyInSubformations {apply_in_subformations :: Bool}+ | ApplyInAbstractSubformations {apply_in_abstract_subformations :: Bool} deriving (Generic, Show) instance FromJSON Condition where parseJSON = genericParseJSON defaultOptions{sumEncoding = UntaggedValue}@@ -95,12 +118,44 @@ convertRule :: Rule -> Common.Rule convertRule Rule{..} ctx obj = do+ -- first validate pattern and result in the rule+ -- TODO: we should perform this check once, not every time we run the rule+ let freshMetaIds =+ Set.mapMonotonic MetaIdLabel $+ foldMap (Set.fromList . map (\FreshMetaId{name = x} -> x)) fresh++ patternMetaIds = objectMetaIds pattern+ resultMetaIds = objectMetaIds result++ unusedFreshMetaIds = Set.difference freshMetaIds resultMetaIds++ ppMetaIds = intercalate ", " . map printTree . Set.toList++ unless (null unusedFreshMetaIds) $+ error ("invalid rule: result does not use some fresh variables quantified by the fresh: " <> ppMetaIds unusedFreshMetaIds)++ case forall of+ Nothing -> return ()+ Just forall' -> do+ let forallMetaIds = Set.fromList forall'+ resultAllowedMetaIds = forallMetaIds <> freshMetaIds+ unquantifiedMetaIds = Set.difference patternMetaIds forallMetaIds+ unusedMetaIds = Set.difference forallMetaIds patternMetaIds+ unquantifiedResultMetaIds = Set.difference resultMetaIds resultAllowedMetaIds+ unless (null unquantifiedMetaIds) $+ error ("invalid rule: pattern uses meta variables not quantified by the forall: " <> ppMetaIds unquantifiedMetaIds)+ unless (null unusedMetaIds) $+ error ("invalid rule: pattern does not use some variables quantified by the forall: " <> ppMetaIds unusedMetaIds)+ unless (null unquantifiedResultMetaIds) $+ error ("invalid rule: result uses meta variables not quantified by the forall or the fresh: " <> ppMetaIds unquantifiedResultMetaIds)+ contextSubsts <- matchContext ctx context let pattern' = applySubst contextSubsts pattern result' = applySubst contextSubsts result subst <- matchObject pattern' obj guard $ all (\cond -> checkCond ctx cond (contextSubsts <> subst)) when- let result'' = applySubst (contextSubsts <> subst) result'+ let substFresh = mkFreshSubst ctx result' fresh+ result'' = applySubst (contextSubsts <> subst <> substFresh) result' -- TODO #152:30m what context should we pass to evaluate meta funcs? obj' = evaluateMetaFuncs obj result'' guard $ not (objectHasMetavars obj')@@ -109,6 +164,65 @@ convertRuleNamed :: Rule -> NamedRule convertRuleNamed rule = (rule.name, convertRule rule) +mkFreshSubst :: Context -> Object -> Maybe [FreshMetaId] -> Subst+mkFreshSubst ctx obj metas =+ Subst+ { objectMetas = []+ , bindingsMetas = []+ , attributeMetas = mkFreshAttributes (usedLabelIds ctx <> objectLabelIds obj) (fromMaybe [] metas)+ , bytesMetas = []+ , contextMetas = []+ }++mkFreshAttributes :: Set LabelId -> [FreshMetaId] -> [(LabelMetaId, Attribute)]+mkFreshAttributes _ids [] = []+mkFreshAttributes ids (x : xs) =+ case mkFreshAttribute ids x of+ (ma, ids') -> ma : mkFreshAttributes ids' xs++mkFreshAttribute :: Set LabelId -> FreshMetaId -> ((LabelMetaId, Attribute), Set LabelId)+mkFreshAttribute ids FreshMetaId{..} = ((name, Label label), Set.insert label ids)+ where+ label =+ head+ [ l+ | i <- [1 ..]+ , let l = LabelId (fromMaybe "tmp" prefix <> "$" <> show i)+ , l `Set.notMember` ids+ ]++usedLabelIds :: Context -> Set LabelId+usedLabelIds Context{..} = objectLabelIds globalObject+ where+ globalObject = NonEmpty.last outerFormations++objectLabelIds :: Object -> Set LabelId+objectLabelIds = \case+ GlobalObject -> mempty+ ThisObject -> mempty+ Formation bindings -> foldMap bindingLabelIds bindings+ ObjectDispatch obj a -> objectLabelIds obj <> attrLabelIds a+ Application obj bindings -> objectLabelIds obj <> foldMap bindingLabelIds bindings+ Termination -> mempty+ MetaObject{} -> mempty+ MetaFunction _ obj -> objectLabelIds obj+ MetaTailContext obj _ -> objectLabelIds obj+ MetaSubstThis obj obj' -> objectLabelIds obj <> objectLabelIds obj'++bindingLabelIds :: Binding -> Set LabelId+bindingLabelIds = \case+ AlphaBinding a obj -> objectLabelIds obj <> attrLabelIds a+ DeltaBinding _bytes -> mempty+ EmptyBinding a -> attrLabelIds a+ DeltaEmptyBinding -> mempty+ LambdaBinding _ -> mempty+ MetaBindings _ -> mempty+ MetaDeltaBinding _ -> mempty++attrLabelIds :: Attribute -> Set LabelId+attrLabelIds (Label l) = Set.singleton l+attrLabelIds _ = mempty+ -- >>> matchContext (Context [] ["⟦ a ↦ ⟦ ⟧, x ↦ ξ.a ⟧"] (Label (LabelId "x"))) (Just (RuleContext Nothing (Just "⟦ !a ↦ !obj, !B ⟧") (Just "!a"))) -- [Subst { -- objectMetas = [!obj -> 'ξ.a']@@ -126,6 +240,34 @@ globalObject = NonEmpty.last outerFormations thisObject = NonEmpty.head outerFormations +objectMetaIds :: Object -> Set MetaId+objectMetaIds (Formation bindings) = foldMap bindingMetaIds bindings+objectMetaIds (Application object bindings) = objectMetaIds object <> foldMap bindingMetaIds bindings+objectMetaIds (ObjectDispatch object attr) = objectMetaIds object <> attrMetaIds attr+objectMetaIds GlobalObject = mempty+objectMetaIds ThisObject = mempty+objectMetaIds Termination = mempty+objectMetaIds (MetaObject x) = Set.singleton (MetaIdObject x)+objectMetaIds (MetaFunction _ obj) = objectMetaIds obj+objectMetaIds (MetaTailContext obj x) = objectMetaIds obj <> Set.singleton (MetaIdTail x)+objectMetaIds (MetaSubstThis obj obj') = foldMap objectMetaIds [obj, obj']++bindingMetaIds :: Binding -> Set MetaId+bindingMetaIds (AlphaBinding attr obj) = attrMetaIds attr <> objectMetaIds obj+bindingMetaIds (EmptyBinding attr) = attrMetaIds attr+bindingMetaIds (DeltaBinding _) = mempty+bindingMetaIds DeltaEmptyBinding = mempty+bindingMetaIds (LambdaBinding _) = mempty+bindingMetaIds (MetaBindings x) = Set.singleton (MetaIdBindings x)+bindingMetaIds (MetaDeltaBinding x) = Set.singleton (MetaIdBytes x)++attrMetaIds :: Attribute -> Set MetaId+attrMetaIds Phi = mempty+attrMetaIds Rho = mempty+attrMetaIds (Label _) = mempty+attrMetaIds (Alpha _) = mempty+attrMetaIds (MetaAttr x) = Set.singleton (MetaIdLabel x)+ objectHasMetavars :: Object -> Bool objectHasMetavars (Formation bindings) = any bindingHasMetavars bindings objectHasMetavars (Application object bindings) = objectHasMetavars object || any bindingHasMetavars bindings@@ -135,6 +277,7 @@ objectHasMetavars Termination = False objectHasMetavars (MetaObject _) = True objectHasMetavars (MetaFunction _ _) = True+objectHasMetavars MetaTailContext{} = True objectHasMetavars (MetaSubstThis _ _) = True -- technically not a metavar, but a substitution bindingHasMetavars :: Binding -> Bool@@ -177,6 +320,9 @@ checkCond ctx (ApplyInSubformations shouldApply) _subst | shouldApply = True | otherwise = not (insideFormation ctx)+checkCond ctx (ApplyInAbstractSubformations shouldApply) _subst+ | shouldApply = True+ | otherwise = not (insideAbstractFormation ctx) hasAttr :: RuleAttribute -> [Binding] -> Bool hasAttr attr = any (isAttr attr)@@ -201,11 +347,18 @@ -- actual result (after applying substitution): -- ⟦ c ↦ ⟦ ⟧ ⟧(ρ ↦ ⟦ b ↦ ⟦ ⟧ ⟧) +data OneHoleContext = OneHoleContext+ { holeMetaId :: !ObjectMetaId+ , contextObject :: !Object+ }+ deriving (Show)+ data Subst = Subst- { objectMetas :: [(MetaId, Object)]- , bindingsMetas :: [(MetaId, [Binding])]- , attributeMetas :: [(MetaId, Attribute)]- , bytesMetas :: [(MetaId, Bytes)]+ { objectMetas :: [(ObjectMetaId, Object)]+ , bindingsMetas :: [(BindingsMetaId, [Binding])]+ , attributeMetas :: [(LabelMetaId, Attribute)]+ , bytesMetas :: [(BytesMetaId, Bytes)]+ , contextMetas :: [(TailMetaId, OneHoleContext)] } instance Show Subst where show Subst{..} =@@ -216,10 +369,11 @@ , " bindingsMetas = [" <> showMappings bindingsMetas <> "]" , " attributeMetas = [" <> showMappings attributeMetas <> "]" , " bytesMetas = [" <> showMappings bytesMetas <> "]"+ , " contextMetas = [" <> show contextMetas <> "]" , "}" ] where- showMappings metas = intercalate "; " $ map (\(MetaId metaId, obj) -> [fmt|{metaId} -> '{printTree obj}'|]) metas+ showMappings metas = intercalate "; " $ map (\(metaId, obj) -> [fmt|{printTree metaId} -> '{printTree obj}'|]) metas instance Semigroup Subst where (<>) = mergeSubst@@ -228,7 +382,7 @@ mempty = emptySubst emptySubst :: Subst-emptySubst = Subst [] [] [] []+emptySubst = Subst [] [] [] [] [] -- >>> putStrLn $ Language.EO.Phi.printTree (applySubst (Subst [("!n", "⟦ c ↦ ⟦ ⟧ ⟧")] [("!B", ["b ↦ ⟦ ⟧"])] [("!a", "a")]) "!n(ρ ↦ ⟦ !B ⟧)" :: Object) -- ⟦ c ↦ ⟦ ⟧ ⟧ (ρ ↦ ⟦ b ↦ ⟦ ⟧ ⟧)@@ -246,6 +400,12 @@ Termination -> Termination MetaSubstThis obj thisObj -> MetaSubstThis (applySubst subst thisObj) (applySubst subst obj) obj@MetaFunction{} -> obj+ MetaTailContext obj c ->+ case lookup c contextMetas of+ Nothing -> MetaTailContext (applySubst subst obj) c+ Just OneHoleContext{..} ->+ let holeSubst = mempty{objectMetas = [(holeMetaId, applySubst subst obj)]}+ in applySubst holeSubst contextObject applySubstAttr :: Subst -> Attribute -> Attribute applySubstAttr Subst{..} = \case@@ -268,8 +428,8 @@ b@(MetaDeltaBinding m) -> maybe [b] (pure . DeltaBinding) (lookup m bytesMetas) mergeSubst :: Subst -> Subst -> Subst-mergeSubst (Subst xs ys zs ws) (Subst xs' ys' zs' ws') =- Subst (xs ++ xs') (ys ++ ys') (zs ++ zs') (ws ++ ws')+mergeSubst (Subst xs ys zs ws us) (Subst xs' ys' zs' ws' us') =+ Subst (xs ++ xs') (ys ++ ys') (zs ++ zs') (ws ++ ws') (us ++ us') -- 1. need to implement applySubst' :: Subst -> Object -> Object -- 2. complete the code@@ -285,11 +445,41 @@ pure (subst1 <> subst2) matchObject (MetaObject m) obj = pure emptySubst{objectMetas = [(m, obj)]}+matchObject (MetaTailContext pat x) obj = do+ (subst@Subst{..}, matchedCtx) <- matchOneHoleContext x pat obj+ return subst{contextMetas = contextMetas <> [(x, matchedCtx)]} matchObject Termination Termination = [emptySubst] matchObject ThisObject ThisObject = [emptySubst] matchObject GlobalObject GlobalObject = [emptySubst] matchObject _ _ = [] -- ? emptySubst ? +matchOneHoleContext :: TailMetaId -> Object -> Object -> [(Subst, OneHoleContext)]+matchOneHoleContext ctxId pat obj = matchWhole <> matchPart+ where+ TailMetaId name = ctxId+ holeId = ObjectMetaId (name ++ ":hole") -- FIXME: ensure fresh names+ matchWhole = do+ subst' <- matchObject pat obj+ pure (subst', OneHoleContext holeId (MetaObject holeId))+ matchPart = case obj of+ ObjectDispatch obj' a -> do+ (subst, OneHoleContext{..}) <- matchOneHoleContext ctxId pat obj'+ return (subst, OneHoleContext{contextObject = ObjectDispatch contextObject a, ..})+ -- FIXME: consider matching inside bindings of application as well+ Application obj' bindings -> do+ (subst, OneHoleContext{..}) <- matchOneHoleContext ctxId pat obj'+ return (subst, OneHoleContext{contextObject = Application contextObject bindings, ..})+ -- cases below cannot be matched+ Formation{} -> []+ GlobalObject -> []+ ThisObject -> []+ Termination -> []+ -- should cases below be errors?+ MetaSubstThis{} -> []+ MetaObject{} -> []+ MetaTailContext{} -> []+ MetaFunction{} -> []+ -- | Evaluate meta functions -- given top-level context as an object -- and an object@@ -390,6 +580,7 @@ ObjectDispatch obj a -> ObjectDispatch (go obj) a GlobalObject -> GlobalObject Termination -> Termination+ obj@MetaTailContext{} -> error ("impossible: trying to substitute ξ in " <> printTree obj) obj@MetaSubstThis{} -> error ("impossible: trying to substitute ξ in " <> printTree obj) obj@MetaObject{} -> error ("impossible: trying to substitute ξ in " <> printTree obj) obj@MetaFunction{} -> error ("impossible: trying to substitute ξ in " <> printTree obj)
src/Language/EO/Phi/Syntax/Abs.hs view
@@ -18,6 +18,14 @@ data Program = Program [Binding] deriving (C.Eq, C.Ord, C.Show, C.Read, C.Data, C.Typeable, C.Generic) +data MetaId+ = MetaIdLabel LabelMetaId+ | MetaIdTail TailMetaId+ | MetaIdBindings BindingsMetaId+ | MetaIdObject ObjectMetaId+ | MetaIdBytes BytesMetaId+ deriving (C.Eq, C.Ord, C.Show, C.Read, C.Data, C.Typeable, C.Generic)+ data Object = Formation [Binding] | Application Object [Binding]@@ -26,7 +34,8 @@ | ThisObject | Termination | MetaSubstThis Object Object- | MetaObject MetaId+ | MetaObject ObjectMetaId+ | MetaTailContext Object TailMetaId | MetaFunction MetaFunctionName Object deriving (C.Eq, C.Ord, C.Show, C.Read, C.Data, C.Typeable, C.Generic) @@ -36,12 +45,16 @@ | DeltaBinding Bytes | DeltaEmptyBinding | LambdaBinding Function- | MetaBindings MetaId- | MetaDeltaBinding MetaId+ | MetaBindings BindingsMetaId+ | MetaDeltaBinding BytesMetaId deriving (C.Eq, C.Ord, C.Show, C.Read, C.Data, C.Typeable, C.Generic) data Attribute- = Phi | Rho | Label LabelId | Alpha AlphaIndex | MetaAttr MetaId+ = Phi+ | Rho+ | Label LabelId+ | Alpha AlphaIndex+ | MetaAttr LabelMetaId deriving (C.Eq, C.Ord, C.Show, C.Read, C.Data, C.Typeable, C.Generic) data RuleAttribute = ObjectAttr Attribute | DeltaAttr | LambdaAttr@@ -70,7 +83,19 @@ newtype AlphaIndex = AlphaIndex String deriving (C.Eq, C.Ord, C.Show, C.Read, C.Data, C.Typeable, C.Generic, Data.String.IsString) -newtype MetaId = MetaId String+newtype LabelMetaId = LabelMetaId String+ deriving (C.Eq, C.Ord, C.Show, C.Read, C.Data, C.Typeable, C.Generic, Data.String.IsString)++newtype TailMetaId = TailMetaId String+ deriving (C.Eq, C.Ord, C.Show, C.Read, C.Data, C.Typeable, C.Generic, Data.String.IsString)++newtype BindingsMetaId = BindingsMetaId String+ deriving (C.Eq, C.Ord, C.Show, C.Read, C.Data, C.Typeable, C.Generic, Data.String.IsString)++newtype ObjectMetaId = ObjectMetaId String+ deriving (C.Eq, C.Ord, C.Show, C.Read, C.Data, C.Typeable, C.Generic, Data.String.IsString)++newtype BytesMetaId = BytesMetaId String deriving (C.Eq, C.Ord, C.Show, C.Read, C.Data, C.Typeable, C.Generic, Data.String.IsString) newtype MetaFunctionName = MetaFunctionName String
src/Language/EO/Phi/Syntax/Lex.hs view
@@ -27,13840 +27,20836 @@ alex_tab_size :: Int alex_tab_size = 8 alex_base :: Array Int Int-alex_base = listArray (0 :: Int, 101)- [ -8- , 91- , -153- , -73- , 347- , 348- , -41- , 0- , 140- , 0- , 0- , 0- , 397- , 462- , 526- , -28- , 654- , 718- , 862- , -27- , 885- , 908- , 931- , -140- , -146- , -111- , -118- , -139- , 874- , 1002- , 1258- , 1377- , 0- , 0- , 0- , 1490- , 1555- , 1619- , -132- , -138- , 1747- , 1875- , 2131- , 2250- , 2378- , 2522- , -12- , 0- , 2603- , 2859- , 2860- , 2988- , 2453- , 3053- , 3166- , 0- , 0- , 0- , 0- , 3380- , 3594- , 3850- , 3851- , 3979- , 3236- , 3446- , 4092- , 0- , 0- , 0- , 911- , 0- , -116- , 1255- , -135- , 1247- , 71- , 0- , -11- , 4348- , 4593- , 4838- , 5074- , 5330- , 5331- , 5459- , -114- , -105- , 4284- , 4530- , 5572- , 0- , 0- , 0- , 5828- , 6064- , 4774- , -80- , 6192- , 6305- , 0- , 0- ]--alex_table :: Array Int Int-alex_table = listArray (0 :: Int, 6560)- [ 0- , 70- , 70- , 70- , 70- , 70- , 97- , 7- , 8- , 8- , 8- , 8- , 8- , 8- , 8- , 8- , 8- , 18- , 21- , 24- , -1- , -1- , 71- , 71- , 70- , 31- , 71- , 39- , -1- , -1- , 60- , 71- , 71- , 71- , 77- , 48- , 71- , 78- , 71- , 46- , 20- , 20- , 20- , 20- , 20- , 20- , 20- , 20- , 20- , 20- , 71- , 71- , -1- , -1- , 86- , 0- , 43- , 80- , 80- , 80- , 80- , 80- , 80- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 71- , 0- , 71- , -1- , -1- , 0- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 71- , 0- , 71- , 96- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 0- , 0- , 0- , 0- , 16- , 8- , 8- , 8- , 8- , 8- , 8- , 8- , 8- , 8- , 8- , 75- , 76- , 71- , 0- , 0- , 0- , 0- , 71- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 73- , 98- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 0- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 0- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 0- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 13- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 14- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 0- , 79- , 79- , 79- , 79- , 79- , 79- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 0- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 0- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 0- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 22- , 22- , 22- , 22- , 22- , 22- , 22- , 22- , 22- , 22- , 70- , 70- , 70- , 70- , 70- , 0- , 0- , 22- , 22- , 22- , 22- , 22- , 22- , 15- , 15- , 15- , 15- , 15- , 15- , 15- , 15- , 15- , 15- , 70- , 0- , 0- , 0- , 0- , 0- , 0- , 15- , 15- , 15- , 15- , 15- , 15- , 22- , 22- , 22- , 22- , 22- , 22- , 22- , 22- , 22- , 22- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 22- , 22- , 22- , 22- , 22- , 22- , 19- , 19- , 19- , 19- , 19- , 19- , 19- , 19- , 19- , 19- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 19- , 19- , 19- , 19- , 19- , 19- , 29- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 30- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 0- , 74- , -1- , 25- , 0- , 27- , 0- , 71- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , 0- , 0- , 71- , 72- , 0- , -1- , -1- , -1- , 26- , 0- , -1- , -1- , -1- , 6- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 71- , -1- , -1- , 71- , 0- , 0- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , 0- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , -1- , 0- , 0- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 30- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 11- , 14- , 29- , 10- , 23- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 10- , 13- , 28- , 9- , 9- , 9- , 12- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 36- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 37- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 41- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 42- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 0- , 0- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , -1- , 0- , 0- , -1- , -1- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , 0- , 0- , 0- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , 0- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , -1- , 0- , 0- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 42- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 34- , 37- , 41- , 33- , 38- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 33- , 36- , 40- , 32- , 32- , 32- , 35- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 0- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , -1- , 0- , 0- , 0- , 45- , 0- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , 45- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 44- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 49- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 52- , 50- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 53- , 51- , 57- , 57- , 57- , 54- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 0- , 49- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 55- , 50- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 56- , 52- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 53- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 59- , 0- , 0- , 0- , 0- , 58- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 61- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 64- , 62- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 65- , 63- , 69- , 69- , 69- , 66- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 59- , 64- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 61- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 64- , 62- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 65- , 63- , 69- , 69- , 69- , 66- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 0- , 61- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 67- , 62- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 68- , 65- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 0- , 0- , 82- , 82- , 0- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 0- , 0- , 82- , 82- , 82- , 82- , 82- , 45- , 0- , 0- , 82- , 82- , 0- , 0- , 0- , 82- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 0- , 0- , 82- , 82- , 82- , 0- , 82- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 0- , 82- , 0- , 82- , 79- , 82- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 0- , 0- , 0- , 82- , 82- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 0- , 0- , 83- , 17- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 88- , 84- , 92- , 87- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 89- , 85- , 93- , 93- , 93- , 90- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 0- , 0- , 82- , 82- , 0- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 0- , 0- , 82- , 82- , 82- , 82- , 82- , 45- , 0- , 0- , 82- , 82- , 0- , 0- , 0- , 82- , 81- , 81- , 81- , 81- , 81- , 81- , 81- , 81- , 81- , 81- , 0- , 0- , 82- , 82- , 82- , 0- , 82- , 81- , 81- , 81- , 81- , 81- , 81- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 0- , 82- , 0- , 82- , 79- , 82- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 0- , 0- , 0- , 82- , 82- , 88- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 0- , 83- , 17- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 88- , 84- , 92- , 87- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 89- , 85- , 93- , 93- , 93- , 90- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 0- , 0- , 82- , 82- , 0- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 82- , 0- , 0- , 82- , 82- , 82- , 82- , 82- , 45- , 0- , 0- , 82- , 82- , 0- , 18- , 0- , 82- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 0- , 0- , 82- , 82- , 82- , 0- , 82- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 0- , 82- , 0- , 82- , 79- , 82- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 79- , 0- , 0- , 0- , 82- , 82- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 0- , 0- , 83- , 17- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 88- , 84- , 92- , 87- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 89- , 85- , 93- , 93- , 93- , 90- , -1- , -1- , 0- , 0- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , -1- , 0- , 0- , -1- , -1- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , 0- , 0- , 0- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , 0- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , -1- , 0- , 0- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 83- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 88- , 84- , 92- , 87- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 89- , 85- , 93- , 93- , 93- , 90- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 0- , 83- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 91- , 84- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 92- , 89- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 0- , 0- , 95- , 95- , 0- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 95- , 0- , 0- , 95- , 95- , 95- , 95- , 95- , 45- , 0- , 0- , 95- , 95- , 0- , 95- , 0- , 95- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 0- , 0- , 95- , 95- , 95- , 0- , 95- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 0- , 95- , 0- , 95- , 94- , 95- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 94- , 0- , 0- , 0- , 95- , 95- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 4- , 5- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 96- , 98- , 100- , 2- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 3- , 1- , 101- , 101- , 101- , 99- , -1- , -1- , 0- , 0- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , -1- , 0- , 0- , -1- , 0- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , 0- , 0- , 0- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , 0- , -1- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , 0- , -1- , -1- , -1- , 0- , 0- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 4- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 96- , 98- , 100- , 2- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 100- , 3- , 1- , 101- , 101- , 101- , 99- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 4- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 47- , 3- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- ]--alex_check :: Array Int Int-alex_check = listArray (0 :: Int, 6560)- [ -1- , 9- , 10- , 11- , 12- , 13- , 159- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , 45- , 45- , 159- , 166- , 167- , 133- , 141- , 32- , 33- , 165- , 159- , 166- , 167- , 42- , 166- , 40- , 41- , 45- , 47- , 44- , 45- , 46- , 47- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , 166- , 167- , 166- , 167- , 159- , -1- , 64- , 65- , 66- , 67- , 68- , 69- , 70- , 71- , 72- , 73- , 74- , 75- , 76- , 77- , 78- , 79- , 80- , 81- , 82- , 83- , 84- , 85- , 86- , 87- , 88- , 89- , 90- , 91- , -1- , 93- , 166- , 167- , -1- , 97- , 98- , 99- , 100- , 101- , 102- , 103- , 104- , 105- , 106- , 107- , 108- , 109- , 110- , 111- , 112- , 113- , 114- , 115- , 116- , 117- , 118- , 119- , 120- , 121- , 122- , 123- , -1- , 125- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , -1- , -1- , -1- , -1- , 195- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , 206- , 207- , 129- , -1- , -1- , -1- , -1- , 134- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 226- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 0- , 1- , 2- , 3- , 4- , 5- , 6- , 7- , 8- , 9- , 10- , 11- , 12- , 13- , 14- , 15- , 16- , 17- , 18- , 19- , 20- , 21- , 22- , 23- , 24- , 25- , 26- , 27- , 28- , 29- , 30- , 31- , 32- , 33- , 34- , 35- , 36- , 37- , 38- , 39- , 40- , 41- , 42- , 43- , 44- , 45- , 46- , 47- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , 58- , 59- , 60- , 61- , 62- , 63- , 64- , 65- , 66- , 67- , 68- , 69- , 70- , 71- , 72- , 73- , 74- , 75- , 76- , 77- , 78- , 79- , 80- , 81- , 82- , 83- , 84- , 85- , 86- , 87- , 88- , 89- , 90- , 91- , 92- , 93- , 94- , 95- , 96- , 97- , 98- , 99- , 100- , 101- , 102- , 103- , 104- , 105- , 106- , 107- , 108- , 109- , 110- , 111- , 112- , 113- , 114- , 115- , 116- , 117- , 118- , 119- , 120- , 121- , 122- , 123- , 124- , 125- , 126- , 127- , -1- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , -1- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , -1- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , -1- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , -1- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , -1- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , -1- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , 9- , 10- , 11- , 12- , 13- , -1- , -1- , 65- , 66- , 67- , 68- , 69- , 70- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , 32- , -1- , -1- , -1- , -1- , -1- , -1- , 65- , 66- , 67- , 68- , 69- , 70- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 65- , 66- , 67- , 68- , 69- , 70- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 65- , 66- , 67- , 68- , 69- , 70- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 0- , 1- , 2- , 3- , 4- , 5- , 6- , 7- , 8- , 9- , 10- , 11- , 12- , 13- , 14- , 15- , 16- , 17- , 18- , 19- , 20- , 21- , 22- , 23- , 24- , 25- , 26- , 27- , 28- , 29- , 30- , 31- , 32- , 33- , 34- , 35- , 36- , 37- , 38- , 39- , 40- , 41- , 42- , 43- , 44- , 45- , 46- , 47- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , 58- , 59- , 60- , 61- , 62- , 63- , 64- , 65- , 66- , 67- , 68- , 69- , 70- , 71- , 72- , 73- , 74- , 75- , 76- , 77- , 78- , 79- , 80- , 81- , 82- , 83- , 84- , 85- , 86- , 87- , 88- , 89- , 90- , 91- , 92- , 93- , 94- , 95- , 96- , 97- , 98- , 99- , 100- , 101- , 102- , 103- , 104- , 105- , 106- , 107- , 108- , 109- , 110- , 111- , 112- , 113- , 114- , 115- , 116- , 117- , 118- , 119- , 120- , 121- , 122- , 123- , 124- , 125- , 126- , 127- , 9- , 10- , -1- , 134- , 13- , 136- , -1- , 138- , -1- , 148- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 32- , 33- , -1- , -1- , 166- , 159- , -1- , 39- , 40- , 41- , 164- , -1- , 44- , 45- , 46- , 177- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 187- , 58- , 59- , 190- , -1- , -1- , 63- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 91- , -1- , 93- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 123- , 124- , 125- , -1- , -1- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 0- , 1- , 2- , 3- , 4- , 5- , 6- , 7- , 8- , 9- , 10- , 11- , 12- , 13- , 14- , 15- , 16- , 17- , 18- , 19- , 20- , 21- , 22- , 23- , 24- , 25- , 26- , 27- , 28- , 29- , 30- , 31- , 32- , 33- , 34- , 35- , 36- , 37- , 38- , 39- , 40- , 41- , 42- , 43- , 44- , 45- , 46- , 47- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , 58- , 59- , 60- , 61- , 62- , 63- , 64- , 65- , 66- , 67- , 68- , 69- , 70- , 71- , 72- , 73- , 74- , 75- , 76- , 77- , 78- , 79- , 80- , 81- , 82- , 83- , 84- , 85- , 86- , 87- , 88- , 89- , 90- , 91- , 92- , 93- , 94- , 95- , 96- , 97- , 98- , 99- , 100- , 101- , 102- , 103- , 104- , 105- , 106- , 107- , 108- , 109- , 110- , 111- , 112- , 113- , 114- , 115- , 116- , 117- , 118- , 119- , 120- , 121- , 122- , 123- , 124- , 125- , 126- , 127- , 9- , 10- , -1- , -1- , 13- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 32- , 33- , -1- , -1- , -1- , -1- , -1- , 39- , 40- , 41- , -1- , -1- , 44- , 45- , 46- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 58- , 59- , -1- , -1- , -1- , 63- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 91- , -1- , 93- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 123- , 124- , 125- , -1- , -1- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , -1- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 39- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 65- , 66- , 67- , 68- , 69- , 70- , 71- , 72- , 73- , 74- , 75- , 76- , 77- , 78- , 79- , 80- , 81- , 82- , 83- , 84- , 85- , 86- , 87- , 88- , 89- , 90- , 10- , -1- , -1- , -1- , 95- , -1- , 97- , 98- , 99- , 100- , 101- , 102- , 103- , 104- , 105- , 106- , 107- , 108- , 109- , 110- , 111- , 112- , 113- , 114- , 115- , 116- , 117- , 118- , 119- , 120- , 121- , 122- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 195- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 0- , 1- , 2- , 3- , 4- , 5- , 6- , 7- , 8- , 9- , 10- , 11- , 12- , 13- , 14- , 15- , 16- , 17- , 18- , 19- , 20- , 21- , 22- , 23- , 24- , 25- , 26- , 27- , 28- , 29- , 30- , 31- , 32- , 33- , 34- , 35- , 36- , 37- , 38- , 39- , 40- , 41- , 42- , 43- , 44- , 45- , 46- , 47- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , 58- , 59- , 60- , 61- , 62- , 63- , 64- , 65- , 66- , 67- , 68- , 69- , 70- , 71- , 72- , 73- , 74- , 75- , 76- , 77- , 78- , 79- , 80- , 81- , 82- , 83- , 84- , 85- , 86- , 87- , 88- , 89- , 90- , 91- , 92- , 93- , 94- , 95- , 96- , 97- , 98- , 99- , 100- , 101- , 102- , 103- , 104- , 105- , 106- , 107- , 108- , 109- , 110- , 111- , 112- , 113- , 114- , 115- , 116- , 117- , 118- , 119- , 120- , 121- , 122- , 123- , 124- , 125- , 126- , 127- , -1- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 42- , -1- , -1- , -1- , -1- , 47- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 42- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 0- , 1- , 2- , 3- , 4- , 5- , 6- , 7- , 8- , 9- , 10- , 11- , 12- , 13- , 14- , 15- , 16- , 17- , 18- , 19- , 20- , 21- , 22- , 23- , 24- , 25- , 26- , 27- , 28- , 29- , 30- , 31- , 32- , 33- , 34- , 35- , 36- , 37- , 38- , 39- , 40- , 41- , 42- , 43- , 44- , 45- , 46- , 47- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , 58- , 59- , 60- , 61- , 62- , 63- , 64- , 65- , 66- , 67- , 68- , 69- , 70- , 71- , 72- , 73- , 74- , 75- , 76- , 77- , 78- , 79- , 80- , 81- , 82- , 83- , 84- , 85- , 86- , 87- , 88- , 89- , 90- , 91- , 92- , 93- , 94- , 95- , 96- , 97- , 98- , 99- , 100- , 101- , 102- , 103- , 104- , 105- , 106- , 107- , 108- , 109- , 110- , 111- , 112- , 113- , 114- , 115- , 116- , 117- , 118- , 119- , 120- , 121- , 122- , 123- , 124- , 125- , 126- , 127- , -1- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 0- , 1- , 2- , 3- , 4- , 5- , 6- , 7- , 8- , -1- , -1- , 11- , 12- , -1- , 14- , 15- , 16- , 17- , 18- , 19- , 20- , 21- , 22- , 23- , 24- , 25- , 26- , 27- , 28- , 29- , 30- , 31- , -1- , -1- , 34- , 35- , 36- , 37- , 38- , 39- , -1- , -1- , 42- , 43- , -1- , -1- , -1- , 47- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , -1- , -1- , 60- , 61- , 62- , -1- , 64- , 65- , 66- , 67- , 68- , 69- , 70- , 71- , 72- , 73- , 74- , 75- , 76- , 77- , 78- , 79- , 80- , 81- , 82- , 83- , 84- , 85- , 86- , 87- , 88- , 89- , 90- , -1- , 92- , -1- , 94- , 95- , 96- , 97- , 98- , 99- , 100- , 101- , 102- , 103- , 104- , 105- , 106- , 107- , 108- , 109- , 110- , 111- , 112- , 113- , 114- , 115- , 116- , 117- , 118- , 119- , 120- , 121- , 122- , -1- , -1- , -1- , 126- , 127- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , -1- , -1- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 0- , 1- , 2- , 3- , 4- , 5- , 6- , 7- , 8- , -1- , -1- , 11- , 12- , -1- , 14- , 15- , 16- , 17- , 18- , 19- , 20- , 21- , 22- , 23- , 24- , 25- , 26- , 27- , 28- , 29- , 30- , 31- , -1- , -1- , 34- , 35- , 36- , 37- , 38- , 39- , -1- , -1- , 42- , 43- , -1- , -1- , -1- , 47- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , -1- , -1- , 60- , 61- , 62- , -1- , 64- , 65- , 66- , 67- , 68- , 69- , 70- , 71- , 72- , 73- , 74- , 75- , 76- , 77- , 78- , 79- , 80- , 81- , 82- , 83- , 84- , 85- , 86- , 87- , 88- , 89- , 90- , -1- , 92- , -1- , 94- , 95- , 96- , 97- , 98- , 99- , 100- , 101- , 102- , 103- , 104- , 105- , 106- , 107- , 108- , 109- , 110- , 111- , 112- , 113- , 114- , 115- , 116- , 117- , 118- , 119- , 120- , 121- , 122- , -1- , -1- , -1- , 126- , 127- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , -1- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 0- , 1- , 2- , 3- , 4- , 5- , 6- , 7- , 8- , -1- , -1- , 11- , 12- , -1- , 14- , 15- , 16- , 17- , 18- , 19- , 20- , 21- , 22- , 23- , 24- , 25- , 26- , 27- , 28- , 29- , 30- , 31- , -1- , -1- , 34- , 35- , 36- , 37- , 38- , 39- , -1- , -1- , 42- , 43- , -1- , 45- , -1- , 47- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , -1- , -1- , 60- , 61- , 62- , -1- , 64- , 65- , 66- , 67- , 68- , 69- , 70- , 71- , 72- , 73- , 74- , 75- , 76- , 77- , 78- , 79- , 80- , 81- , 82- , 83- , 84- , 85- , 86- , 87- , 88- , 89- , 90- , -1- , 92- , -1- , 94- , 95- , 96- , 97- , 98- , 99- , 100- , 101- , 102- , 103- , 104- , 105- , 106- , 107- , 108- , 109- , 110- , 111- , 112- , 113- , 114- , 115- , 116- , 117- , 118- , 119- , 120- , 121- , 122- , -1- , -1- , -1- , 126- , 127- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , -1- , -1- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 9- , 10- , -1- , -1- , 13- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 32- , 33- , -1- , -1- , -1- , -1- , -1- , 39- , 40- , 41- , -1- , -1- , 44- , 45- , 46- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 58- , 59- , -1- , -1- , -1- , 63- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 91- , -1- , 93- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 123- , 124- , 125- , -1- , -1- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 0- , 1- , 2- , 3- , 4- , 5- , 6- , 7- , 8- , 9- , 10- , 11- , 12- , 13- , 14- , 15- , 16- , 17- , 18- , 19- , 20- , 21- , 22- , 23- , 24- , 25- , 26- , 27- , 28- , 29- , 30- , 31- , 32- , 33- , 34- , 35- , 36- , 37- , 38- , 39- , 40- , 41- , 42- , 43- , 44- , 45- , 46- , 47- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , 58- , 59- , 60- , 61- , 62- , 63- , 64- , 65- , 66- , 67- , 68- , 69- , 70- , 71- , 72- , 73- , 74- , 75- , 76- , 77- , 78- , 79- , 80- , 81- , 82- , 83- , 84- , 85- , 86- , 87- , 88- , 89- , 90- , 91- , 92- , 93- , 94- , 95- , 96- , 97- , 98- , 99- , 100- , 101- , 102- , 103- , 104- , 105- , 106- , 107- , 108- , 109- , 110- , 111- , 112- , 113- , 114- , 115- , 116- , 117- , 118- , 119- , 120- , 121- , 122- , 123- , 124- , 125- , 126- , 127- , -1- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 0- , 1- , 2- , 3- , 4- , 5- , 6- , 7- , 8- , -1- , -1- , 11- , 12- , -1- , 14- , 15- , 16- , 17- , 18- , 19- , 20- , 21- , 22- , 23- , 24- , 25- , 26- , 27- , 28- , 29- , 30- , 31- , -1- , -1- , 34- , 35- , 36- , 37- , 38- , 39- , -1- , -1- , 42- , 43- , -1- , 45- , -1- , 47- , 48- , 49- , 50- , 51- , 52- , 53- , 54- , 55- , 56- , 57- , -1- , -1- , 60- , 61- , 62- , -1- , 64- , 65- , 66- , 67- , 68- , 69- , 70- , 71- , 72- , 73- , 74- , 75- , 76- , 77- , 78- , 79- , 80- , 81- , 82- , 83- , 84- , 85- , 86- , 87- , 88- , 89- , 90- , -1- , 92- , -1- , 94- , 95- , 96- , 97- , 98- , 99- , 100- , 101- , 102- , 103- , 104- , 105- , 106- , 107- , 108- , 109- , 110- , 111- , 112- , 113- , 114- , 115- , 116- , 117- , 118- , 119- , 120- , 121- , 122- , -1- , -1- , -1- , 126- , 127- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 9- , 10- , -1- , -1- , 13- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 32- , 33- , -1- , -1- , -1- , -1- , -1- , 39- , 40- , 41- , -1- , -1- , 44- , -1- , 46- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 58- , 59- , -1- , -1- , -1- , 63- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 91- , -1- , 93- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 123- , 124- , 125- , -1- , -1- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 128- , 129- , 130- , 131- , 132- , 133- , 134- , 135- , 136- , 137- , 138- , 139- , 140- , 141- , 142- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- , 143- , 144- , 145- , 146- , 147- , 148- , 149- , 150- , 151- , 152- , 153- , 154- , 155- , 156- , 157- , 158- , 159- , 160- , 161- , 162- , 163- , 164- , 165- , 166- , 167- , 168- , 169- , 170- , 171- , 172- , 173- , 174- , 175- , 176- , 177- , 178- , 179- , 180- , 181- , 182- , 183- , 184- , 185- , 186- , 187- , 188- , 189- , 190- , 191- , 192- , 193- , 194- , 195- , 196- , 197- , 198- , 199- , 200- , 201- , 202- , 203- , 204- , 205- , 206- , 207- , 208- , 209- , 210- , 211- , 212- , 213- , 214- , 215- , 216- , 217- , 218- , 219- , 220- , 221- , 222- , 223- , 224- , 225- , 226- , 227- , 228- , 229- , 230- , 231- , 232- , 233- , 234- , 235- , 236- , 237- , 238- , 239- , 240- , 241- , 242- , 243- , 244- , 245- , 246- , 247- , 248- , 249- , 250- , 251- , 252- , 253- , 254- , 255- ]--alex_deflt :: Array Int Int-alex_deflt = listArray (0 :: Int, 101)- [ -1- , -1- , 47- , 47- , 95- , 95- , -1- , -1- , -1- , 10- , 11- , 31- , 10- , 11- , 31- , -1- , -1- , 82- , -1- , -1- , -1- , -1- , -1- , 11- , 31- , -1- , -1- , -1- , -1- , -1- , 31- , 31- , 33- , 34- , 43- , 33- , 34- , 43- , 34- , 43- , -1- , -1- , 43- , 43- , -1- , -1- , -1- , 95- , 48- , 48- , -1- , -1- , 48- , 55- , 56- , 48- , 55- , 56- , -1- , 60- , 60- , 60- , -1- , -1- , 60- , 67- , 68- , 60- , 67- , 68- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , -1- , 82- , 82- , -1- , -1- , 82- , 91- , 82- , 91- , 92- , 82- , 91- , 92- , -1- , 95- , 95- , 95- , -1- , 100- , 47- , 100- ]--alex_accept = listArray (0 :: Int, 101)- [ AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAcc 14- , AlexAcc 13- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAcc 12- , AlexAcc 11- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAcc 10- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAcc 9- , AlexAccNone- , AlexAcc 8- , AlexAccNone- , AlexAccNone- , AlexAccSkip- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccSkip- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccSkip- , AlexAcc 7- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAcc 6- , AlexAccNone- , AlexAcc 5- , AlexAcc 4- , AlexAcc 3- , AlexAcc 2- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAcc 1- , AlexAcc 0- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- , AlexAccNone- ]--alex_actions = array (0 :: Int, 15)- [ (14,alex_action_7)- , (13,alex_action_7)- , (12,alex_action_4)- , (11,alex_action_4)- , (10,alex_action_8)- , (9,alex_action_9)- , (8,alex_action_10)- , (7,alex_action_3)- , (6,alex_action_4)- , (5,alex_action_5)- , (4,alex_action_5)- , (3,alex_action_5)- , (2,alex_action_5)- , (1,alex_action_6)- , (0,alex_action_6)- ]--alex_action_3 = tok (eitherResIdent TV)-alex_action_4 = tok (eitherResIdent T_Bytes)-alex_action_5 = tok (eitherResIdent T_Function)-alex_action_6 = tok (eitherResIdent T_LabelId)-alex_action_7 = tok (eitherResIdent T_AlphaIndex)-alex_action_8 = tok (eitherResIdent T_MetaId)-alex_action_9 = tok (eitherResIdent T_MetaFunctionName)-alex_action_10 = tok (eitherResIdent TV)--#define ALEX_NOPRED 1--- -------------------------------------------------------------------------------- ALEX TEMPLATE------ This code is in the PUBLIC DOMAIN; you may copy it freely and use--- it for any purpose whatsoever.---- -------------------------------------------------------------------------------- INTERNALS and main scanner engine--#ifdef ALEX_GHC-# define ILIT(n) n#-# define IBOX(n) (I# (n))-# define FAST_INT Int#--- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.-# if __GLASGOW_HASKELL__ > 706-# define GTE(n,m) (tagToEnum# (n >=# m))-# define EQ(n,m) (tagToEnum# (n ==# m))-# else-# define GTE(n,m) (n >=# m)-# define EQ(n,m) (n ==# m)-# endif-# define PLUS(n,m) (n +# m)-# define MINUS(n,m) (n -# m)-# define TIMES(n,m) (n *# m)-# define NEGATE(n) (negateInt# (n))-# define IF_GHC(x) (x)-#else-# define ILIT(n) (n)-# define IBOX(n) (n)-# define FAST_INT Int-# define GTE(n,m) (n >= m)-# define EQ(n,m) (n == m)-# define PLUS(n,m) (n + m)-# define MINUS(n,m) (n - m)-# define TIMES(n,m) (n * m)-# define NEGATE(n) (negate (n))-# define IF_GHC(x)-#endif--#ifdef ALEX_GHC-data AlexAddr = AlexA# Addr#--- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.-#if __GLASGOW_HASKELL__ < 503-uncheckedShiftL# = shiftL#-#endif--{-# INLINE alexIndexInt16OffAddr #-}-alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int#-alexIndexInt16OffAddr (AlexA# arr) off =-#ifdef WORDS_BIGENDIAN- narrow16Int# i- where- i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)- high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))- low = int2Word# (ord# (indexCharOffAddr# arr off'))- off' = off *# 2#-#else-#if __GLASGOW_HASKELL__ >= 901- int16ToInt#-#endif- (indexInt16OffAddr# arr off)-#endif-#else-alexIndexInt16OffAddr arr off = arr ! off-#endif--#ifdef ALEX_GHC-{-# INLINE alexIndexInt32OffAddr #-}-alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int#-alexIndexInt32OffAddr (AlexA# arr) off =-#ifdef WORDS_BIGENDIAN- narrow32Int# i- where- i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`- (b2 `uncheckedShiftL#` 16#) `or#`- (b1 `uncheckedShiftL#` 8#) `or#` b0)- b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))- b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))- b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))- b0 = int2Word# (ord# (indexCharOffAddr# arr off'))- off' = off *# 4#-#else-#if __GLASGOW_HASKELL__ >= 901- int32ToInt#-#endif- (indexInt32OffAddr# arr off)-#endif-#else-alexIndexInt32OffAddr arr off = arr ! off-#endif--#ifdef ALEX_GHC--#if __GLASGOW_HASKELL__ < 503-quickIndex arr i = arr ! i-#else--- GHC >= 503, unsafeAt is available from Data.Array.Base.-quickIndex = unsafeAt-#endif-#else-quickIndex arr i = arr ! i-#endif---- -------------------------------------------------------------------------------- Main lexing routines--data AlexReturn a- = AlexEOF- | AlexError !AlexInput- | AlexSkip !AlexInput !Int- | AlexToken !AlexInput !Int a---- alexScan :: AlexInput -> StartCode -> AlexReturn a-alexScan input__ IBOX(sc)- = alexScanUser undefined input__ IBOX(sc)--alexScanUser user__ input__ IBOX(sc)- = case alex_scan_tkn user__ input__ ILIT(0) input__ sc AlexNone of- (AlexNone, input__') ->- case alexGetByte input__ of- Nothing ->-#ifdef ALEX_DEBUG- trace ("End of input.") $-#endif- AlexEOF- Just _ ->-#ifdef ALEX_DEBUG- trace ("Error.") $-#endif- AlexError input__'-- (AlexLastSkip input__'' len, _) ->-#ifdef ALEX_DEBUG- trace ("Skipping.") $-#endif- AlexSkip input__'' len-- (AlexLastAcc k input__''' len, _) ->-#ifdef ALEX_DEBUG- trace ("Accept.") $-#endif- AlexToken input__''' len (alex_actions ! k)----- Push the input through the DFA, remembering the most recent accepting--- state it encountered.--alex_scan_tkn user__ orig_input len input__ s last_acc =- input__ `seq` -- strict in the input- let- new_acc = (check_accs (alex_accept `quickIndex` IBOX(s)))- in- new_acc `seq`- case alexGetByte input__ of- Nothing -> (new_acc, input__)- Just (c, new_input) ->-#ifdef ALEX_DEBUG- trace ("State: " ++ show IBOX(s) ++ ", char: " ++ show c) $-#endif- case fromIntegral c of { IBOX(ord_c) ->- let- base = alexIndexInt32OffAddr alex_base s- offset = PLUS(base,ord_c)-- new_s = if GTE(offset,ILIT(0))- && let check = alexIndexInt16OffAddr alex_check offset- in EQ(check,ord_c)- then alexIndexInt16OffAddr alex_table offset- else alexIndexInt16OffAddr alex_deflt s- in- case new_s of- ILIT(-1) -> (new_acc, input__)- -- on an error, we want to keep the input *before* the- -- character that failed, not after.- _ -> alex_scan_tkn user__ orig_input-#ifdef ALEX_LATIN1- PLUS(len,ILIT(1))- -- issue 119: in the latin1 encoding, *each* byte is one character-#else- (if c < 0x80 || c >= 0xC0 then PLUS(len,ILIT(1)) else len)- -- note that the length is increased ONLY if this is the 1st byte in a char encoding)-#endif- new_input new_s new_acc- }- where- check_accs (AlexAccNone) = last_acc- check_accs (AlexAcc a ) = AlexLastAcc a input__ IBOX(len)- check_accs (AlexAccSkip) = AlexLastSkip input__ IBOX(len)-#ifndef ALEX_NOPRED- check_accs (AlexAccPred a predx rest)- | predx user__ orig_input IBOX(len) input__- = AlexLastAcc a input__ IBOX(len)- | otherwise- = check_accs rest- check_accs (AlexAccSkipPred predx rest)- | predx user__ orig_input IBOX(len) input__- = AlexLastSkip input__ IBOX(len)- | otherwise- = check_accs rest-#endif--data AlexLastAcc- = AlexNone- | AlexLastAcc !Int !AlexInput !Int- | AlexLastSkip !AlexInput !Int--data AlexAcc user- = AlexAccNone- | AlexAcc Int- | AlexAccSkip-#ifndef ALEX_NOPRED- | AlexAccPred Int (AlexAccPred user) (AlexAcc user)- | AlexAccSkipPred (AlexAccPred user) (AlexAcc user)--type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool---- -------------------------------------------------------------------------------- Predicates on a rule--alexAndPred p1 p2 user__ in1 len in2- = p1 user__ in1 len in2 && p2 user__ in1 len in2----alexPrevCharIsPred :: Char -> AlexAccPred _-alexPrevCharIs c _ input__ _ _ = c == alexInputPrevChar input__--alexPrevCharMatches f _ input__ _ _ = f (alexInputPrevChar input__)----alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _-alexPrevCharIsOneOf arr _ input__ _ _ = arr ! alexInputPrevChar input__----alexRightContext :: Int -> AlexAccPred _-alexRightContext IBOX(sc) user__ _ _ input__ =- case alex_scan_tkn user__ input__ ILIT(0) input__ sc AlexNone of- (AlexNone, _) -> False- _ -> True- -- TODO: there's no need to find the longest- -- match when checking the right context, just- -- the first match will do.-#endif-{-# LINE 76 "Lex.x" #-}--- | Create a token with position.-tok :: (String -> Tok) -> (Posn -> String -> Token)-tok f p = PT p . f---- | Token without position.-data Tok- = TK {-# UNPACK #-} !TokSymbol -- ^ Reserved word or symbol.- | TL !String -- ^ String literal.- | TI !String -- ^ Integer literal.- | TV !String -- ^ Identifier.- | TD !String -- ^ Float literal.- | TC !String -- ^ Character literal.- | T_Bytes !String- | T_Function !String- | T_LabelId !String- | T_AlphaIndex !String- | T_MetaId !String- | T_MetaFunctionName !String- deriving (Eq, Show, Ord)---- | Smart constructor for 'Tok' for the sake of backwards compatibility.-pattern TS :: String -> Int -> Tok-pattern TS t i = TK (TokSymbol t i)---- | Keyword or symbol tokens have a unique ID.-data TokSymbol = TokSymbol- { tsText :: String- -- ^ Keyword or symbol text.- , tsID :: !Int- -- ^ Unique ID.- } deriving (Show)---- | Keyword/symbol equality is determined by the unique ID.-instance Eq TokSymbol where (==) = (==) `on` tsID---- | Keyword/symbol ordering is determined by the unique ID.-instance Ord TokSymbol where compare = compare `on` tsID---- | Token with position.-data Token- = PT Posn Tok- | Err Posn- deriving (Eq, Show, Ord)---- | Pretty print a position.-printPosn :: Posn -> String-printPosn (Pn _ l c) = "line " ++ show l ++ ", column " ++ show c---- | Pretty print the position of the first token in the list.-tokenPos :: [Token] -> String-tokenPos (t:_) = printPosn (tokenPosn t)-tokenPos [] = "end of file"---- | Get the position of a token.-tokenPosn :: Token -> Posn-tokenPosn (PT p _) = p-tokenPosn (Err p) = p---- | Get line and column of a token.-tokenLineCol :: Token -> (Int, Int)-tokenLineCol = posLineCol . tokenPosn---- | Get line and column of a position.-posLineCol :: Posn -> (Int, Int)-posLineCol (Pn _ l c) = (l,c)---- | Convert a token into "position token" form.-mkPosToken :: Token -> ((Int, Int), String)-mkPosToken t = (tokenLineCol t, tokenText t)---- | Convert a token to its text.-tokenText :: Token -> String-tokenText t = case t of- PT _ (TS s _) -> s- PT _ (TL s) -> show s- PT _ (TI s) -> s- PT _ (TV s) -> s- PT _ (TD s) -> s- PT _ (TC s) -> s- Err _ -> "#error"- PT _ (T_Bytes s) -> s- PT _ (T_Function s) -> s- PT _ (T_LabelId s) -> s- PT _ (T_AlphaIndex s) -> s- PT _ (T_MetaId s) -> s- PT _ (T_MetaFunctionName s) -> s---- | Convert a token to a string.-prToken :: Token -> String-prToken t = tokenText t---- | Finite map from text to token organized as binary search tree.-data BTree- = N -- ^ Nil (leaf).- | B String Tok BTree BTree- -- ^ Binary node.- deriving (Show)---- | Convert potential keyword into token or use fallback conversion.-eitherResIdent :: (String -> Tok) -> String -> Tok-eitherResIdent tv s = treeFind resWords- where- treeFind N = tv s- treeFind (B a t left right) =- case compare s a of- LT -> treeFind left- GT -> treeFind right- EQ -> t---- | The keywords and symbols of the language organized as binary search tree.-resWords :: BTree-resWords =- b "\955" 11- (b "]" 6- (b "," 3 (b ")" 2 (b "(" 1 N N) N) (b "[" 5 (b "." 4 N N) N))- (b "\916" 9 (b "}" 8 (b "{" 7 N N) N) (b "\934" 10 N N)))- (b "\8709" 16- (b "\966" 14 (b "\961" 13 (b "\958" 12 N N) N) (b "\8614" 15 N N))- (b "\10215" 19- (b "\10214" 18 (b "\8869" 17 N N) N) (b "\10509" 20 N N)))+alex_base = listArray (0 :: Int, 151)+ [ -8+ , -153+ , -159+ , 91+ , 219+ , 475+ , 594+ , 0+ , 0+ , 0+ , 707+ , -73+ , 771+ , -150+ , -156+ , 899+ , 1027+ , 1283+ , 1402+ , 0+ , 0+ , 0+ , 1515+ , 1580+ , 1644+ , -147+ , -152+ , 1772+ , 1900+ , 2156+ , 2275+ , 2403+ , 0+ , 0+ , 0+ , 2452+ , 2517+ , 2581+ , -146+ , -113+ , -28+ , 2709+ , 2773+ , 140+ , -27+ , 593+ , 623+ , 646+ , 1272+ , -144+ , 472+ , -140+ , -138+ , 2837+ , 2965+ , 3221+ , 3340+ , 0+ , 0+ , 0+ , 3453+ , 3518+ , 3582+ , -139+ , -136+ , 3710+ , 3838+ , 4094+ , 4213+ , 4341+ , 4485+ , 8+ , 0+ , 4566+ , 4822+ , 4823+ , 4951+ , 4416+ , 5016+ , 5129+ , 0+ , 0+ , 0+ , 0+ , 5343+ , 5557+ , 5813+ , 5814+ , 5942+ , 5199+ , 5409+ , 6055+ , 0+ , 0+ , 0+ , 6245+ , 605+ , 0+ , -142+ , -122+ , -98+ , 0+ , 6+ , 6389+ , 6634+ , 6879+ , 7115+ , 7371+ , 7372+ , 7500+ , -114+ , -105+ , 6325+ , 6571+ , 7613+ , 0+ , 0+ , 0+ , 7869+ , 8105+ , 8361+ , 8362+ , 8490+ , -80+ , -75+ , 6815+ , 7806+ , 8603+ , 0+ , 0+ , 0+ , 1373+ , 0+ , 1418+ , 8850+ , -44+ , 9106+ , 9107+ , 9235+ , 17+ , -43+ , 9299+ , 9364+ , 9477+ , 0+ , 0+ , 0+ , 0+ , 0+ , 9541+ , 9606+ , 9719+ ]++alex_table :: Array Int Int+alex_table = listArray (0 :: Int, 9974)+ [ 0+ , 96+ , 96+ , 96+ , 96+ , 96+ , 2+ , -1+ , -1+ , 14+ , -1+ , -1+ , 26+ , 52+ , -1+ , -1+ , 97+ , 43+ , 46+ , 97+ , 64+ , 97+ , 97+ , 97+ , 96+ , 95+ , 97+ , 97+ , -1+ , -1+ , -1+ , -1+ , 97+ , 97+ , 97+ , 97+ , 97+ , 102+ , 97+ , 71+ , 45+ , 45+ , 45+ , 45+ , 45+ , 45+ , 45+ , 45+ , 45+ , 45+ , 85+ , 101+ , -1+ , -1+ , 110+ , 73+ , 68+ , 104+ , 104+ , 104+ , 104+ , 104+ , 104+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 97+ , 123+ , 97+ , -1+ , -1+ , 134+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 97+ , 139+ , 97+ , 12+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 0+ , 41+ , 47+ , 47+ , 47+ , 47+ , 47+ , 47+ , 47+ , 47+ , 47+ , 47+ , 48+ , 39+ , 0+ , 0+ , 0+ , 0+ , 0+ , 47+ , 47+ , 47+ , 47+ , 47+ , 47+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 50+ , 4+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 5+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 49+ , -1+ , 100+ , 0+ , 98+ , 0+ , 0+ , 0+ , 96+ , 96+ , 96+ , 96+ , 96+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , 0+ , 0+ , 0+ , 51+ , 0+ , -1+ , -1+ , -1+ , 99+ , 96+ , -1+ , -1+ , -1+ , 40+ , 40+ , 40+ , 40+ , 40+ , 40+ , 40+ , 40+ , 40+ , 40+ , 0+ , -1+ , -1+ , 0+ , 0+ , 0+ , -1+ , 40+ , 40+ , 40+ , 40+ , 40+ , 40+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 47+ , 47+ , 47+ , 47+ , 47+ , 47+ , 47+ , 47+ , 47+ , 47+ , 0+ , 0+ , 0+ , 0+ , -1+ , 0+ , -1+ , 47+ , 47+ , 47+ , 47+ , 47+ , 47+ , 44+ , 44+ , 44+ , 44+ , 44+ , 44+ , 44+ , 44+ , 44+ , 44+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 44+ , 44+ , 44+ , 44+ , 44+ , 44+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 5+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 147+ , 149+ , 4+ , 72+ , 1+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 72+ , 150+ , 3+ , 148+ , 148+ , 148+ , 151+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 11+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 16+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 17+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 97+ , 131+ , 131+ , 131+ , 131+ , 131+ , 131+ , 131+ , 131+ , 131+ , 131+ , 0+ , 0+ , 0+ , -1+ , -1+ , 0+ , 0+ , 97+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , -1+ , -1+ , 133+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 97+ , -1+ , -1+ , 97+ , 0+ , 0+ , -1+ , 132+ , 131+ , 131+ , 131+ , 131+ , 131+ , 131+ , 131+ , 131+ , 131+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 17+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 9+ , 12+ , 16+ , 8+ , 13+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 8+ , 11+ , 15+ , 7+ , 7+ , 7+ , 10+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 23+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 24+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 28+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 29+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , 0+ , 0+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 29+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 21+ , 24+ , 28+ , 20+ , 25+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 20+ , 23+ , 27+ , 19+ , 19+ , 19+ , 22+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 0+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 0+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 36+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 37+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 0+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 0+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 0+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 0+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 54+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 55+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , 0+ , 0+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 55+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 34+ , 37+ , 54+ , 33+ , 38+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 33+ , 36+ , 53+ , 32+ , 32+ , 32+ , 35+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 61+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 62+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 66+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 67+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , 0+ , 0+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 67+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 59+ , 62+ , 66+ , 58+ , 63+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 58+ , 61+ , 65+ , 57+ , 57+ , 57+ , 60+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 0+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , -1+ , 0+ , 0+ , 0+ , 70+ , 0+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , 70+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 69+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 74+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 77+ , 75+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 78+ , 76+ , 82+ , 82+ , 82+ , 79+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 74+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 80+ , 75+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 81+ , 77+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 78+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 84+ , 0+ , 0+ , 0+ , 0+ , 83+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 86+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 89+ , 87+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 90+ , 88+ , 94+ , 94+ , 94+ , 91+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 84+ , 89+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 86+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 89+ , 87+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 90+ , 88+ , 94+ , 94+ , 94+ , 91+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 86+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 92+ , 87+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 93+ , 90+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 18+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 30+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 6+ , 0+ , 0+ , 0+ , 0+ , 56+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 0+ , 0+ , 106+ , 106+ , 0+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 0+ , 0+ , 106+ , 106+ , 106+ , 106+ , 106+ , 70+ , 0+ , 0+ , 106+ , 106+ , 0+ , 0+ , 0+ , 106+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 0+ , 0+ , 106+ , 106+ , 106+ , 135+ , 106+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 0+ , 106+ , 0+ , 106+ , 103+ , 106+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 0+ , 0+ , 0+ , 106+ , 106+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 0+ , 107+ , 42+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 112+ , 108+ , 116+ , 111+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 113+ , 109+ , 117+ , 117+ , 117+ , 114+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 0+ , 0+ , 106+ , 106+ , 0+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 0+ , 0+ , 106+ , 106+ , 106+ , 106+ , 106+ , 70+ , 0+ , 0+ , 106+ , 106+ , 0+ , 0+ , 0+ , 106+ , 105+ , 105+ , 105+ , 105+ , 105+ , 105+ , 105+ , 105+ , 105+ , 105+ , 0+ , 0+ , 106+ , 106+ , 106+ , 0+ , 106+ , 105+ , 105+ , 105+ , 105+ , 105+ , 105+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 0+ , 106+ , 0+ , 106+ , 103+ , 106+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 0+ , 0+ , 0+ , 106+ , 106+ , 112+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 107+ , 42+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 112+ , 108+ , 116+ , 111+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 113+ , 109+ , 117+ , 117+ , 117+ , 114+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 0+ , 0+ , 106+ , 106+ , 0+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 106+ , 0+ , 0+ , 106+ , 106+ , 106+ , 106+ , 106+ , 70+ , 0+ , 0+ , 106+ , 106+ , 0+ , 43+ , 0+ , 106+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 0+ , 0+ , 106+ , 106+ , 106+ , 0+ , 106+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 0+ , 106+ , 0+ , 106+ , 103+ , 106+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 103+ , 0+ , 0+ , 0+ , 106+ , 106+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 0+ , 107+ , 42+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 112+ , 108+ , 116+ , 111+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 113+ , 109+ , 117+ , 117+ , 117+ , 114+ , -1+ , -1+ , 0+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , 0+ , 0+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 107+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 112+ , 108+ , 116+ , 111+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 113+ , 109+ , 117+ , 117+ , 117+ , 114+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 107+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 115+ , 108+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 116+ , 113+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 0+ , 0+ , 119+ , 119+ , 0+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 119+ , 0+ , 0+ , 119+ , 119+ , 119+ , 119+ , 119+ , 70+ , 0+ , 0+ , 119+ , 119+ , 0+ , 119+ , 0+ , 119+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 0+ , 0+ , 119+ , 119+ , 119+ , 0+ , 119+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 0+ , 119+ , 0+ , 119+ , 118+ , 119+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 118+ , 0+ , 0+ , 0+ , 119+ , 119+ , 125+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 120+ , 31+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 125+ , 121+ , 129+ , 124+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 126+ , 122+ , 130+ , 130+ , 130+ , 127+ , -1+ , -1+ , 0+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , 0+ , 0+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 120+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 125+ , 121+ , 129+ , 124+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 126+ , 122+ , 130+ , 130+ , 130+ , 127+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 120+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 128+ , 121+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 129+ , 126+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , 0+ , 0+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , 0+ , -1+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , 0+ , -1+ , -1+ , -1+ , 0+ , 0+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 136+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 141+ , 137+ , 145+ , 140+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 142+ , 138+ , 146+ , 146+ , 146+ , 143+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 136+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 144+ , 137+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , 145+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 141+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 142+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 149+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 150+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ ]++alex_check :: Array Int Int+alex_check = listArray (0 :: Int, 9974)+ [ -1+ , 9+ , 10+ , 11+ , 12+ , 13+ , 159+ , 166+ , 167+ , 159+ , 166+ , 167+ , 159+ , 159+ , 166+ , 167+ , 129+ , 45+ , 45+ , 141+ , 159+ , 134+ , 166+ , 165+ , 32+ , 33+ , 166+ , 167+ , 166+ , 167+ , 166+ , 167+ , 40+ , 41+ , 42+ , 133+ , 44+ , 45+ , 46+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , 42+ , 45+ , 166+ , 167+ , 159+ , 47+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , 91+ , 159+ , 93+ , 166+ , 167+ , 132+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , 123+ , 159+ , 125+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 166+ , 167+ , -1+ , -1+ , 195+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , 206+ , 207+ , -1+ , -1+ , -1+ , -1+ , -1+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 226+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 0+ , 1+ , 2+ , 3+ , 4+ , 5+ , 6+ , 7+ , 8+ , 9+ , 10+ , 11+ , 12+ , 13+ , 14+ , 15+ , 16+ , 17+ , 18+ , 19+ , 20+ , 21+ , 22+ , 23+ , 24+ , 25+ , 26+ , 27+ , 28+ , 29+ , 30+ , 31+ , 32+ , 33+ , 34+ , 35+ , 36+ , 37+ , 38+ , 39+ , 40+ , 41+ , 42+ , 43+ , 44+ , 45+ , 46+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , 58+ , 59+ , 60+ , 61+ , 62+ , 63+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , 91+ , 92+ , 93+ , 94+ , 95+ , 96+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , 123+ , 124+ , 125+ , 126+ , 127+ , 9+ , 10+ , -1+ , 134+ , 13+ , 136+ , -1+ , 138+ , -1+ , -1+ , -1+ , 9+ , 10+ , 11+ , 12+ , 13+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 32+ , 33+ , -1+ , -1+ , -1+ , 159+ , -1+ , 39+ , 40+ , 41+ , 164+ , 32+ , 44+ , 45+ , 46+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , -1+ , 58+ , 59+ , -1+ , -1+ , -1+ , 63+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , -1+ , -1+ , -1+ , -1+ , 91+ , -1+ , 93+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 123+ , 124+ , 125+ , -1+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 0+ , 1+ , 2+ , 3+ , 4+ , 5+ , 6+ , 7+ , 8+ , 9+ , 10+ , 11+ , 12+ , 13+ , 14+ , 15+ , 16+ , 17+ , 18+ , 19+ , 20+ , 21+ , 22+ , 23+ , 24+ , 25+ , 26+ , 27+ , 28+ , 29+ , 30+ , 31+ , 32+ , 33+ , 34+ , 35+ , 36+ , 37+ , 38+ , 39+ , 40+ , 41+ , 42+ , 43+ , 44+ , 45+ , 46+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , 58+ , 59+ , 60+ , 61+ , 62+ , 63+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , 91+ , 92+ , 93+ , 94+ , 95+ , 96+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , 123+ , 124+ , 125+ , 126+ , 127+ , 9+ , 10+ , -1+ , -1+ , 13+ , -1+ , -1+ , -1+ , -1+ , 148+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , -1+ , -1+ , -1+ , 32+ , 33+ , -1+ , -1+ , 166+ , -1+ , -1+ , 39+ , 40+ , 41+ , -1+ , -1+ , 44+ , 45+ , 46+ , 177+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 187+ , 58+ , 59+ , 190+ , -1+ , -1+ , 63+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 91+ , -1+ , 93+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 123+ , 124+ , 125+ , -1+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 0+ , 1+ , 2+ , 3+ , 4+ , 5+ , 6+ , 7+ , 8+ , 9+ , 10+ , 11+ , 12+ , 13+ , 14+ , 15+ , 16+ , 17+ , 18+ , 19+ , 20+ , 21+ , 22+ , 23+ , 24+ , 25+ , 26+ , 27+ , 28+ , 29+ , 30+ , 31+ , 32+ , 33+ , 34+ , 35+ , 36+ , 37+ , 38+ , 39+ , 40+ , 41+ , 42+ , 43+ , 44+ , 45+ , 46+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , 58+ , 59+ , 60+ , 61+ , 62+ , 63+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , 91+ , 92+ , 93+ , 94+ , 95+ , 96+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , 123+ , 124+ , 125+ , 126+ , 127+ , 9+ , 10+ , -1+ , -1+ , 13+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 32+ , 33+ , -1+ , -1+ , -1+ , -1+ , -1+ , 39+ , 40+ , 41+ , -1+ , -1+ , 44+ , 45+ , 46+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 58+ , 59+ , -1+ , -1+ , -1+ , 63+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 91+ , -1+ , 93+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 123+ , 124+ , 125+ , -1+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , -1+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , -1+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , -1+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , -1+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , -1+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , -1+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 0+ , 1+ , 2+ , 3+ , 4+ , 5+ , 6+ , 7+ , 8+ , 9+ , 10+ , 11+ , 12+ , 13+ , 14+ , 15+ , 16+ , 17+ , 18+ , 19+ , 20+ , 21+ , 22+ , 23+ , 24+ , 25+ , 26+ , 27+ , 28+ , 29+ , 30+ , 31+ , 32+ , 33+ , 34+ , 35+ , 36+ , 37+ , 38+ , 39+ , 40+ , 41+ , 42+ , 43+ , 44+ , 45+ , 46+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , 58+ , 59+ , 60+ , 61+ , 62+ , 63+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , 91+ , 92+ , 93+ , 94+ , 95+ , 96+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , 123+ , 124+ , 125+ , 126+ , 127+ , 9+ , 10+ , -1+ , -1+ , 13+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 32+ , 33+ , -1+ , -1+ , -1+ , -1+ , -1+ , 39+ , 40+ , 41+ , -1+ , -1+ , 44+ , 45+ , 46+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 58+ , 59+ , -1+ , -1+ , -1+ , 63+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 91+ , -1+ , 93+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 123+ , 124+ , 125+ , -1+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 0+ , 1+ , 2+ , 3+ , 4+ , 5+ , 6+ , 7+ , 8+ , 9+ , 10+ , 11+ , 12+ , 13+ , 14+ , 15+ , 16+ , 17+ , 18+ , 19+ , 20+ , 21+ , 22+ , 23+ , 24+ , 25+ , 26+ , 27+ , 28+ , 29+ , 30+ , 31+ , 32+ , 33+ , 34+ , 35+ , 36+ , 37+ , 38+ , 39+ , 40+ , 41+ , 42+ , 43+ , 44+ , 45+ , 46+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , 58+ , 59+ , 60+ , 61+ , 62+ , 63+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , 91+ , 92+ , 93+ , 94+ , 95+ , 96+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , 123+ , 124+ , 125+ , 126+ , 127+ , 9+ , 10+ , -1+ , -1+ , 13+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 32+ , 33+ , -1+ , -1+ , -1+ , -1+ , -1+ , 39+ , 40+ , 41+ , -1+ , -1+ , 44+ , 45+ , 46+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 58+ , 59+ , -1+ , -1+ , -1+ , 63+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 91+ , -1+ , 93+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 123+ , 124+ , 125+ , -1+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , -1+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 39+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , 10+ , -1+ , -1+ , -1+ , 95+ , -1+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 195+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 0+ , 1+ , 2+ , 3+ , 4+ , 5+ , 6+ , 7+ , 8+ , 9+ , 10+ , 11+ , 12+ , 13+ , 14+ , 15+ , 16+ , 17+ , 18+ , 19+ , 20+ , 21+ , 22+ , 23+ , 24+ , 25+ , 26+ , 27+ , 28+ , 29+ , 30+ , 31+ , 32+ , 33+ , 34+ , 35+ , 36+ , 37+ , 38+ , 39+ , 40+ , 41+ , 42+ , 43+ , 44+ , 45+ , 46+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , 58+ , 59+ , 60+ , 61+ , 62+ , 63+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , 91+ , 92+ , 93+ , 94+ , 95+ , 96+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , 123+ , 124+ , 125+ , 126+ , 127+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 42+ , -1+ , -1+ , -1+ , -1+ , 47+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 42+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 0+ , 1+ , 2+ , 3+ , 4+ , 5+ , 6+ , 7+ , 8+ , 9+ , 10+ , 11+ , 12+ , 13+ , 14+ , 15+ , 16+ , 17+ , 18+ , 19+ , 20+ , 21+ , 22+ , 23+ , 24+ , 25+ , 26+ , 27+ , 28+ , 29+ , 30+ , 31+ , 32+ , 33+ , 34+ , 35+ , 36+ , 37+ , 38+ , 39+ , 40+ , 41+ , 42+ , 43+ , 44+ , 45+ , 46+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , 58+ , 59+ , 60+ , 61+ , 62+ , 63+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , 91+ , 92+ , 93+ , 94+ , 95+ , 96+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , 123+ , 124+ , 125+ , 126+ , 127+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 66+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 98+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 116+ , -1+ , -1+ , -1+ , -1+ , 121+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 0+ , 1+ , 2+ , 3+ , 4+ , 5+ , 6+ , 7+ , 8+ , -1+ , -1+ , 11+ , 12+ , -1+ , 14+ , 15+ , 16+ , 17+ , 18+ , 19+ , 20+ , 21+ , 22+ , 23+ , 24+ , 25+ , 26+ , 27+ , 28+ , 29+ , 30+ , 31+ , -1+ , -1+ , 34+ , 35+ , 36+ , 37+ , 38+ , 39+ , -1+ , -1+ , 42+ , 43+ , -1+ , -1+ , -1+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , -1+ , -1+ , 60+ , 61+ , 62+ , 207+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , -1+ , 92+ , -1+ , 94+ , 95+ , 96+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , -1+ , -1+ , -1+ , 126+ , 127+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , -1+ , -1+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 0+ , 1+ , 2+ , 3+ , 4+ , 5+ , 6+ , 7+ , 8+ , -1+ , -1+ , 11+ , 12+ , -1+ , 14+ , 15+ , 16+ , 17+ , 18+ , 19+ , 20+ , 21+ , 22+ , 23+ , 24+ , 25+ , 26+ , 27+ , 28+ , 29+ , 30+ , 31+ , -1+ , -1+ , 34+ , 35+ , 36+ , 37+ , 38+ , 39+ , -1+ , -1+ , 42+ , 43+ , -1+ , -1+ , -1+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , -1+ , -1+ , 60+ , 61+ , 62+ , -1+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , -1+ , 92+ , -1+ , 94+ , 95+ , 96+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , -1+ , -1+ , -1+ , 126+ , 127+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , -1+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 0+ , 1+ , 2+ , 3+ , 4+ , 5+ , 6+ , 7+ , 8+ , -1+ , -1+ , 11+ , 12+ , -1+ , 14+ , 15+ , 16+ , 17+ , 18+ , 19+ , 20+ , 21+ , 22+ , 23+ , 24+ , 25+ , 26+ , 27+ , 28+ , 29+ , 30+ , 31+ , -1+ , -1+ , 34+ , 35+ , 36+ , 37+ , 38+ , 39+ , -1+ , -1+ , 42+ , 43+ , -1+ , 45+ , -1+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , -1+ , -1+ , 60+ , 61+ , 62+ , -1+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , -1+ , 92+ , -1+ , 94+ , 95+ , 96+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , -1+ , -1+ , -1+ , 126+ , 127+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , -1+ , -1+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 9+ , 10+ , -1+ , -1+ , 13+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 32+ , 33+ , -1+ , -1+ , -1+ , -1+ , -1+ , 39+ , 40+ , 41+ , -1+ , -1+ , 44+ , 45+ , 46+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 58+ , 59+ , -1+ , -1+ , -1+ , 63+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 91+ , -1+ , 93+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 123+ , 124+ , 125+ , -1+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 0+ , 1+ , 2+ , 3+ , 4+ , 5+ , 6+ , 7+ , 8+ , 9+ , 10+ , 11+ , 12+ , 13+ , 14+ , 15+ , 16+ , 17+ , 18+ , 19+ , 20+ , 21+ , 22+ , 23+ , 24+ , 25+ , 26+ , 27+ , 28+ , 29+ , 30+ , 31+ , 32+ , 33+ , 34+ , 35+ , 36+ , 37+ , 38+ , 39+ , 40+ , 41+ , 42+ , 43+ , 44+ , 45+ , 46+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , 58+ , 59+ , 60+ , 61+ , 62+ , 63+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , 91+ , 92+ , 93+ , 94+ , 95+ , 96+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , 123+ , 124+ , 125+ , 126+ , 127+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 0+ , 1+ , 2+ , 3+ , 4+ , 5+ , 6+ , 7+ , 8+ , -1+ , -1+ , 11+ , 12+ , -1+ , 14+ , 15+ , 16+ , 17+ , 18+ , 19+ , 20+ , 21+ , 22+ , 23+ , 24+ , 25+ , 26+ , 27+ , 28+ , 29+ , 30+ , 31+ , -1+ , -1+ , 34+ , 35+ , 36+ , 37+ , 38+ , 39+ , -1+ , -1+ , 42+ , 43+ , -1+ , 45+ , -1+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , -1+ , -1+ , 60+ , 61+ , 62+ , -1+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , -1+ , 92+ , -1+ , 94+ , 95+ , 96+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , -1+ , -1+ , -1+ , 126+ , 127+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , -1+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 9+ , 10+ , -1+ , -1+ , 13+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 32+ , 33+ , -1+ , -1+ , -1+ , -1+ , -1+ , 39+ , 40+ , 41+ , -1+ , -1+ , 44+ , -1+ , 46+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 58+ , 59+ , -1+ , -1+ , -1+ , 63+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 91+ , -1+ , 93+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 123+ , 124+ , 125+ , -1+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 0+ , 1+ , 2+ , 3+ , 4+ , 5+ , 6+ , 7+ , 8+ , 9+ , 10+ , 11+ , 12+ , 13+ , 14+ , 15+ , 16+ , 17+ , 18+ , 19+ , 20+ , 21+ , 22+ , 23+ , 24+ , 25+ , 26+ , 27+ , 28+ , 29+ , 30+ , 31+ , 32+ , 33+ , 34+ , 35+ , 36+ , 37+ , 38+ , 39+ , 40+ , 41+ , 42+ , 43+ , 44+ , 45+ , 46+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , 58+ , 59+ , 60+ , 61+ , 62+ , 63+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , 91+ , 92+ , 93+ , 94+ , 95+ , 96+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , 123+ , 124+ , 125+ , 126+ , 127+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 9+ , 10+ , -1+ , -1+ , 13+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 32+ , 33+ , -1+ , -1+ , -1+ , -1+ , -1+ , 39+ , 40+ , 41+ , -1+ , -1+ , 44+ , 45+ , 46+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 58+ , 59+ , -1+ , -1+ , -1+ , 63+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 91+ , -1+ , 93+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 123+ , 124+ , 125+ , -1+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 0+ , 1+ , 2+ , 3+ , 4+ , 5+ , 6+ , 7+ , 8+ , 9+ , 10+ , 11+ , 12+ , 13+ , 14+ , 15+ , 16+ , 17+ , 18+ , 19+ , 20+ , 21+ , 22+ , 23+ , 24+ , 25+ , 26+ , 27+ , 28+ , 29+ , 30+ , 31+ , 32+ , 33+ , 34+ , 35+ , 36+ , 37+ , 38+ , 39+ , 40+ , 41+ , 42+ , 43+ , 44+ , 45+ , 46+ , 47+ , 48+ , 49+ , 50+ , 51+ , 52+ , 53+ , 54+ , 55+ , 56+ , 57+ , 58+ , 59+ , 60+ , 61+ , 62+ , 63+ , 64+ , 65+ , 66+ , 67+ , 68+ , 69+ , 70+ , 71+ , 72+ , 73+ , 74+ , 75+ , 76+ , 77+ , 78+ , 79+ , 80+ , 81+ , 82+ , 83+ , 84+ , 85+ , 86+ , 87+ , 88+ , 89+ , 90+ , 91+ , 92+ , 93+ , 94+ , 95+ , 96+ , 97+ , 98+ , 99+ , 100+ , 101+ , 102+ , 103+ , 104+ , 105+ , 106+ , 107+ , 108+ , 109+ , 110+ , 111+ , 112+ , 113+ , 114+ , 115+ , 116+ , 117+ , 118+ , 119+ , 120+ , 121+ , 122+ , 123+ , 124+ , 125+ , 126+ , 127+ , -1+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 128+ , 129+ , 130+ , 131+ , 132+ , 133+ , 134+ , 135+ , 136+ , 137+ , 138+ , 139+ , 140+ , 141+ , 142+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ , 143+ , 144+ , 145+ , 146+ , 147+ , 148+ , 149+ , 150+ , 151+ , 152+ , 153+ , 154+ , 155+ , 156+ , 157+ , 158+ , 159+ , 160+ , 161+ , 162+ , 163+ , 164+ , 165+ , 166+ , 167+ , 168+ , 169+ , 170+ , 171+ , 172+ , 173+ , 174+ , 175+ , 176+ , 177+ , 178+ , 179+ , 180+ , 181+ , 182+ , 183+ , 184+ , 185+ , 186+ , 187+ , 188+ , 189+ , 190+ , 191+ , 192+ , 193+ , 194+ , 195+ , 196+ , 197+ , 198+ , 199+ , 200+ , 201+ , 202+ , 203+ , 204+ , 205+ , 206+ , 207+ , 208+ , 209+ , 210+ , 211+ , 212+ , 213+ , 214+ , 215+ , 216+ , 217+ , 218+ , 219+ , 220+ , 221+ , 222+ , 223+ , 224+ , 225+ , 226+ , 227+ , 228+ , 229+ , 230+ , 231+ , 232+ , 233+ , 234+ , 235+ , 236+ , 237+ , 238+ , 239+ , 240+ , 241+ , 242+ , 243+ , 244+ , 245+ , 246+ , 247+ , 248+ , 249+ , 250+ , 251+ , 252+ , 253+ , 254+ , 255+ ]++alex_deflt :: Array Int Int+alex_deflt = listArray (0 :: Int, 151)+ [ -1+ , 147+ , 6+ , -1+ , -1+ , 6+ , 6+ , 8+ , 9+ , 18+ , 8+ , 9+ , 18+ , 9+ , 18+ , -1+ , -1+ , 18+ , 18+ , 20+ , 21+ , 30+ , 20+ , 21+ , 30+ , 21+ , 30+ , -1+ , -1+ , 30+ , 30+ , 119+ , 33+ , 34+ , 56+ , 33+ , 34+ , 56+ , 34+ , -1+ , -1+ , -1+ , 106+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 56+ , -1+ , -1+ , 56+ , 56+ , 58+ , 59+ , 68+ , 58+ , 59+ , 68+ , 59+ , 68+ , -1+ , -1+ , 68+ , 68+ , -1+ , -1+ , -1+ , 147+ , 73+ , 73+ , -1+ , -1+ , 73+ , 80+ , 81+ , 73+ , 80+ , 81+ , -1+ , 85+ , 85+ , 85+ , -1+ , -1+ , 85+ , 92+ , 93+ , 85+ , 92+ , 93+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , -1+ , 106+ , 106+ , -1+ , -1+ , 106+ , 115+ , 106+ , 115+ , 116+ , 106+ , 115+ , 116+ , -1+ , 119+ , 119+ , -1+ , -1+ , 119+ , 128+ , 119+ , 128+ , 129+ , 119+ , 128+ , 129+ , -1+ , -1+ , -1+ , 134+ , -1+ , 134+ , -1+ , -1+ , 134+ , 144+ , 134+ , 144+ , 145+ , 134+ , 144+ , 145+ , 6+ , 72+ , 6+ , 147+ , 72+ ]++alex_accept = listArray (0 :: Int, 151)+ [ AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAcc 18+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAcc 17+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAcc 16+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAcc 15+ , AlexAcc 14+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAcc 13+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAcc 12+ , AlexAccNone+ , AlexAcc 11+ , AlexAccNone+ , AlexAccNone+ , AlexAccSkip+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccSkip+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccSkip+ , AlexAcc 10+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAcc 9+ , AlexAccNone+ , AlexAcc 8+ , AlexAcc 7+ , AlexAcc 6+ , AlexAcc 5+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAcc 4+ , AlexAcc 3+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAcc 2+ , AlexAcc 1+ , AlexAccNone+ , AlexAcc 0+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ , AlexAccNone+ ]++alex_actions = array (0 :: Int, 19)+ [ (18,alex_action_9)+ , (17,alex_action_10)+ , (16,alex_action_11)+ , (15,alex_action_4)+ , (14,alex_action_4)+ , (13,alex_action_12)+ , (12,alex_action_13)+ , (11,alex_action_14)+ , (10,alex_action_3)+ , (9,alex_action_4)+ , (8,alex_action_5)+ , (7,alex_action_5)+ , (6,alex_action_5)+ , (5,alex_action_5)+ , (4,alex_action_6)+ , (3,alex_action_6)+ , (2,alex_action_7)+ , (1,alex_action_7)+ , (0,alex_action_8)+ ]++alex_action_3 = tok (eitherResIdent TV)+alex_action_4 = tok (eitherResIdent T_Bytes)+alex_action_5 = tok (eitherResIdent T_Function)+alex_action_6 = tok (eitherResIdent T_LabelId)+alex_action_7 = tok (eitherResIdent T_AlphaIndex)+alex_action_8 = tok (eitherResIdent T_LabelMetaId)+alex_action_9 = tok (eitherResIdent T_TailMetaId)+alex_action_10 = tok (eitherResIdent T_BindingsMetaId)+alex_action_11 = tok (eitherResIdent T_ObjectMetaId)+alex_action_12 = tok (eitherResIdent T_BytesMetaId)+alex_action_13 = tok (eitherResIdent T_MetaFunctionName)+alex_action_14 = tok (eitherResIdent TV)++#define ALEX_NOPRED 1+-- -----------------------------------------------------------------------------+-- ALEX TEMPLATE+--+-- This code is in the PUBLIC DOMAIN; you may copy it freely and use+-- it for any purpose whatsoever.++-- -----------------------------------------------------------------------------+-- INTERNALS and main scanner engine++#ifdef ALEX_GHC+# define ILIT(n) n#+# define IBOX(n) (I# (n))+# define FAST_INT Int#+-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.+# if __GLASGOW_HASKELL__ > 706+# define GTE(n,m) (tagToEnum# (n >=# m))+# define EQ(n,m) (tagToEnum# (n ==# m))+# else+# define GTE(n,m) (n >=# m)+# define EQ(n,m) (n ==# m)+# endif+# define PLUS(n,m) (n +# m)+# define MINUS(n,m) (n -# m)+# define TIMES(n,m) (n *# m)+# define NEGATE(n) (negateInt# (n))+# define IF_GHC(x) (x)+#else+# define ILIT(n) (n)+# define IBOX(n) (n)+# define FAST_INT Int+# define GTE(n,m) (n >= m)+# define EQ(n,m) (n == m)+# define PLUS(n,m) (n + m)+# define MINUS(n,m) (n - m)+# define TIMES(n,m) (n * m)+# define NEGATE(n) (negate (n))+# define IF_GHC(x)+#endif++#ifdef ALEX_GHC+data AlexAddr = AlexA# Addr#+-- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.+#if __GLASGOW_HASKELL__ < 503+uncheckedShiftL# = shiftL#+#endif++{-# INLINE alexIndexInt16OffAddr #-}+alexIndexInt16OffAddr :: AlexAddr -> Int# -> Int#+alexIndexInt16OffAddr (AlexA# arr) off =+#ifdef WORDS_BIGENDIAN+ narrow16Int# i+ where+ i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)+ high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))+ low = int2Word# (ord# (indexCharOffAddr# arr off'))+ off' = off *# 2#+#else+#if __GLASGOW_HASKELL__ >= 901+ int16ToInt#+#endif+ (indexInt16OffAddr# arr off)+#endif+#else+alexIndexInt16OffAddr arr off = arr ! off+#endif++#ifdef ALEX_GHC+{-# INLINE alexIndexInt32OffAddr #-}+alexIndexInt32OffAddr :: AlexAddr -> Int# -> Int#+alexIndexInt32OffAddr (AlexA# arr) off =+#ifdef WORDS_BIGENDIAN+ narrow32Int# i+ where+ i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`+ (b2 `uncheckedShiftL#` 16#) `or#`+ (b1 `uncheckedShiftL#` 8#) `or#` b0)+ b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))+ b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))+ b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))+ b0 = int2Word# (ord# (indexCharOffAddr# arr off'))+ off' = off *# 4#+#else+#if __GLASGOW_HASKELL__ >= 901+ int32ToInt#+#endif+ (indexInt32OffAddr# arr off)+#endif+#else+alexIndexInt32OffAddr arr off = arr ! off+#endif++#ifdef ALEX_GHC++#if __GLASGOW_HASKELL__ < 503+quickIndex arr i = arr ! i+#else+-- GHC >= 503, unsafeAt is available from Data.Array.Base.+quickIndex = unsafeAt+#endif+#else+quickIndex arr i = arr ! i+#endif++-- -----------------------------------------------------------------------------+-- Main lexing routines++data AlexReturn a+ = AlexEOF+ | AlexError !AlexInput+ | AlexSkip !AlexInput !Int+ | AlexToken !AlexInput !Int a++-- alexScan :: AlexInput -> StartCode -> AlexReturn a+alexScan input__ IBOX(sc)+ = alexScanUser undefined input__ IBOX(sc)++alexScanUser user__ input__ IBOX(sc)+ = case alex_scan_tkn user__ input__ ILIT(0) input__ sc AlexNone of+ (AlexNone, input__') ->+ case alexGetByte input__ of+ Nothing ->+#ifdef ALEX_DEBUG+ trace ("End of input.") $+#endif+ AlexEOF+ Just _ ->+#ifdef ALEX_DEBUG+ trace ("Error.") $+#endif+ AlexError input__'++ (AlexLastSkip input__'' len, _) ->+#ifdef ALEX_DEBUG+ trace ("Skipping.") $+#endif+ AlexSkip input__'' len++ (AlexLastAcc k input__''' len, _) ->+#ifdef ALEX_DEBUG+ trace ("Accept.") $+#endif+ AlexToken input__''' len (alex_actions ! k)+++-- Push the input through the DFA, remembering the most recent accepting+-- state it encountered.++alex_scan_tkn user__ orig_input len input__ s last_acc =+ input__ `seq` -- strict in the input+ let+ new_acc = (check_accs (alex_accept `quickIndex` IBOX(s)))+ in+ new_acc `seq`+ case alexGetByte input__ of+ Nothing -> (new_acc, input__)+ Just (c, new_input) ->+#ifdef ALEX_DEBUG+ trace ("State: " ++ show IBOX(s) ++ ", char: " ++ show c) $+#endif+ case fromIntegral c of { IBOX(ord_c) ->+ let+ base = alexIndexInt32OffAddr alex_base s+ offset = PLUS(base,ord_c)++ new_s = if GTE(offset,ILIT(0))+ && let check = alexIndexInt16OffAddr alex_check offset+ in EQ(check,ord_c)+ then alexIndexInt16OffAddr alex_table offset+ else alexIndexInt16OffAddr alex_deflt s+ in+ case new_s of+ ILIT(-1) -> (new_acc, input__)+ -- on an error, we want to keep the input *before* the+ -- character that failed, not after.+ _ -> alex_scan_tkn user__ orig_input+#ifdef ALEX_LATIN1+ PLUS(len,ILIT(1))+ -- issue 119: in the latin1 encoding, *each* byte is one character+#else+ (if c < 0x80 || c >= 0xC0 then PLUS(len,ILIT(1)) else len)+ -- note that the length is increased ONLY if this is the 1st byte in a char encoding)+#endif+ new_input new_s new_acc+ }+ where+ check_accs (AlexAccNone) = last_acc+ check_accs (AlexAcc a ) = AlexLastAcc a input__ IBOX(len)+ check_accs (AlexAccSkip) = AlexLastSkip input__ IBOX(len)+#ifndef ALEX_NOPRED+ check_accs (AlexAccPred a predx rest)+ | predx user__ orig_input IBOX(len) input__+ = AlexLastAcc a input__ IBOX(len)+ | otherwise+ = check_accs rest+ check_accs (AlexAccSkipPred predx rest)+ | predx user__ orig_input IBOX(len) input__+ = AlexLastSkip input__ IBOX(len)+ | otherwise+ = check_accs rest+#endif++data AlexLastAcc+ = AlexNone+ | AlexLastAcc !Int !AlexInput !Int+ | AlexLastSkip !AlexInput !Int++data AlexAcc user+ = AlexAccNone+ | AlexAcc Int+ | AlexAccSkip+#ifndef ALEX_NOPRED+ | AlexAccPred Int (AlexAccPred user) (AlexAcc user)+ | AlexAccSkipPred (AlexAccPred user) (AlexAcc user)++type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool++-- -----------------------------------------------------------------------------+-- Predicates on a rule++alexAndPred p1 p2 user__ in1 len in2+ = p1 user__ in1 len in2 && p2 user__ in1 len in2++--alexPrevCharIsPred :: Char -> AlexAccPred _+alexPrevCharIs c _ input__ _ _ = c == alexInputPrevChar input__++alexPrevCharMatches f _ input__ _ _ = f (alexInputPrevChar input__)++--alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _+alexPrevCharIsOneOf arr _ input__ _ _ = arr ! alexInputPrevChar input__++--alexRightContext :: Int -> AlexAccPred _+alexRightContext IBOX(sc) user__ _ _ input__ =+ case alex_scan_tkn user__ input__ ILIT(0) input__ sc AlexNone of+ (AlexNone, _) -> False+ _ -> True+ -- TODO: there's no need to find the longest+ -- match when checking the right context, just+ -- the first match will do.+#endif+{-# LINE 92 "Lex.x" #-}+-- | Create a token with position.+tok :: (String -> Tok) -> (Posn -> String -> Token)+tok f p = PT p . f++-- | Token without position.+data Tok+ = TK {-# UNPACK #-} !TokSymbol -- ^ Reserved word or symbol.+ | TL !String -- ^ String literal.+ | TI !String -- ^ Integer literal.+ | TV !String -- ^ Identifier.+ | TD !String -- ^ Float literal.+ | TC !String -- ^ Character literal.+ | T_Bytes !String+ | T_Function !String+ | T_LabelId !String+ | T_AlphaIndex !String+ | T_LabelMetaId !String+ | T_TailMetaId !String+ | T_BindingsMetaId !String+ | T_ObjectMetaId !String+ | T_BytesMetaId !String+ | T_MetaFunctionName !String+ deriving (Eq, Show, Ord)++-- | Smart constructor for 'Tok' for the sake of backwards compatibility.+pattern TS :: String -> Int -> Tok+pattern TS t i = TK (TokSymbol t i)++-- | Keyword or symbol tokens have a unique ID.+data TokSymbol = TokSymbol+ { tsText :: String+ -- ^ Keyword or symbol text.+ , tsID :: !Int+ -- ^ Unique ID.+ } deriving (Show)++-- | Keyword/symbol equality is determined by the unique ID.+instance Eq TokSymbol where (==) = (==) `on` tsID++-- | Keyword/symbol ordering is determined by the unique ID.+instance Ord TokSymbol where compare = compare `on` tsID++-- | Token with position.+data Token+ = PT Posn Tok+ | Err Posn+ deriving (Eq, Show, Ord)++-- | Pretty print a position.+printPosn :: Posn -> String+printPosn (Pn _ l c) = "line " ++ show l ++ ", column " ++ show c++-- | Pretty print the position of the first token in the list.+tokenPos :: [Token] -> String+tokenPos (t:_) = printPosn (tokenPosn t)+tokenPos [] = "end of file"++-- | Get the position of a token.+tokenPosn :: Token -> Posn+tokenPosn (PT p _) = p+tokenPosn (Err p) = p++-- | Get line and column of a token.+tokenLineCol :: Token -> (Int, Int)+tokenLineCol = posLineCol . tokenPosn++-- | Get line and column of a position.+posLineCol :: Posn -> (Int, Int)+posLineCol (Pn _ l c) = (l,c)++-- | Convert a token into "position token" form.+mkPosToken :: Token -> ((Int, Int), String)+mkPosToken t = (tokenLineCol t, tokenText t)++-- | Convert a token to its text.+tokenText :: Token -> String+tokenText t = case t of+ PT _ (TS s _) -> s+ PT _ (TL s) -> show s+ PT _ (TI s) -> s+ PT _ (TV s) -> s+ PT _ (TD s) -> s+ PT _ (TC s) -> s+ Err _ -> "#error"+ PT _ (T_Bytes s) -> s+ PT _ (T_Function s) -> s+ PT _ (T_LabelId s) -> s+ PT _ (T_AlphaIndex s) -> s+ PT _ (T_LabelMetaId s) -> s+ PT _ (T_TailMetaId s) -> s+ PT _ (T_BindingsMetaId s) -> s+ PT _ (T_ObjectMetaId s) -> s+ PT _ (T_BytesMetaId s) -> s+ PT _ (T_MetaFunctionName s) -> s++-- | Convert a token to a string.+prToken :: Token -> String+prToken t = tokenText t++-- | Finite map from text to token organized as binary search tree.+data BTree+ = N -- ^ Nil (leaf).+ | B String Tok BTree BTree+ -- ^ Binary node.+ deriving (Show)++-- | Convert potential keyword into token or use fallback conversion.+eitherResIdent :: (String -> Tok) -> String -> Tok+eitherResIdent tv s = treeFind resWords+ where+ treeFind N = tv s+ treeFind (B a t left right) =+ case compare s a of+ LT -> treeFind left+ GT -> treeFind right+ EQ -> t++-- | The keywords and symbols of the language organized as binary search tree.+resWords :: BTree+resWords =+ b "\934" 11+ (b "[" 6+ (b "*" 3 (b ")" 2 (b "(" 1 N N) N) (b "." 5 (b "," 4 N N) N))+ (b "}" 9 (b "{" 8 (b "]" 7 N N) N) (b "\916" 10 N N)))+ (b "\8709" 17+ (b "\961" 14+ (b "\958" 13 (b "\955" 12 N N) N)+ (b "\8614" 16 (b "\966" 15 N N) N))+ (b "\10215" 20+ (b "\10214" 19 (b "\8869" 18 N N) N) (b "\10509" 21 N N))) where b s n = B bs (TS bs n) where
src/Language/EO/Phi/Syntax/Lex.x view
@@ -28,7 +28,7 @@ -- Symbols and non-identifier-like reserved words -@rsyms = \Φ | \ξ | \Δ | \λ | \φ | \ρ | \{ | \⟦ | \⟧ | \} | \( | \) | \. | \⊥ | \[ | \↦ | \] | \∅ | \⤍ | \,+@rsyms = \Φ | \ξ | \Δ | \λ | \φ | \ρ | \{ | \⟦ | \⟧ | \} | \( | \) | \. | \⊥ | \[ | \↦ | \] | \* | \∅ | \⤍ | \, :- @@ -61,10 +61,26 @@ α 0 | α [$d # 0]$d * { tok (eitherResIdent T_AlphaIndex) } --- token MetaId-\! [$u # [\t \n \r \ \! \' \( \) \, \- \. \: \; \? \[ \] \{ \| \} \⟦ \⟧]] *- { tok (eitherResIdent T_MetaId) }+-- token LabelMetaId+\! τ [$u # [\t \n \r \ \! \' \( \) \, \- \. \: \; \? \[ \] \{ \| \} \⟦ \⟧]] *+ { tok (eitherResIdent T_LabelMetaId) } +-- token TailMetaId+\! t [$u # [\t \n \r \ \! \' \( \) \, \- \. \: \; \? \[ \] \{ \| \} \⟦ \⟧]] *+ { tok (eitherResIdent T_TailMetaId) }++-- token BindingsMetaId+\! B [$u # [\t \n \r \ \! \' \( \) \, \- \. \: \; \? \[ \] \{ \| \} \⟦ \⟧]] *+ { tok (eitherResIdent T_BindingsMetaId) }++-- token ObjectMetaId+\! b [$u # [\t \n \r \ \! \' \( \) \, \- \. \: \; \? \[ \] \{ \| \} \⟦ \⟧]] *+ { tok (eitherResIdent T_ObjectMetaId) }++-- token BytesMetaId+\! y [$u # [\t \n \r \ \! \' \( \) \, \- \. \: \; \? \[ \] \{ \| \} \⟦ \⟧]] *+ { tok (eitherResIdent T_BytesMetaId) }+ -- token MetaFunctionName \@ [$u # [\t \n \r \ \! \' \( \) \, \- \. \: \; \? \[ \] \{ \| \} \⟦ \⟧]] * { tok (eitherResIdent T_MetaFunctionName) }@@ -90,7 +106,11 @@ | T_Function !String | T_LabelId !String | T_AlphaIndex !String- | T_MetaId !String+ | T_LabelMetaId !String+ | T_TailMetaId !String+ | T_BindingsMetaId !String+ | T_ObjectMetaId !String+ | T_BytesMetaId !String | T_MetaFunctionName !String deriving (Eq, Show, Ord) @@ -158,7 +178,11 @@ PT _ (T_Function s) -> s PT _ (T_LabelId s) -> s PT _ (T_AlphaIndex s) -> s- PT _ (T_MetaId s) -> s+ PT _ (T_LabelMetaId s) -> s+ PT _ (T_TailMetaId s) -> s+ PT _ (T_BindingsMetaId s) -> s+ PT _ (T_ObjectMetaId s) -> s+ PT _ (T_BytesMetaId s) -> s PT _ (T_MetaFunctionName s) -> s -- | Convert a token to a string.@@ -186,14 +210,16 @@ -- | The keywords and symbols of the language organized as binary search tree. resWords :: BTree resWords =- b "\955" 11- (b "]" 6- (b "," 3 (b ")" 2 (b "(" 1 N N) N) (b "[" 5 (b "." 4 N N) N))- (b "\916" 9 (b "}" 8 (b "{" 7 N N) N) (b "\934" 10 N N)))- (b "\8709" 16- (b "\966" 14 (b "\961" 13 (b "\958" 12 N N) N) (b "\8614" 15 N N))- (b "\10215" 19- (b "\10214" 18 (b "\8869" 17 N N) N) (b "\10509" 20 N N)))+ b "\934" 11+ (b "[" 6+ (b "*" 3 (b ")" 2 (b "(" 1 N N) N) (b "." 5 (b "," 4 N N) N))+ (b "}" 9 (b "{" 8 (b "]" 7 N N) N) (b "\916" 10 N N)))+ (b "\8709" 17+ (b "\961" 14+ (b "\958" 13 (b "\955" 12 N N) N)+ (b "\8614" 16 (b "\966" 15 N N) N))+ (b "\10215" 20+ (b "\10214" 19 (b "\8869" 18 N N) N) (b "\10509" 21 N N))) where b s n = B bs (TS bs n) where
src/Language/EO/Phi/Syntax/Par.hs view
@@ -6,1069 +6,1237 @@ ( happyError , myLexer , pProgram- , pObject- , pBinding- , pListBinding- , pAttribute- , pRuleAttribute- , pPeeledObject- , pObjectHead- , pObjectAction- , pListObjectAction- ) where--import Prelude--import qualified Language.EO.Phi.Syntax.Abs-import Language.EO.Phi.Syntax.Lex-import qualified Data.Array as Happy_Data_Array-import qualified Data.Bits as Bits-import Control.Applicative(Applicative(..))-import Control.Monad (ap)---- parser produced by Happy Version 1.20.1.1--data HappyAbsSyn - = HappyTerminal (Token)- | HappyErrorToken Prelude.Int- | HappyAbsSyn13 (Language.EO.Phi.Syntax.Abs.Bytes)- | HappyAbsSyn14 (Language.EO.Phi.Syntax.Abs.Function)- | HappyAbsSyn15 (Language.EO.Phi.Syntax.Abs.LabelId)- | HappyAbsSyn16 (Language.EO.Phi.Syntax.Abs.AlphaIndex)- | HappyAbsSyn17 (Language.EO.Phi.Syntax.Abs.MetaId)- | HappyAbsSyn18 (Language.EO.Phi.Syntax.Abs.MetaFunctionName)- | HappyAbsSyn19 (Language.EO.Phi.Syntax.Abs.Program)- | HappyAbsSyn20 (Language.EO.Phi.Syntax.Abs.Object)- | HappyAbsSyn21 (Language.EO.Phi.Syntax.Abs.Binding)- | HappyAbsSyn22 ([Language.EO.Phi.Syntax.Abs.Binding])- | HappyAbsSyn23 (Language.EO.Phi.Syntax.Abs.Attribute)- | HappyAbsSyn24 (Language.EO.Phi.Syntax.Abs.RuleAttribute)- | HappyAbsSyn25 (Language.EO.Phi.Syntax.Abs.PeeledObject)- | HappyAbsSyn26 (Language.EO.Phi.Syntax.Abs.ObjectHead)- | HappyAbsSyn27 (Language.EO.Phi.Syntax.Abs.ObjectAction)- | HappyAbsSyn28 ([Language.EO.Phi.Syntax.Abs.ObjectAction])--{- to allow type-synonyms as our monads (likely- - with explicitly-specified bind and return)- - in Haskell98, it seems that with- - /type M a = .../, then /(HappyReduction M)/- - is not allowed. But Happy is a- - code-generator that can just substitute it.-type HappyReduction m = - Prelude.Int - -> (Token)- -> HappyState (Token) (HappyStk HappyAbsSyn -> [(Token)] -> m HappyAbsSyn)- -> [HappyState (Token) (HappyStk HappyAbsSyn -> [(Token)] -> m HappyAbsSyn)] - -> HappyStk HappyAbsSyn - -> [(Token)] -> m HappyAbsSyn--}--action_0,- action_1,- action_2,- action_3,- action_4,- action_5,- action_6,- action_7,- action_8,- action_9,- action_10,- action_11,- action_12,- action_13,- action_14,- action_15,- action_16,- action_17,- action_18,- action_19,- action_20,- action_21,- action_22,- action_23,- action_24,- action_25,- action_26,- action_27,- action_28,- action_29,- action_30,- action_31,- action_32,- action_33,- action_34,- action_35,- action_36,- action_37,- action_38,- action_39,- action_40,- action_41,- action_42,- action_43,- action_44,- action_45,- action_46,- action_47,- action_48,- action_49,- action_50,- action_51,- action_52,- action_53,- action_54,- action_55,- action_56,- action_57,- action_58,- action_59,- action_60,- action_61,- action_62,- action_63,- action_64,- action_65,- action_66,- action_67,- action_68,- action_69,- action_70,- action_71,- action_72,- action_73,- action_74,- action_75,- action_76,- action_77,- action_78,- action_79,- action_80,- action_81,- action_82,- action_83,- action_84,- action_85,- action_86,- action_87,- action_88,- action_89,- action_90,- action_91 :: () => Prelude.Int -> ({-HappyReduction (Err) = -}- Prelude.Int - -> (Token)- -> HappyState (Token) (HappyStk HappyAbsSyn -> [(Token)] -> (Err) HappyAbsSyn)- -> [HappyState (Token) (HappyStk HappyAbsSyn -> [(Token)] -> (Err) HappyAbsSyn)] - -> HappyStk HappyAbsSyn - -> [(Token)] -> (Err) HappyAbsSyn)--happyReduce_10,- happyReduce_11,- happyReduce_12,- happyReduce_13,- happyReduce_14,- happyReduce_15,- happyReduce_16,- happyReduce_17,- happyReduce_18,- happyReduce_19,- happyReduce_20,- happyReduce_21,- happyReduce_22,- happyReduce_23,- happyReduce_24,- happyReduce_25,- happyReduce_26,- happyReduce_27,- happyReduce_28,- happyReduce_29,- happyReduce_30,- happyReduce_31,- happyReduce_32,- happyReduce_33,- happyReduce_34,- happyReduce_35,- happyReduce_36,- happyReduce_37,- happyReduce_38,- happyReduce_39,- happyReduce_40,- happyReduce_41,- happyReduce_42,- happyReduce_43,- happyReduce_44,- happyReduce_45,- happyReduce_46,- happyReduce_47,- happyReduce_48,- happyReduce_49,- happyReduce_50,- happyReduce_51,- happyReduce_52 :: () => ({-HappyReduction (Err) = -}- Prelude.Int - -> (Token)- -> HappyState (Token) (HappyStk HappyAbsSyn -> [(Token)] -> (Err) HappyAbsSyn)- -> [HappyState (Token) (HappyStk HappyAbsSyn -> [(Token)] -> (Err) HappyAbsSyn)] - -> HappyStk HappyAbsSyn - -> [(Token)] -> (Err) HappyAbsSyn)--happyExpList :: Happy_Data_Array.Array Prelude.Int Prelude.Int-happyExpList = Happy_Data_Array.listArray (0,207) ([0,0,4,0,0,20480,6168,0,0,212,7,0,27136,896,0,0,49200,1,0,6784,224,0,32768,194,0,0,24896,0,0,144,0,0,18432,0,0,0,0,64,0,0,0,0,0,9,0,0,0,0,0,0,3392,112,0,0,14342,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6784,224,0,0,0,0,8192,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256,0,0,0,0,0,0,0,4,0,0,16384,0,0,0,32,0,0,0,0,0,0,0,0,128,0,0,16384,6,0,0,0,0,0,0,0,0,0,0,0,0,0,212,7,0,0,0,0,0,0,0,0,0,1,0,16384,28685,0,0,32768,0,0,20480,7171,0,0,384,14,0,8192,0,0,0,1556,6,0,0,32,0,0,34880,0,0,57984,192,0,40960,14342,0,0,0,0,0,0,32,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,400,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,864,0,0,0,1024,0,0,0,0,0,2048,0,0,0,0,0,0,0,1024,0,0,64,0,0,0,0,0,0,24896,96,0,0,0,0,51200,1,0,0,0,0,0,0,0,0,0- ])--{-# NOINLINE happyExpListPerState #-}-happyExpListPerState st =- token_strs_expected- where token_strs = ["error","%dummy","%start_pProgram","%start_pObject","%start_pBinding","%start_pListBinding","%start_pAttribute","%start_pRuleAttribute","%start_pPeeledObject","%start_pObjectHead","%start_pObjectAction","%start_pListObjectAction","Bytes","Function","LabelId","AlphaIndex","MetaId","MetaFunctionName","Program","Object","Binding","ListBinding","Attribute","RuleAttribute","PeeledObject","ObjectHead","ObjectAction","ListObjectAction","'('","')'","','","'.'","'['","']'","'{'","'}'","'\916'","'\934'","'\955'","'\958'","'\961'","'\966'","'\8614'","'\8709'","'\8869'","'\10214'","'\10215'","'\10509'","L_Bytes","L_Function","L_LabelId","L_AlphaIndex","L_MetaId","L_MetaFunctionName","%eof"]- bit_start = st Prelude.* 55- bit_end = (st Prelude.+ 1) Prelude.* 55- read_bit = readArrayBit happyExpList- bits = Prelude.map read_bit [bit_start..bit_end Prelude.- 1]- bits_indexed = Prelude.zip bits [0..54]- token_strs_expected = Prelude.concatMap f bits_indexed- f (Prelude.False, _) = []- f (Prelude.True, nr) = [token_strs Prelude.!! nr]--action_0 (35) = happyShift action_53-action_0 (19) = happyGoto action_52-action_0 _ = happyFail (happyExpListPerState 0)--action_1 (38) = happyShift action_47-action_1 (40) = happyShift action_48-action_1 (45) = happyShift action_49-action_1 (46) = happyShift action_50-action_1 (53) = happyShift action_35-action_1 (54) = happyShift action_51-action_1 (17) = happyGoto action_44-action_1 (18) = happyGoto action_45-action_1 (20) = happyGoto action_46-action_1 _ = happyFail (happyExpListPerState 1)--action_2 (37) = happyShift action_41-action_2 (39) = happyShift action_42-action_2 (41) = happyShift action_31-action_2 (42) = happyShift action_32-action_2 (51) = happyShift action_33-action_2 (52) = happyShift action_34-action_2 (53) = happyShift action_35-action_2 (15) = happyGoto action_24-action_2 (16) = happyGoto action_25-action_2 (17) = happyGoto action_37-action_2 (21) = happyGoto action_43-action_2 (23) = happyGoto action_40-action_2 _ = happyFail (happyExpListPerState 2)--action_3 (37) = happyShift action_41-action_3 (39) = happyShift action_42-action_3 (41) = happyShift action_31-action_3 (42) = happyShift action_32-action_3 (51) = happyShift action_33-action_3 (52) = happyShift action_34-action_3 (53) = happyShift action_35-action_3 (15) = happyGoto action_24-action_3 (16) = happyGoto action_25-action_3 (17) = happyGoto action_37-action_3 (21) = happyGoto action_38-action_3 (22) = happyGoto action_39-action_3 (23) = happyGoto action_40-action_3 _ = happyReduce_33--action_4 (41) = happyShift action_31-action_4 (42) = happyShift action_32-action_4 (51) = happyShift action_33-action_4 (52) = happyShift action_34-action_4 (53) = happyShift action_35-action_4 (15) = happyGoto action_24-action_4 (16) = happyGoto action_25-action_4 (17) = happyGoto action_26-action_4 (23) = happyGoto action_36-action_4 _ = happyFail (happyExpListPerState 4)--action_5 (37) = happyShift action_29-action_5 (39) = happyShift action_30-action_5 (41) = happyShift action_31-action_5 (42) = happyShift action_32-action_5 (51) = happyShift action_33-action_5 (52) = happyShift action_34-action_5 (53) = happyShift action_35-action_5 (15) = happyGoto action_24-action_5 (16) = happyGoto action_25-action_5 (17) = happyGoto action_26-action_5 (23) = happyGoto action_27-action_5 (24) = happyGoto action_28-action_5 _ = happyFail (happyExpListPerState 5)--action_6 (38) = happyShift action_18-action_6 (40) = happyShift action_19-action_6 (45) = happyShift action_20-action_6 (46) = happyShift action_21-action_6 (25) = happyGoto action_22-action_6 (26) = happyGoto action_23-action_6 _ = happyFail (happyExpListPerState 6)--action_7 (38) = happyShift action_18-action_7 (40) = happyShift action_19-action_7 (45) = happyShift action_20-action_7 (46) = happyShift action_21-action_7 (26) = happyGoto action_17-action_7 _ = happyFail (happyExpListPerState 7)--action_8 (29) = happyShift action_14-action_8 (32) = happyShift action_15-action_8 (27) = happyGoto action_16-action_8 _ = happyFail (happyExpListPerState 8)--action_9 (29) = happyShift action_14-action_9 (32) = happyShift action_15-action_9 (27) = happyGoto action_12-action_9 (28) = happyGoto action_13-action_9 _ = happyReduce_51--action_10 (49) = happyShift action_11-action_10 _ = happyFail (happyExpListPerState 10)--action_11 _ = happyReduce_10--action_12 (29) = happyShift action_14-action_12 (32) = happyShift action_15-action_12 (27) = happyGoto action_12-action_12 (28) = happyGoto action_68-action_12 _ = happyReduce_51--action_13 (55) = happyAccept-action_13 _ = happyFail (happyExpListPerState 13)--action_14 (37) = happyShift action_41-action_14 (39) = happyShift action_42-action_14 (41) = happyShift action_31-action_14 (42) = happyShift action_32-action_14 (51) = happyShift action_33-action_14 (52) = happyShift action_34-action_14 (53) = happyShift action_35-action_14 (15) = happyGoto action_24-action_14 (16) = happyGoto action_25-action_14 (17) = happyGoto action_37-action_14 (21) = happyGoto action_38-action_14 (22) = happyGoto action_67-action_14 (23) = happyGoto action_40-action_14 _ = happyReduce_33--action_15 (41) = happyShift action_31-action_15 (42) = happyShift action_32-action_15 (51) = happyShift action_33-action_15 (52) = happyShift action_34-action_15 (53) = happyShift action_35-action_15 (15) = happyGoto action_24-action_15 (16) = happyGoto action_25-action_15 (17) = happyGoto action_26-action_15 (23) = happyGoto action_66-action_15 _ = happyFail (happyExpListPerState 15)--action_16 (55) = happyAccept-action_16 _ = happyFail (happyExpListPerState 16)--action_17 (55) = happyAccept-action_17 _ = happyFail (happyExpListPerState 17)--action_18 _ = happyReduce_46--action_19 _ = happyReduce_47--action_20 _ = happyReduce_48--action_21 (37) = happyShift action_41-action_21 (39) = happyShift action_42-action_21 (41) = happyShift action_31-action_21 (42) = happyShift action_32-action_21 (51) = happyShift action_33-action_21 (52) = happyShift action_34-action_21 (53) = happyShift action_35-action_21 (15) = happyGoto action_24-action_21 (16) = happyGoto action_25-action_21 (17) = happyGoto action_37-action_21 (21) = happyGoto action_38-action_21 (22) = happyGoto action_65-action_21 (23) = happyGoto action_40-action_21 _ = happyReduce_33--action_22 (55) = happyAccept-action_22 _ = happyFail (happyExpListPerState 22)--action_23 (29) = happyShift action_14-action_23 (32) = happyShift action_15-action_23 (27) = happyGoto action_12-action_23 (28) = happyGoto action_64-action_23 _ = happyReduce_51--action_24 _ = happyReduce_38--action_25 _ = happyReduce_39--action_26 _ = happyReduce_40--action_27 _ = happyReduce_41--action_28 (55) = happyAccept-action_28 _ = happyFail (happyExpListPerState 28)--action_29 _ = happyReduce_42--action_30 _ = happyReduce_43--action_31 _ = happyReduce_37--action_32 _ = happyReduce_36--action_33 _ = happyReduce_12--action_34 _ = happyReduce_13--action_35 _ = happyReduce_14--action_36 (55) = happyAccept-action_36 _ = happyFail (happyExpListPerState 36)--action_37 (43) = happyReduce_40-action_37 _ = happyReduce_31--action_38 (31) = happyShift action_63-action_38 _ = happyReduce_34--action_39 (55) = happyAccept-action_39 _ = happyFail (happyExpListPerState 39)--action_40 (43) = happyShift action_62-action_40 _ = happyFail (happyExpListPerState 40)--action_41 (48) = happyShift action_61-action_41 _ = happyFail (happyExpListPerState 41)--action_42 (48) = happyShift action_60-action_42 _ = happyFail (happyExpListPerState 42)--action_43 (55) = happyAccept-action_43 _ = happyFail (happyExpListPerState 43)--action_44 _ = happyReduce_24--action_45 (29) = happyShift action_59-action_45 _ = happyFail (happyExpListPerState 45)--action_46 (29) = happyShift action_56-action_46 (32) = happyShift action_57-action_46 (33) = happyShift action_58-action_46 (55) = happyAccept-action_46 _ = happyFail (happyExpListPerState 46)--action_47 _ = happyReduce_20--action_48 _ = happyReduce_21--action_49 _ = happyReduce_22--action_50 (37) = happyShift action_41-action_50 (39) = happyShift action_42-action_50 (41) = happyShift action_31-action_50 (42) = happyShift action_32-action_50 (51) = happyShift action_33-action_50 (52) = happyShift action_34-action_50 (53) = happyShift action_35-action_50 (15) = happyGoto action_24-action_50 (16) = happyGoto action_25-action_50 (17) = happyGoto action_37-action_50 (21) = happyGoto action_38-action_50 (22) = happyGoto action_55-action_50 (23) = happyGoto action_40-action_50 _ = happyReduce_33--action_51 _ = happyReduce_15--action_52 (55) = happyAccept-action_52 _ = happyFail (happyExpListPerState 52)--action_53 (46) = happyShift action_54-action_53 _ = happyFail (happyExpListPerState 53)--action_54 (37) = happyShift action_41-action_54 (39) = happyShift action_42-action_54 (41) = happyShift action_31-action_54 (42) = happyShift action_32-action_54 (51) = happyShift action_33-action_54 (52) = happyShift action_34-action_54 (53) = happyShift action_35-action_54 (15) = happyGoto action_24-action_54 (16) = happyGoto action_25-action_54 (17) = happyGoto action_37-action_54 (21) = happyGoto action_38-action_54 (22) = happyGoto action_84-action_54 (23) = happyGoto action_40-action_54 _ = happyReduce_33--action_55 (47) = happyShift action_83-action_55 _ = happyFail (happyExpListPerState 55)--action_56 (37) = happyShift action_41-action_56 (39) = happyShift action_42-action_56 (41) = happyShift action_31-action_56 (42) = happyShift action_32-action_56 (51) = happyShift action_33-action_56 (52) = happyShift action_34-action_56 (53) = happyShift action_35-action_56 (15) = happyGoto action_24-action_56 (16) = happyGoto action_25-action_56 (17) = happyGoto action_37-action_56 (21) = happyGoto action_38-action_56 (22) = happyGoto action_82-action_56 (23) = happyGoto action_40-action_56 _ = happyReduce_33--action_57 (41) = happyShift action_31-action_57 (42) = happyShift action_32-action_57 (51) = happyShift action_33-action_57 (52) = happyShift action_34-action_57 (53) = happyShift action_35-action_57 (15) = happyGoto action_24-action_57 (16) = happyGoto action_25-action_57 (17) = happyGoto action_26-action_57 (23) = happyGoto action_81-action_57 _ = happyFail (happyExpListPerState 57)--action_58 (40) = happyShift action_80-action_58 _ = happyFail (happyExpListPerState 58)--action_59 (38) = happyShift action_47-action_59 (40) = happyShift action_48-action_59 (45) = happyShift action_49-action_59 (46) = happyShift action_50-action_59 (53) = happyShift action_35-action_59 (54) = happyShift action_51-action_59 (17) = happyGoto action_44-action_59 (18) = happyGoto action_45-action_59 (20) = happyGoto action_79-action_59 _ = happyFail (happyExpListPerState 59)--action_60 (50) = happyShift action_78-action_60 (14) = happyGoto action_77-action_60 _ = happyFail (happyExpListPerState 60)--action_61 (44) = happyShift action_76-action_61 (49) = happyShift action_11-action_61 (53) = happyShift action_35-action_61 (13) = happyGoto action_74-action_61 (17) = happyGoto action_75-action_61 _ = happyFail (happyExpListPerState 61)--action_62 (38) = happyShift action_47-action_62 (40) = happyShift action_48-action_62 (44) = happyShift action_73-action_62 (45) = happyShift action_49-action_62 (46) = happyShift action_50-action_62 (53) = happyShift action_35-action_62 (54) = happyShift action_51-action_62 (17) = happyGoto action_44-action_62 (18) = happyGoto action_45-action_62 (20) = happyGoto action_72-action_62 _ = happyFail (happyExpListPerState 62)--action_63 (37) = happyShift action_41-action_63 (39) = happyShift action_42-action_63 (41) = happyShift action_31-action_63 (42) = happyShift action_32-action_63 (51) = happyShift action_33-action_63 (52) = happyShift action_34-action_63 (53) = happyShift action_35-action_63 (15) = happyGoto action_24-action_63 (16) = happyGoto action_25-action_63 (17) = happyGoto action_37-action_63 (21) = happyGoto action_38-action_63 (22) = happyGoto action_71-action_63 (23) = happyGoto action_40-action_63 _ = happyReduce_33--action_64 _ = happyReduce_44--action_65 (47) = happyShift action_70-action_65 _ = happyFail (happyExpListPerState 65)--action_66 _ = happyReduce_50--action_67 (30) = happyShift action_69-action_67 _ = happyFail (happyExpListPerState 67)--action_68 _ = happyReduce_52--action_69 _ = happyReduce_49--action_70 _ = happyReduce_45--action_71 _ = happyReduce_35--action_72 (29) = happyShift action_56-action_72 (32) = happyShift action_57-action_72 (33) = happyShift action_58-action_72 _ = happyReduce_26--action_73 _ = happyReduce_27--action_74 _ = happyReduce_28--action_75 _ = happyReduce_32--action_76 _ = happyReduce_29--action_77 _ = happyReduce_30--action_78 _ = happyReduce_11--action_79 (29) = happyShift action_56-action_79 (30) = happyShift action_88-action_79 (32) = happyShift action_57-action_79 (33) = happyShift action_58-action_79 _ = happyFail (happyExpListPerState 79)--action_80 (43) = happyShift action_87-action_80 _ = happyFail (happyExpListPerState 80)--action_81 _ = happyReduce_19--action_82 (30) = happyShift action_86-action_82 _ = happyFail (happyExpListPerState 82)--action_83 _ = happyReduce_17--action_84 (47) = happyShift action_85-action_84 _ = happyFail (happyExpListPerState 84)--action_85 (36) = happyShift action_90-action_85 _ = happyFail (happyExpListPerState 85)--action_86 _ = happyReduce_18--action_87 (38) = happyShift action_47-action_87 (40) = happyShift action_48-action_87 (45) = happyShift action_49-action_87 (46) = happyShift action_50-action_87 (53) = happyShift action_35-action_87 (54) = happyShift action_51-action_87 (17) = happyGoto action_44-action_87 (18) = happyGoto action_45-action_87 (20) = happyGoto action_89-action_87 _ = happyFail (happyExpListPerState 87)--action_88 _ = happyReduce_25--action_89 (29) = happyShift action_56-action_89 (32) = happyShift action_57-action_89 (33) = happyShift action_58-action_89 (34) = happyShift action_91-action_89 _ = happyFail (happyExpListPerState 89)--action_90 _ = happyReduce_16--action_91 _ = happyReduce_23--happyReduce_10 = happySpecReduce_1 13 happyReduction_10-happyReduction_10 (HappyTerminal (PT _ (T_Bytes happy_var_1)))- = HappyAbsSyn13- (Language.EO.Phi.Syntax.Abs.Bytes happy_var_1- )-happyReduction_10 _ = notHappyAtAll --happyReduce_11 = happySpecReduce_1 14 happyReduction_11-happyReduction_11 (HappyTerminal (PT _ (T_Function happy_var_1)))- = HappyAbsSyn14- (Language.EO.Phi.Syntax.Abs.Function happy_var_1- )-happyReduction_11 _ = notHappyAtAll --happyReduce_12 = happySpecReduce_1 15 happyReduction_12-happyReduction_12 (HappyTerminal (PT _ (T_LabelId happy_var_1)))- = HappyAbsSyn15- (Language.EO.Phi.Syntax.Abs.LabelId happy_var_1- )-happyReduction_12 _ = notHappyAtAll --happyReduce_13 = happySpecReduce_1 16 happyReduction_13-happyReduction_13 (HappyTerminal (PT _ (T_AlphaIndex happy_var_1)))- = HappyAbsSyn16- (Language.EO.Phi.Syntax.Abs.AlphaIndex happy_var_1- )-happyReduction_13 _ = notHappyAtAll --happyReduce_14 = happySpecReduce_1 17 happyReduction_14-happyReduction_14 (HappyTerminal (PT _ (T_MetaId happy_var_1)))- = HappyAbsSyn17- (Language.EO.Phi.Syntax.Abs.MetaId happy_var_1- )-happyReduction_14 _ = notHappyAtAll --happyReduce_15 = happySpecReduce_1 18 happyReduction_15-happyReduction_15 (HappyTerminal (PT _ (T_MetaFunctionName happy_var_1)))- = HappyAbsSyn18- (Language.EO.Phi.Syntax.Abs.MetaFunctionName happy_var_1- )-happyReduction_15 _ = notHappyAtAll --happyReduce_16 = happyReduce 5 19 happyReduction_16-happyReduction_16 (_ `HappyStk`- _ `HappyStk`- (HappyAbsSyn22 happy_var_3) `HappyStk`- _ `HappyStk`- _ `HappyStk`- happyRest)- = HappyAbsSyn19- (Language.EO.Phi.Syntax.Abs.Program happy_var_3- ) `HappyStk` happyRest--happyReduce_17 = happySpecReduce_3 20 happyReduction_17-happyReduction_17 _- (HappyAbsSyn22 happy_var_2)- _- = HappyAbsSyn20- (Language.EO.Phi.Syntax.Abs.Formation happy_var_2- )-happyReduction_17 _ _ _ = notHappyAtAll --happyReduce_18 = happyReduce 4 20 happyReduction_18-happyReduction_18 (_ `HappyStk`- (HappyAbsSyn22 happy_var_3) `HappyStk`- _ `HappyStk`- (HappyAbsSyn20 happy_var_1) `HappyStk`- happyRest)- = HappyAbsSyn20- (Language.EO.Phi.Syntax.Abs.Application happy_var_1 happy_var_3- ) `HappyStk` happyRest--happyReduce_19 = happySpecReduce_3 20 happyReduction_19-happyReduction_19 (HappyAbsSyn23 happy_var_3)- _- (HappyAbsSyn20 happy_var_1)- = HappyAbsSyn20- (Language.EO.Phi.Syntax.Abs.ObjectDispatch happy_var_1 happy_var_3- )-happyReduction_19 _ _ _ = notHappyAtAll --happyReduce_20 = happySpecReduce_1 20 happyReduction_20-happyReduction_20 _- = HappyAbsSyn20- (Language.EO.Phi.Syntax.Abs.GlobalObject- )--happyReduce_21 = happySpecReduce_1 20 happyReduction_21-happyReduction_21 _- = HappyAbsSyn20- (Language.EO.Phi.Syntax.Abs.ThisObject- )--happyReduce_22 = happySpecReduce_1 20 happyReduction_22-happyReduction_22 _- = HappyAbsSyn20- (Language.EO.Phi.Syntax.Abs.Termination- )--happyReduce_23 = happyReduce 6 20 happyReduction_23-happyReduction_23 (_ `HappyStk`- (HappyAbsSyn20 happy_var_5) `HappyStk`- _ `HappyStk`- _ `HappyStk`- _ `HappyStk`- (HappyAbsSyn20 happy_var_1) `HappyStk`- happyRest)- = HappyAbsSyn20- (Language.EO.Phi.Syntax.Abs.MetaSubstThis happy_var_1 happy_var_5- ) `HappyStk` happyRest--happyReduce_24 = happySpecReduce_1 20 happyReduction_24-happyReduction_24 (HappyAbsSyn17 happy_var_1)- = HappyAbsSyn20- (Language.EO.Phi.Syntax.Abs.MetaObject happy_var_1- )-happyReduction_24 _ = notHappyAtAll --happyReduce_25 = happyReduce 4 20 happyReduction_25-happyReduction_25 (_ `HappyStk`- (HappyAbsSyn20 happy_var_3) `HappyStk`- _ `HappyStk`- (HappyAbsSyn18 happy_var_1) `HappyStk`- happyRest)- = HappyAbsSyn20- (Language.EO.Phi.Syntax.Abs.MetaFunction happy_var_1 happy_var_3- ) `HappyStk` happyRest--happyReduce_26 = happySpecReduce_3 21 happyReduction_26-happyReduction_26 (HappyAbsSyn20 happy_var_3)- _- (HappyAbsSyn23 happy_var_1)- = HappyAbsSyn21- (Language.EO.Phi.Syntax.Abs.AlphaBinding happy_var_1 happy_var_3- )-happyReduction_26 _ _ _ = notHappyAtAll --happyReduce_27 = happySpecReduce_3 21 happyReduction_27-happyReduction_27 _- _- (HappyAbsSyn23 happy_var_1)- = HappyAbsSyn21- (Language.EO.Phi.Syntax.Abs.EmptyBinding happy_var_1- )-happyReduction_27 _ _ _ = notHappyAtAll --happyReduce_28 = happySpecReduce_3 21 happyReduction_28-happyReduction_28 (HappyAbsSyn13 happy_var_3)- _- _- = HappyAbsSyn21- (Language.EO.Phi.Syntax.Abs.DeltaBinding happy_var_3- )-happyReduction_28 _ _ _ = notHappyAtAll --happyReduce_29 = happySpecReduce_3 21 happyReduction_29-happyReduction_29 _- _- _- = HappyAbsSyn21- (Language.EO.Phi.Syntax.Abs.DeltaEmptyBinding- )--happyReduce_30 = happySpecReduce_3 21 happyReduction_30-happyReduction_30 (HappyAbsSyn14 happy_var_3)- _- _- = HappyAbsSyn21- (Language.EO.Phi.Syntax.Abs.LambdaBinding happy_var_3- )-happyReduction_30 _ _ _ = notHappyAtAll --happyReduce_31 = happySpecReduce_1 21 happyReduction_31-happyReduction_31 (HappyAbsSyn17 happy_var_1)- = HappyAbsSyn21- (Language.EO.Phi.Syntax.Abs.MetaBindings happy_var_1- )-happyReduction_31 _ = notHappyAtAll --happyReduce_32 = happySpecReduce_3 21 happyReduction_32-happyReduction_32 (HappyAbsSyn17 happy_var_3)- _- _- = HappyAbsSyn21- (Language.EO.Phi.Syntax.Abs.MetaDeltaBinding happy_var_3- )-happyReduction_32 _ _ _ = notHappyAtAll --happyReduce_33 = happySpecReduce_0 22 happyReduction_33-happyReduction_33 = HappyAbsSyn22- ([]- )--happyReduce_34 = happySpecReduce_1 22 happyReduction_34-happyReduction_34 (HappyAbsSyn21 happy_var_1)- = HappyAbsSyn22- ((:[]) happy_var_1- )-happyReduction_34 _ = notHappyAtAll --happyReduce_35 = happySpecReduce_3 22 happyReduction_35-happyReduction_35 (HappyAbsSyn22 happy_var_3)- _- (HappyAbsSyn21 happy_var_1)- = HappyAbsSyn22- ((:) happy_var_1 happy_var_3- )-happyReduction_35 _ _ _ = notHappyAtAll --happyReduce_36 = happySpecReduce_1 23 happyReduction_36-happyReduction_36 _- = HappyAbsSyn23- (Language.EO.Phi.Syntax.Abs.Phi- )--happyReduce_37 = happySpecReduce_1 23 happyReduction_37-happyReduction_37 _- = HappyAbsSyn23- (Language.EO.Phi.Syntax.Abs.Rho- )--happyReduce_38 = happySpecReduce_1 23 happyReduction_38-happyReduction_38 (HappyAbsSyn15 happy_var_1)- = HappyAbsSyn23- (Language.EO.Phi.Syntax.Abs.Label happy_var_1- )-happyReduction_38 _ = notHappyAtAll --happyReduce_39 = happySpecReduce_1 23 happyReduction_39-happyReduction_39 (HappyAbsSyn16 happy_var_1)- = HappyAbsSyn23- (Language.EO.Phi.Syntax.Abs.Alpha happy_var_1- )-happyReduction_39 _ = notHappyAtAll --happyReduce_40 = happySpecReduce_1 23 happyReduction_40-happyReduction_40 (HappyAbsSyn17 happy_var_1)- = HappyAbsSyn23- (Language.EO.Phi.Syntax.Abs.MetaAttr happy_var_1- )-happyReduction_40 _ = notHappyAtAll --happyReduce_41 = happySpecReduce_1 24 happyReduction_41-happyReduction_41 (HappyAbsSyn23 happy_var_1)- = HappyAbsSyn24- (Language.EO.Phi.Syntax.Abs.ObjectAttr happy_var_1- )-happyReduction_41 _ = notHappyAtAll --happyReduce_42 = happySpecReduce_1 24 happyReduction_42-happyReduction_42 _- = HappyAbsSyn24- (Language.EO.Phi.Syntax.Abs.DeltaAttr- )--happyReduce_43 = happySpecReduce_1 24 happyReduction_43-happyReduction_43 _- = HappyAbsSyn24- (Language.EO.Phi.Syntax.Abs.LambdaAttr- )--happyReduce_44 = happySpecReduce_2 25 happyReduction_44-happyReduction_44 (HappyAbsSyn28 happy_var_2)- (HappyAbsSyn26 happy_var_1)- = HappyAbsSyn25- (Language.EO.Phi.Syntax.Abs.PeeledObject happy_var_1 happy_var_2- )-happyReduction_44 _ _ = notHappyAtAll --happyReduce_45 = happySpecReduce_3 26 happyReduction_45-happyReduction_45 _- (HappyAbsSyn22 happy_var_2)- _- = HappyAbsSyn26- (Language.EO.Phi.Syntax.Abs.HeadFormation happy_var_2- )-happyReduction_45 _ _ _ = notHappyAtAll --happyReduce_46 = happySpecReduce_1 26 happyReduction_46-happyReduction_46 _- = HappyAbsSyn26- (Language.EO.Phi.Syntax.Abs.HeadGlobal- )--happyReduce_47 = happySpecReduce_1 26 happyReduction_47-happyReduction_47 _- = HappyAbsSyn26- (Language.EO.Phi.Syntax.Abs.HeadThis- )--happyReduce_48 = happySpecReduce_1 26 happyReduction_48-happyReduction_48 _- = HappyAbsSyn26- (Language.EO.Phi.Syntax.Abs.HeadTermination- )--happyReduce_49 = happySpecReduce_3 27 happyReduction_49-happyReduction_49 _- (HappyAbsSyn22 happy_var_2)- _- = HappyAbsSyn27- (Language.EO.Phi.Syntax.Abs.ActionApplication happy_var_2- )-happyReduction_49 _ _ _ = notHappyAtAll --happyReduce_50 = happySpecReduce_2 27 happyReduction_50-happyReduction_50 (HappyAbsSyn23 happy_var_2)- _- = HappyAbsSyn27- (Language.EO.Phi.Syntax.Abs.ActionDispatch happy_var_2- )-happyReduction_50 _ _ = notHappyAtAll --happyReduce_51 = happySpecReduce_0 28 happyReduction_51-happyReduction_51 = HappyAbsSyn28- ([]- )--happyReduce_52 = happySpecReduce_2 28 happyReduction_52-happyReduction_52 (HappyAbsSyn28 happy_var_2)- (HappyAbsSyn27 happy_var_1)- = HappyAbsSyn28- ((:) happy_var_1 happy_var_2- )-happyReduction_52 _ _ = notHappyAtAll --happyNewToken action sts stk [] =- action 55 55 notHappyAtAll (HappyState action) sts stk []--happyNewToken action sts stk (tk:tks) =- let cont i = action i i tk (HappyState action) sts stk tks in- case tk of {- PT _ (TS _ 1) -> cont 29;- PT _ (TS _ 2) -> cont 30;- PT _ (TS _ 3) -> cont 31;- PT _ (TS _ 4) -> cont 32;- PT _ (TS _ 5) -> cont 33;- PT _ (TS _ 6) -> cont 34;- PT _ (TS _ 7) -> cont 35;- PT _ (TS _ 8) -> cont 36;- PT _ (TS _ 9) -> cont 37;- PT _ (TS _ 10) -> cont 38;- PT _ (TS _ 11) -> cont 39;- PT _ (TS _ 12) -> cont 40;- PT _ (TS _ 13) -> cont 41;- PT _ (TS _ 14) -> cont 42;- PT _ (TS _ 15) -> cont 43;- PT _ (TS _ 16) -> cont 44;- PT _ (TS _ 17) -> cont 45;- PT _ (TS _ 18) -> cont 46;- PT _ (TS _ 19) -> cont 47;- PT _ (TS _ 20) -> cont 48;- PT _ (T_Bytes happy_dollar_dollar) -> cont 49;- PT _ (T_Function happy_dollar_dollar) -> cont 50;- PT _ (T_LabelId happy_dollar_dollar) -> cont 51;- PT _ (T_AlphaIndex happy_dollar_dollar) -> cont 52;- PT _ (T_MetaId happy_dollar_dollar) -> cont 53;- PT _ (T_MetaFunctionName happy_dollar_dollar) -> cont 54;- _ -> happyError' ((tk:tks), [])- }--happyError_ explist 55 tk tks = happyError' (tks, explist)-happyError_ explist _ tk tks = happyError' ((tk:tks), explist)--happyThen :: () => Err a -> (a -> Err b) -> Err b-happyThen = ((>>=))-happyReturn :: () => a -> Err a-happyReturn = (return)-happyThen1 m k tks = ((>>=)) m (\a -> k a tks)-happyReturn1 :: () => a -> b -> Err a-happyReturn1 = \a tks -> (return) a-happyError' :: () => ([(Token)], [Prelude.String]) -> Err a-happyError' = (\(tokens, _) -> happyError tokens)-pProgram tks = happySomeParser where- happySomeParser = happyThen (happyParse action_0 tks) (\x -> case x of {HappyAbsSyn19 z -> happyReturn z; _other -> notHappyAtAll })--pObject tks = happySomeParser where- happySomeParser = happyThen (happyParse action_1 tks) (\x -> case x of {HappyAbsSyn20 z -> happyReturn z; _other -> notHappyAtAll })--pBinding tks = happySomeParser where- happySomeParser = happyThen (happyParse action_2 tks) (\x -> case x of {HappyAbsSyn21 z -> happyReturn z; _other -> notHappyAtAll })--pListBinding tks = happySomeParser where- happySomeParser = happyThen (happyParse action_3 tks) (\x -> case x of {HappyAbsSyn22 z -> happyReturn z; _other -> notHappyAtAll })--pAttribute tks = happySomeParser where- happySomeParser = happyThen (happyParse action_4 tks) (\x -> case x of {HappyAbsSyn23 z -> happyReturn z; _other -> notHappyAtAll })--pRuleAttribute tks = happySomeParser where- happySomeParser = happyThen (happyParse action_5 tks) (\x -> case x of {HappyAbsSyn24 z -> happyReturn z; _other -> notHappyAtAll })--pPeeledObject tks = happySomeParser where- happySomeParser = happyThen (happyParse action_6 tks) (\x -> case x of {HappyAbsSyn25 z -> happyReturn z; _other -> notHappyAtAll })--pObjectHead tks = happySomeParser where- happySomeParser = happyThen (happyParse action_7 tks) (\x -> case x of {HappyAbsSyn26 z -> happyReturn z; _other -> notHappyAtAll })--pObjectAction tks = happySomeParser where- happySomeParser = happyThen (happyParse action_8 tks) (\x -> case x of {HappyAbsSyn27 z -> happyReturn z; _other -> notHappyAtAll })--pListObjectAction tks = happySomeParser where- happySomeParser = happyThen (happyParse action_9 tks) (\x -> case x of {HappyAbsSyn28 z -> happyReturn z; _other -> notHappyAtAll })+ , pMetaId+ , pObject+ , pBinding+ , pListBinding+ , pAttribute+ , pRuleAttribute+ , pPeeledObject+ , pObjectHead+ , pObjectAction+ , pListObjectAction+ ) where++import Prelude++import qualified Language.EO.Phi.Syntax.Abs+import Language.EO.Phi.Syntax.Lex+import qualified Data.Array as Happy_Data_Array+import qualified Data.Bits as Bits+import Control.Applicative(Applicative(..))+import Control.Monad (ap)++-- parser produced by Happy Version 1.20.1.1++data HappyAbsSyn + = HappyTerminal (Token)+ | HappyErrorToken Prelude.Int+ | HappyAbsSyn14 (Language.EO.Phi.Syntax.Abs.Bytes)+ | HappyAbsSyn15 (Language.EO.Phi.Syntax.Abs.Function)+ | HappyAbsSyn16 (Language.EO.Phi.Syntax.Abs.LabelId)+ | HappyAbsSyn17 (Language.EO.Phi.Syntax.Abs.AlphaIndex)+ | HappyAbsSyn18 (Language.EO.Phi.Syntax.Abs.LabelMetaId)+ | HappyAbsSyn19 (Language.EO.Phi.Syntax.Abs.TailMetaId)+ | HappyAbsSyn20 (Language.EO.Phi.Syntax.Abs.BindingsMetaId)+ | HappyAbsSyn21 (Language.EO.Phi.Syntax.Abs.ObjectMetaId)+ | HappyAbsSyn22 (Language.EO.Phi.Syntax.Abs.BytesMetaId)+ | HappyAbsSyn23 (Language.EO.Phi.Syntax.Abs.MetaFunctionName)+ | HappyAbsSyn24 (Language.EO.Phi.Syntax.Abs.Program)+ | HappyAbsSyn25 (Language.EO.Phi.Syntax.Abs.MetaId)+ | HappyAbsSyn26 (Language.EO.Phi.Syntax.Abs.Object)+ | HappyAbsSyn27 (Language.EO.Phi.Syntax.Abs.Binding)+ | HappyAbsSyn28 ([Language.EO.Phi.Syntax.Abs.Binding])+ | HappyAbsSyn29 (Language.EO.Phi.Syntax.Abs.Attribute)+ | HappyAbsSyn30 (Language.EO.Phi.Syntax.Abs.RuleAttribute)+ | HappyAbsSyn31 (Language.EO.Phi.Syntax.Abs.PeeledObject)+ | HappyAbsSyn32 (Language.EO.Phi.Syntax.Abs.ObjectHead)+ | HappyAbsSyn33 (Language.EO.Phi.Syntax.Abs.ObjectAction)+ | HappyAbsSyn34 ([Language.EO.Phi.Syntax.Abs.ObjectAction])++{- to allow type-synonyms as our monads (likely+ - with explicitly-specified bind and return)+ - in Haskell98, it seems that with+ - /type M a = .../, then /(HappyReduction M)/+ - is not allowed. But Happy is a+ - code-generator that can just substitute it.+type HappyReduction m = + Prelude.Int + -> (Token)+ -> HappyState (Token) (HappyStk HappyAbsSyn -> [(Token)] -> m HappyAbsSyn)+ -> [HappyState (Token) (HappyStk HappyAbsSyn -> [(Token)] -> m HappyAbsSyn)] + -> HappyStk HappyAbsSyn + -> [(Token)] -> m HappyAbsSyn+-}++action_0,+ action_1,+ action_2,+ action_3,+ action_4,+ action_5,+ action_6,+ action_7,+ action_8,+ action_9,+ action_10,+ action_11,+ action_12,+ action_13,+ action_14,+ action_15,+ action_16,+ action_17,+ action_18,+ action_19,+ action_20,+ action_21,+ action_22,+ action_23,+ action_24,+ action_25,+ action_26,+ action_27,+ action_28,+ action_29,+ action_30,+ action_31,+ action_32,+ action_33,+ action_34,+ action_35,+ action_36,+ action_37,+ action_38,+ action_39,+ action_40,+ action_41,+ action_42,+ action_43,+ action_44,+ action_45,+ action_46,+ action_47,+ action_48,+ action_49,+ action_50,+ action_51,+ action_52,+ action_53,+ action_54,+ action_55,+ action_56,+ action_57,+ action_58,+ action_59,+ action_60,+ action_61,+ action_62,+ action_63,+ action_64,+ action_65,+ action_66,+ action_67,+ action_68,+ action_69,+ action_70,+ action_71,+ action_72,+ action_73,+ action_74,+ action_75,+ action_76,+ action_77,+ action_78,+ action_79,+ action_80,+ action_81,+ action_82,+ action_83,+ action_84,+ action_85,+ action_86,+ action_87,+ action_88,+ action_89,+ action_90,+ action_91,+ action_92,+ action_93,+ action_94,+ action_95,+ action_96,+ action_97,+ action_98,+ action_99,+ action_100,+ action_101,+ action_102,+ action_103,+ action_104 :: () => Prelude.Int -> ({-HappyReduction (Err) = -}+ Prelude.Int + -> (Token)+ -> HappyState (Token) (HappyStk HappyAbsSyn -> [(Token)] -> (Err) HappyAbsSyn)+ -> [HappyState (Token) (HappyStk HappyAbsSyn -> [(Token)] -> (Err) HappyAbsSyn)] + -> HappyStk HappyAbsSyn + -> [(Token)] -> (Err) HappyAbsSyn)++happyReduce_11,+ happyReduce_12,+ happyReduce_13,+ happyReduce_14,+ happyReduce_15,+ happyReduce_16,+ happyReduce_17,+ happyReduce_18,+ happyReduce_19,+ happyReduce_20,+ happyReduce_21,+ happyReduce_22,+ happyReduce_23,+ happyReduce_24,+ happyReduce_25,+ happyReduce_26,+ happyReduce_27,+ happyReduce_28,+ happyReduce_29,+ happyReduce_30,+ happyReduce_31,+ happyReduce_32,+ happyReduce_33,+ happyReduce_34,+ happyReduce_35,+ happyReduce_36,+ happyReduce_37,+ happyReduce_38,+ happyReduce_39,+ happyReduce_40,+ happyReduce_41,+ happyReduce_42,+ happyReduce_43,+ happyReduce_44,+ happyReduce_45,+ happyReduce_46,+ happyReduce_47,+ happyReduce_48,+ happyReduce_49,+ happyReduce_50,+ happyReduce_51,+ happyReduce_52,+ happyReduce_53,+ happyReduce_54,+ happyReduce_55,+ happyReduce_56,+ happyReduce_57,+ happyReduce_58,+ happyReduce_59,+ happyReduce_60,+ happyReduce_61,+ happyReduce_62,+ happyReduce_63 :: () => ({-HappyReduction (Err) = -}+ Prelude.Int + -> (Token)+ -> HappyState (Token) (HappyStk HappyAbsSyn -> [(Token)] -> (Err) HappyAbsSyn)+ -> [HappyState (Token) (HappyStk HappyAbsSyn -> [(Token)] -> (Err) HappyAbsSyn)] + -> HappyStk HappyAbsSyn + -> [(Token)] -> (Err) HappyAbsSyn)++happyExpList :: Happy_Data_Array.Array Prelude.Int Prelude.Int+happyExpList = Happy_Data_Array.listArray (0,215) ([0,0,512,0,0,0,0,57344,3,0,0,389,20,0,0,32874,11,0,0,424,46,0,0,1536,56,0,0,6784,224,0,0,5120,6,0,0,20480,24,0,0,272,0,0,0,1088,0,0,0,0,8192,0,0,0,0,0,0,4096,1,0,0,0,0,0,0,0,27136,2944,0,0,32768,3585,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6784,736,0,0,0,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,8,0,0,0,1024,0,0,0,4096,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,424,46,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,40960,47110,0,0,0,512,0,0,0,32874,11,0,0,0,16,0,0,1536,56,0,0,1024,0,0,0,5120,20486,0,0,0,256,0,0,0,528,2,0,0,453,20,0,0,32874,11,0,0,0,0,0,0,32768,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54272,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14080,0,0,0,0,512,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,128,0,0,16384,0,0,0,0,0,0,0,0,6224,320,0,0,0,0,0,16384,29,0,0,0,0,0,0,0,0,0,0,0+ ])++{-# NOINLINE happyExpListPerState #-}+happyExpListPerState st =+ token_strs_expected+ where token_strs = ["error","%dummy","%start_pProgram","%start_pMetaId","%start_pObject","%start_pBinding","%start_pListBinding","%start_pAttribute","%start_pRuleAttribute","%start_pPeeledObject","%start_pObjectHead","%start_pObjectAction","%start_pListObjectAction","Bytes","Function","LabelId","AlphaIndex","LabelMetaId","TailMetaId","BindingsMetaId","ObjectMetaId","BytesMetaId","MetaFunctionName","Program","MetaId","Object","Binding","ListBinding","Attribute","RuleAttribute","PeeledObject","ObjectHead","ObjectAction","ListObjectAction","'('","')'","'*'","','","'.'","'['","']'","'{'","'}'","'\916'","'\934'","'\955'","'\958'","'\961'","'\966'","'\8614'","'\8709'","'\8869'","'\10214'","'\10215'","'\10509'","L_Bytes","L_Function","L_LabelId","L_AlphaIndex","L_LabelMetaId","L_TailMetaId","L_BindingsMetaId","L_ObjectMetaId","L_BytesMetaId","L_MetaFunctionName","%eof"]+ bit_start = st Prelude.* 66+ bit_end = (st Prelude.+ 1) Prelude.* 66+ read_bit = readArrayBit happyExpList+ bits = Prelude.map read_bit [bit_start..bit_end Prelude.- 1]+ bits_indexed = Prelude.zip bits [0..65]+ token_strs_expected = Prelude.concatMap f bits_indexed+ f (Prelude.False, _) = []+ f (Prelude.True, nr) = [token_strs Prelude.!! nr]++action_0 (42) = happyShift action_64+action_0 (24) = happyGoto action_63+action_0 _ = happyFail (happyExpListPerState 0)++action_1 (60) = happyShift action_36+action_1 (61) = happyShift action_61+action_1 (62) = happyShift action_44+action_1 (63) = happyShift action_53+action_1 (64) = happyShift action_62+action_1 (18) = happyGoto action_55+action_1 (19) = happyGoto action_56+action_1 (20) = happyGoto action_57+action_1 (21) = happyGoto action_58+action_1 (22) = happyGoto action_59+action_1 (25) = happyGoto action_60+action_1 _ = happyFail (happyExpListPerState 1)++action_2 (45) = happyShift action_49+action_2 (47) = happyShift action_50+action_2 (52) = happyShift action_51+action_2 (53) = happyShift action_52+action_2 (63) = happyShift action_53+action_2 (65) = happyShift action_54+action_2 (21) = happyGoto action_46+action_2 (23) = happyGoto action_47+action_2 (26) = happyGoto action_48+action_2 _ = happyFail (happyExpListPerState 2)++action_3 (44) = happyShift action_42+action_3 (46) = happyShift action_43+action_3 (48) = happyShift action_32+action_3 (49) = happyShift action_33+action_3 (58) = happyShift action_34+action_3 (59) = happyShift action_35+action_3 (60) = happyShift action_36+action_3 (62) = happyShift action_44+action_3 (16) = happyGoto action_25+action_3 (17) = happyGoto action_26+action_3 (18) = happyGoto action_27+action_3 (20) = happyGoto action_38+action_3 (27) = happyGoto action_45+action_3 (29) = happyGoto action_41+action_3 _ = happyFail (happyExpListPerState 3)++action_4 (44) = happyShift action_42+action_4 (46) = happyShift action_43+action_4 (48) = happyShift action_32+action_4 (49) = happyShift action_33+action_4 (58) = happyShift action_34+action_4 (59) = happyShift action_35+action_4 (60) = happyShift action_36+action_4 (62) = happyShift action_44+action_4 (16) = happyGoto action_25+action_4 (17) = happyGoto action_26+action_4 (18) = happyGoto action_27+action_4 (20) = happyGoto action_38+action_4 (27) = happyGoto action_39+action_4 (28) = happyGoto action_40+action_4 (29) = happyGoto action_41+action_4 _ = happyReduce_44++action_5 (48) = happyShift action_32+action_5 (49) = happyShift action_33+action_5 (58) = happyShift action_34+action_5 (59) = happyShift action_35+action_5 (60) = happyShift action_36+action_5 (16) = happyGoto action_25+action_5 (17) = happyGoto action_26+action_5 (18) = happyGoto action_27+action_5 (29) = happyGoto action_37+action_5 _ = happyFail (happyExpListPerState 5)++action_6 (44) = happyShift action_30+action_6 (46) = happyShift action_31+action_6 (48) = happyShift action_32+action_6 (49) = happyShift action_33+action_6 (58) = happyShift action_34+action_6 (59) = happyShift action_35+action_6 (60) = happyShift action_36+action_6 (16) = happyGoto action_25+action_6 (17) = happyGoto action_26+action_6 (18) = happyGoto action_27+action_6 (29) = happyGoto action_28+action_6 (30) = happyGoto action_29+action_6 _ = happyFail (happyExpListPerState 6)++action_7 (45) = happyShift action_19+action_7 (47) = happyShift action_20+action_7 (52) = happyShift action_21+action_7 (53) = happyShift action_22+action_7 (31) = happyGoto action_23+action_7 (32) = happyGoto action_24+action_7 _ = happyFail (happyExpListPerState 7)++action_8 (45) = happyShift action_19+action_8 (47) = happyShift action_20+action_8 (52) = happyShift action_21+action_8 (53) = happyShift action_22+action_8 (32) = happyGoto action_18+action_8 _ = happyFail (happyExpListPerState 8)++action_9 (35) = happyShift action_15+action_9 (39) = happyShift action_16+action_9 (33) = happyGoto action_17+action_9 _ = happyFail (happyExpListPerState 9)++action_10 (35) = happyShift action_15+action_10 (39) = happyShift action_16+action_10 (33) = happyGoto action_13+action_10 (34) = happyGoto action_14+action_10 _ = happyReduce_62++action_11 (56) = happyShift action_12+action_11 _ = happyFail (happyExpListPerState 11)++action_12 _ = happyReduce_11++action_13 (35) = happyShift action_15+action_13 (39) = happyShift action_16+action_13 (33) = happyGoto action_13+action_13 (34) = happyGoto action_80+action_13 _ = happyReduce_62++action_14 (66) = happyAccept+action_14 _ = happyFail (happyExpListPerState 14)++action_15 (44) = happyShift action_42+action_15 (46) = happyShift action_43+action_15 (48) = happyShift action_32+action_15 (49) = happyShift action_33+action_15 (58) = happyShift action_34+action_15 (59) = happyShift action_35+action_15 (60) = happyShift action_36+action_15 (62) = happyShift action_44+action_15 (16) = happyGoto action_25+action_15 (17) = happyGoto action_26+action_15 (18) = happyGoto action_27+action_15 (20) = happyGoto action_38+action_15 (27) = happyGoto action_39+action_15 (28) = happyGoto action_79+action_15 (29) = happyGoto action_41+action_15 _ = happyReduce_44++action_16 (48) = happyShift action_32+action_16 (49) = happyShift action_33+action_16 (58) = happyShift action_34+action_16 (59) = happyShift action_35+action_16 (60) = happyShift action_36+action_16 (16) = happyGoto action_25+action_16 (17) = happyGoto action_26+action_16 (18) = happyGoto action_27+action_16 (29) = happyGoto action_78+action_16 _ = happyFail (happyExpListPerState 16)++action_17 (66) = happyAccept+action_17 _ = happyFail (happyExpListPerState 17)++action_18 (66) = happyAccept+action_18 _ = happyFail (happyExpListPerState 18)++action_19 _ = happyReduce_57++action_20 _ = happyReduce_58++action_21 _ = happyReduce_59++action_22 (44) = happyShift action_42+action_22 (46) = happyShift action_43+action_22 (48) = happyShift action_32+action_22 (49) = happyShift action_33+action_22 (58) = happyShift action_34+action_22 (59) = happyShift action_35+action_22 (60) = happyShift action_36+action_22 (62) = happyShift action_44+action_22 (16) = happyGoto action_25+action_22 (17) = happyGoto action_26+action_22 (18) = happyGoto action_27+action_22 (20) = happyGoto action_38+action_22 (27) = happyGoto action_39+action_22 (28) = happyGoto action_77+action_22 (29) = happyGoto action_41+action_22 _ = happyReduce_44++action_23 (66) = happyAccept+action_23 _ = happyFail (happyExpListPerState 23)++action_24 (35) = happyShift action_15+action_24 (39) = happyShift action_16+action_24 (33) = happyGoto action_13+action_24 (34) = happyGoto action_76+action_24 _ = happyReduce_62++action_25 _ = happyReduce_49++action_26 _ = happyReduce_50++action_27 _ = happyReduce_51++action_28 _ = happyReduce_52++action_29 (66) = happyAccept+action_29 _ = happyFail (happyExpListPerState 29)++action_30 _ = happyReduce_53++action_31 _ = happyReduce_54++action_32 _ = happyReduce_48++action_33 _ = happyReduce_47++action_34 _ = happyReduce_13++action_35 _ = happyReduce_14++action_36 _ = happyReduce_15++action_37 (66) = happyAccept+action_37 _ = happyFail (happyExpListPerState 37)++action_38 _ = happyReduce_42++action_39 (38) = happyShift action_75+action_39 _ = happyReduce_45++action_40 (66) = happyAccept+action_40 _ = happyFail (happyExpListPerState 40)++action_41 (50) = happyShift action_74+action_41 _ = happyFail (happyExpListPerState 41)++action_42 (55) = happyShift action_73+action_42 _ = happyFail (happyExpListPerState 42)++action_43 (55) = happyShift action_72+action_43 _ = happyFail (happyExpListPerState 43)++action_44 _ = happyReduce_17++action_45 (66) = happyAccept+action_45 _ = happyFail (happyExpListPerState 45)++action_46 _ = happyReduce_34++action_47 (35) = happyShift action_71+action_47 _ = happyFail (happyExpListPerState 47)++action_48 (35) = happyShift action_67+action_48 (37) = happyShift action_68+action_48 (39) = happyShift action_69+action_48 (40) = happyShift action_70+action_48 (66) = happyAccept+action_48 _ = happyFail (happyExpListPerState 48)++action_49 _ = happyReduce_30++action_50 _ = happyReduce_31++action_51 _ = happyReduce_32++action_52 (44) = happyShift action_42+action_52 (46) = happyShift action_43+action_52 (48) = happyShift action_32+action_52 (49) = happyShift action_33+action_52 (58) = happyShift action_34+action_52 (59) = happyShift action_35+action_52 (60) = happyShift action_36+action_52 (62) = happyShift action_44+action_52 (16) = happyGoto action_25+action_52 (17) = happyGoto action_26+action_52 (18) = happyGoto action_27+action_52 (20) = happyGoto action_38+action_52 (27) = happyGoto action_39+action_52 (28) = happyGoto action_66+action_52 (29) = happyGoto action_41+action_52 _ = happyReduce_44++action_53 _ = happyReduce_18++action_54 _ = happyReduce_20++action_55 _ = happyReduce_22++action_56 _ = happyReduce_23++action_57 _ = happyReduce_24++action_58 _ = happyReduce_25++action_59 _ = happyReduce_26++action_60 (66) = happyAccept+action_60 _ = happyFail (happyExpListPerState 60)++action_61 _ = happyReduce_16++action_62 _ = happyReduce_19++action_63 (66) = happyAccept+action_63 _ = happyFail (happyExpListPerState 63)++action_64 (53) = happyShift action_65+action_64 _ = happyFail (happyExpListPerState 64)++action_65 (44) = happyShift action_42+action_65 (46) = happyShift action_43+action_65 (48) = happyShift action_32+action_65 (49) = happyShift action_33+action_65 (58) = happyShift action_34+action_65 (59) = happyShift action_35+action_65 (60) = happyShift action_36+action_65 (62) = happyShift action_44+action_65 (16) = happyGoto action_25+action_65 (17) = happyGoto action_26+action_65 (18) = happyGoto action_27+action_65 (20) = happyGoto action_38+action_65 (27) = happyGoto action_39+action_65 (28) = happyGoto action_97+action_65 (29) = happyGoto action_41+action_65 _ = happyReduce_44++action_66 (54) = happyShift action_96+action_66 _ = happyFail (happyExpListPerState 66)++action_67 (44) = happyShift action_42+action_67 (46) = happyShift action_43+action_67 (48) = happyShift action_32+action_67 (49) = happyShift action_33+action_67 (58) = happyShift action_34+action_67 (59) = happyShift action_35+action_67 (60) = happyShift action_36+action_67 (62) = happyShift action_44+action_67 (16) = happyGoto action_25+action_67 (17) = happyGoto action_26+action_67 (18) = happyGoto action_27+action_67 (20) = happyGoto action_38+action_67 (27) = happyGoto action_39+action_67 (28) = happyGoto action_95+action_67 (29) = happyGoto action_41+action_67 _ = happyReduce_44++action_68 (61) = happyShift action_61+action_68 (19) = happyGoto action_94+action_68 _ = happyFail (happyExpListPerState 68)++action_69 (48) = happyShift action_32+action_69 (49) = happyShift action_33+action_69 (58) = happyShift action_34+action_69 (59) = happyShift action_35+action_69 (60) = happyShift action_36+action_69 (16) = happyGoto action_25+action_69 (17) = happyGoto action_26+action_69 (18) = happyGoto action_27+action_69 (29) = happyGoto action_93+action_69 _ = happyFail (happyExpListPerState 69)++action_70 (47) = happyShift action_92+action_70 _ = happyFail (happyExpListPerState 70)++action_71 (45) = happyShift action_49+action_71 (47) = happyShift action_50+action_71 (52) = happyShift action_51+action_71 (53) = happyShift action_52+action_71 (63) = happyShift action_53+action_71 (65) = happyShift action_54+action_71 (21) = happyGoto action_46+action_71 (23) = happyGoto action_47+action_71 (26) = happyGoto action_91+action_71 _ = happyFail (happyExpListPerState 71)++action_72 (57) = happyShift action_90+action_72 (15) = happyGoto action_89+action_72 _ = happyFail (happyExpListPerState 72)++action_73 (51) = happyShift action_88+action_73 (56) = happyShift action_12+action_73 (64) = happyShift action_62+action_73 (14) = happyGoto action_86+action_73 (22) = happyGoto action_87+action_73 _ = happyFail (happyExpListPerState 73)++action_74 (45) = happyShift action_49+action_74 (47) = happyShift action_50+action_74 (51) = happyShift action_85+action_74 (52) = happyShift action_51+action_74 (53) = happyShift action_52+action_74 (63) = happyShift action_53+action_74 (65) = happyShift action_54+action_74 (21) = happyGoto action_46+action_74 (23) = happyGoto action_47+action_74 (26) = happyGoto action_84+action_74 _ = happyFail (happyExpListPerState 74)++action_75 (44) = happyShift action_42+action_75 (46) = happyShift action_43+action_75 (48) = happyShift action_32+action_75 (49) = happyShift action_33+action_75 (58) = happyShift action_34+action_75 (59) = happyShift action_35+action_75 (60) = happyShift action_36+action_75 (62) = happyShift action_44+action_75 (16) = happyGoto action_25+action_75 (17) = happyGoto action_26+action_75 (18) = happyGoto action_27+action_75 (20) = happyGoto action_38+action_75 (27) = happyGoto action_39+action_75 (28) = happyGoto action_83+action_75 (29) = happyGoto action_41+action_75 _ = happyReduce_44++action_76 _ = happyReduce_55++action_77 (54) = happyShift action_82+action_77 _ = happyFail (happyExpListPerState 77)++action_78 _ = happyReduce_61++action_79 (36) = happyShift action_81+action_79 _ = happyFail (happyExpListPerState 79)++action_80 _ = happyReduce_63++action_81 _ = happyReduce_60++action_82 _ = happyReduce_56++action_83 _ = happyReduce_46++action_84 (35) = happyShift action_67+action_84 (37) = happyShift action_68+action_84 (39) = happyShift action_69+action_84 (40) = happyShift action_70+action_84 _ = happyReduce_37++action_85 _ = happyReduce_38++action_86 _ = happyReduce_39++action_87 _ = happyReduce_43++action_88 _ = happyReduce_40++action_89 _ = happyReduce_41++action_90 _ = happyReduce_12++action_91 (35) = happyShift action_67+action_91 (36) = happyShift action_101+action_91 (37) = happyShift action_68+action_91 (39) = happyShift action_69+action_91 (40) = happyShift action_70+action_91 _ = happyFail (happyExpListPerState 91)++action_92 (50) = happyShift action_100+action_92 _ = happyFail (happyExpListPerState 92)++action_93 _ = happyReduce_29++action_94 _ = happyReduce_35++action_95 (36) = happyShift action_99+action_95 _ = happyFail (happyExpListPerState 95)++action_96 _ = happyReduce_27++action_97 (54) = happyShift action_98+action_97 _ = happyFail (happyExpListPerState 97)++action_98 (43) = happyShift action_103+action_98 _ = happyFail (happyExpListPerState 98)++action_99 _ = happyReduce_28++action_100 (45) = happyShift action_49+action_100 (47) = happyShift action_50+action_100 (52) = happyShift action_51+action_100 (53) = happyShift action_52+action_100 (63) = happyShift action_53+action_100 (65) = happyShift action_54+action_100 (21) = happyGoto action_46+action_100 (23) = happyGoto action_47+action_100 (26) = happyGoto action_102+action_100 _ = happyFail (happyExpListPerState 100)++action_101 _ = happyReduce_36++action_102 (35) = happyShift action_67+action_102 (37) = happyShift action_68+action_102 (39) = happyShift action_69+action_102 (40) = happyShift action_70+action_102 (41) = happyShift action_104+action_102 _ = happyFail (happyExpListPerState 102)++action_103 _ = happyReduce_21++action_104 _ = happyReduce_33++happyReduce_11 = happySpecReduce_1 14 happyReduction_11+happyReduction_11 (HappyTerminal (PT _ (T_Bytes happy_var_1)))+ = HappyAbsSyn14+ (Language.EO.Phi.Syntax.Abs.Bytes happy_var_1+ )+happyReduction_11 _ = notHappyAtAll ++happyReduce_12 = happySpecReduce_1 15 happyReduction_12+happyReduction_12 (HappyTerminal (PT _ (T_Function happy_var_1)))+ = HappyAbsSyn15+ (Language.EO.Phi.Syntax.Abs.Function happy_var_1+ )+happyReduction_12 _ = notHappyAtAll ++happyReduce_13 = happySpecReduce_1 16 happyReduction_13+happyReduction_13 (HappyTerminal (PT _ (T_LabelId happy_var_1)))+ = HappyAbsSyn16+ (Language.EO.Phi.Syntax.Abs.LabelId happy_var_1+ )+happyReduction_13 _ = notHappyAtAll ++happyReduce_14 = happySpecReduce_1 17 happyReduction_14+happyReduction_14 (HappyTerminal (PT _ (T_AlphaIndex happy_var_1)))+ = HappyAbsSyn17+ (Language.EO.Phi.Syntax.Abs.AlphaIndex happy_var_1+ )+happyReduction_14 _ = notHappyAtAll ++happyReduce_15 = happySpecReduce_1 18 happyReduction_15+happyReduction_15 (HappyTerminal (PT _ (T_LabelMetaId happy_var_1)))+ = HappyAbsSyn18+ (Language.EO.Phi.Syntax.Abs.LabelMetaId happy_var_1+ )+happyReduction_15 _ = notHappyAtAll ++happyReduce_16 = happySpecReduce_1 19 happyReduction_16+happyReduction_16 (HappyTerminal (PT _ (T_TailMetaId happy_var_1)))+ = HappyAbsSyn19+ (Language.EO.Phi.Syntax.Abs.TailMetaId happy_var_1+ )+happyReduction_16 _ = notHappyAtAll ++happyReduce_17 = happySpecReduce_1 20 happyReduction_17+happyReduction_17 (HappyTerminal (PT _ (T_BindingsMetaId happy_var_1)))+ = HappyAbsSyn20+ (Language.EO.Phi.Syntax.Abs.BindingsMetaId happy_var_1+ )+happyReduction_17 _ = notHappyAtAll ++happyReduce_18 = happySpecReduce_1 21 happyReduction_18+happyReduction_18 (HappyTerminal (PT _ (T_ObjectMetaId happy_var_1)))+ = HappyAbsSyn21+ (Language.EO.Phi.Syntax.Abs.ObjectMetaId happy_var_1+ )+happyReduction_18 _ = notHappyAtAll ++happyReduce_19 = happySpecReduce_1 22 happyReduction_19+happyReduction_19 (HappyTerminal (PT _ (T_BytesMetaId happy_var_1)))+ = HappyAbsSyn22+ (Language.EO.Phi.Syntax.Abs.BytesMetaId happy_var_1+ )+happyReduction_19 _ = notHappyAtAll ++happyReduce_20 = happySpecReduce_1 23 happyReduction_20+happyReduction_20 (HappyTerminal (PT _ (T_MetaFunctionName happy_var_1)))+ = HappyAbsSyn23+ (Language.EO.Phi.Syntax.Abs.MetaFunctionName happy_var_1+ )+happyReduction_20 _ = notHappyAtAll ++happyReduce_21 = happyReduce 5 24 happyReduction_21+happyReduction_21 (_ `HappyStk`+ _ `HappyStk`+ (HappyAbsSyn28 happy_var_3) `HappyStk`+ _ `HappyStk`+ _ `HappyStk`+ happyRest)+ = HappyAbsSyn24+ (Language.EO.Phi.Syntax.Abs.Program happy_var_3+ ) `HappyStk` happyRest++happyReduce_22 = happySpecReduce_1 25 happyReduction_22+happyReduction_22 (HappyAbsSyn18 happy_var_1)+ = HappyAbsSyn25+ (Language.EO.Phi.Syntax.Abs.MetaIdLabel happy_var_1+ )+happyReduction_22 _ = notHappyAtAll ++happyReduce_23 = happySpecReduce_1 25 happyReduction_23+happyReduction_23 (HappyAbsSyn19 happy_var_1)+ = HappyAbsSyn25+ (Language.EO.Phi.Syntax.Abs.MetaIdTail happy_var_1+ )+happyReduction_23 _ = notHappyAtAll ++happyReduce_24 = happySpecReduce_1 25 happyReduction_24+happyReduction_24 (HappyAbsSyn20 happy_var_1)+ = HappyAbsSyn25+ (Language.EO.Phi.Syntax.Abs.MetaIdBindings happy_var_1+ )+happyReduction_24 _ = notHappyAtAll ++happyReduce_25 = happySpecReduce_1 25 happyReduction_25+happyReduction_25 (HappyAbsSyn21 happy_var_1)+ = HappyAbsSyn25+ (Language.EO.Phi.Syntax.Abs.MetaIdObject happy_var_1+ )+happyReduction_25 _ = notHappyAtAll ++happyReduce_26 = happySpecReduce_1 25 happyReduction_26+happyReduction_26 (HappyAbsSyn22 happy_var_1)+ = HappyAbsSyn25+ (Language.EO.Phi.Syntax.Abs.MetaIdBytes happy_var_1+ )+happyReduction_26 _ = notHappyAtAll ++happyReduce_27 = happySpecReduce_3 26 happyReduction_27+happyReduction_27 _+ (HappyAbsSyn28 happy_var_2)+ _+ = HappyAbsSyn26+ (Language.EO.Phi.Syntax.Abs.Formation happy_var_2+ )+happyReduction_27 _ _ _ = notHappyAtAll ++happyReduce_28 = happyReduce 4 26 happyReduction_28+happyReduction_28 (_ `HappyStk`+ (HappyAbsSyn28 happy_var_3) `HappyStk`+ _ `HappyStk`+ (HappyAbsSyn26 happy_var_1) `HappyStk`+ happyRest)+ = HappyAbsSyn26+ (Language.EO.Phi.Syntax.Abs.Application happy_var_1 happy_var_3+ ) `HappyStk` happyRest++happyReduce_29 = happySpecReduce_3 26 happyReduction_29+happyReduction_29 (HappyAbsSyn29 happy_var_3)+ _+ (HappyAbsSyn26 happy_var_1)+ = HappyAbsSyn26+ (Language.EO.Phi.Syntax.Abs.ObjectDispatch happy_var_1 happy_var_3+ )+happyReduction_29 _ _ _ = notHappyAtAll ++happyReduce_30 = happySpecReduce_1 26 happyReduction_30+happyReduction_30 _+ = HappyAbsSyn26+ (Language.EO.Phi.Syntax.Abs.GlobalObject+ )++happyReduce_31 = happySpecReduce_1 26 happyReduction_31+happyReduction_31 _+ = HappyAbsSyn26+ (Language.EO.Phi.Syntax.Abs.ThisObject+ )++happyReduce_32 = happySpecReduce_1 26 happyReduction_32+happyReduction_32 _+ = HappyAbsSyn26+ (Language.EO.Phi.Syntax.Abs.Termination+ )++happyReduce_33 = happyReduce 6 26 happyReduction_33+happyReduction_33 (_ `HappyStk`+ (HappyAbsSyn26 happy_var_5) `HappyStk`+ _ `HappyStk`+ _ `HappyStk`+ _ `HappyStk`+ (HappyAbsSyn26 happy_var_1) `HappyStk`+ happyRest)+ = HappyAbsSyn26+ (Language.EO.Phi.Syntax.Abs.MetaSubstThis happy_var_1 happy_var_5+ ) `HappyStk` happyRest++happyReduce_34 = happySpecReduce_1 26 happyReduction_34+happyReduction_34 (HappyAbsSyn21 happy_var_1)+ = HappyAbsSyn26+ (Language.EO.Phi.Syntax.Abs.MetaObject happy_var_1+ )+happyReduction_34 _ = notHappyAtAll ++happyReduce_35 = happySpecReduce_3 26 happyReduction_35+happyReduction_35 (HappyAbsSyn19 happy_var_3)+ _+ (HappyAbsSyn26 happy_var_1)+ = HappyAbsSyn26+ (Language.EO.Phi.Syntax.Abs.MetaTailContext happy_var_1 happy_var_3+ )+happyReduction_35 _ _ _ = notHappyAtAll ++happyReduce_36 = happyReduce 4 26 happyReduction_36+happyReduction_36 (_ `HappyStk`+ (HappyAbsSyn26 happy_var_3) `HappyStk`+ _ `HappyStk`+ (HappyAbsSyn23 happy_var_1) `HappyStk`+ happyRest)+ = HappyAbsSyn26+ (Language.EO.Phi.Syntax.Abs.MetaFunction happy_var_1 happy_var_3+ ) `HappyStk` happyRest++happyReduce_37 = happySpecReduce_3 27 happyReduction_37+happyReduction_37 (HappyAbsSyn26 happy_var_3)+ _+ (HappyAbsSyn29 happy_var_1)+ = HappyAbsSyn27+ (Language.EO.Phi.Syntax.Abs.AlphaBinding happy_var_1 happy_var_3+ )+happyReduction_37 _ _ _ = notHappyAtAll ++happyReduce_38 = happySpecReduce_3 27 happyReduction_38+happyReduction_38 _+ _+ (HappyAbsSyn29 happy_var_1)+ = HappyAbsSyn27+ (Language.EO.Phi.Syntax.Abs.EmptyBinding happy_var_1+ )+happyReduction_38 _ _ _ = notHappyAtAll ++happyReduce_39 = happySpecReduce_3 27 happyReduction_39+happyReduction_39 (HappyAbsSyn14 happy_var_3)+ _+ _+ = HappyAbsSyn27+ (Language.EO.Phi.Syntax.Abs.DeltaBinding happy_var_3+ )+happyReduction_39 _ _ _ = notHappyAtAll ++happyReduce_40 = happySpecReduce_3 27 happyReduction_40+happyReduction_40 _+ _+ _+ = HappyAbsSyn27+ (Language.EO.Phi.Syntax.Abs.DeltaEmptyBinding+ )++happyReduce_41 = happySpecReduce_3 27 happyReduction_41+happyReduction_41 (HappyAbsSyn15 happy_var_3)+ _+ _+ = HappyAbsSyn27+ (Language.EO.Phi.Syntax.Abs.LambdaBinding happy_var_3+ )+happyReduction_41 _ _ _ = notHappyAtAll ++happyReduce_42 = happySpecReduce_1 27 happyReduction_42+happyReduction_42 (HappyAbsSyn20 happy_var_1)+ = HappyAbsSyn27+ (Language.EO.Phi.Syntax.Abs.MetaBindings happy_var_1+ )+happyReduction_42 _ = notHappyAtAll ++happyReduce_43 = happySpecReduce_3 27 happyReduction_43+happyReduction_43 (HappyAbsSyn22 happy_var_3)+ _+ _+ = HappyAbsSyn27+ (Language.EO.Phi.Syntax.Abs.MetaDeltaBinding happy_var_3+ )+happyReduction_43 _ _ _ = notHappyAtAll ++happyReduce_44 = happySpecReduce_0 28 happyReduction_44+happyReduction_44 = HappyAbsSyn28+ ([]+ )++happyReduce_45 = happySpecReduce_1 28 happyReduction_45+happyReduction_45 (HappyAbsSyn27 happy_var_1)+ = HappyAbsSyn28+ ((:[]) happy_var_1+ )+happyReduction_45 _ = notHappyAtAll ++happyReduce_46 = happySpecReduce_3 28 happyReduction_46+happyReduction_46 (HappyAbsSyn28 happy_var_3)+ _+ (HappyAbsSyn27 happy_var_1)+ = HappyAbsSyn28+ ((:) happy_var_1 happy_var_3+ )+happyReduction_46 _ _ _ = notHappyAtAll ++happyReduce_47 = happySpecReduce_1 29 happyReduction_47+happyReduction_47 _+ = HappyAbsSyn29+ (Language.EO.Phi.Syntax.Abs.Phi+ )++happyReduce_48 = happySpecReduce_1 29 happyReduction_48+happyReduction_48 _+ = HappyAbsSyn29+ (Language.EO.Phi.Syntax.Abs.Rho+ )++happyReduce_49 = happySpecReduce_1 29 happyReduction_49+happyReduction_49 (HappyAbsSyn16 happy_var_1)+ = HappyAbsSyn29+ (Language.EO.Phi.Syntax.Abs.Label happy_var_1+ )+happyReduction_49 _ = notHappyAtAll ++happyReduce_50 = happySpecReduce_1 29 happyReduction_50+happyReduction_50 (HappyAbsSyn17 happy_var_1)+ = HappyAbsSyn29+ (Language.EO.Phi.Syntax.Abs.Alpha happy_var_1+ )+happyReduction_50 _ = notHappyAtAll ++happyReduce_51 = happySpecReduce_1 29 happyReduction_51+happyReduction_51 (HappyAbsSyn18 happy_var_1)+ = HappyAbsSyn29+ (Language.EO.Phi.Syntax.Abs.MetaAttr happy_var_1+ )+happyReduction_51 _ = notHappyAtAll ++happyReduce_52 = happySpecReduce_1 30 happyReduction_52+happyReduction_52 (HappyAbsSyn29 happy_var_1)+ = HappyAbsSyn30+ (Language.EO.Phi.Syntax.Abs.ObjectAttr happy_var_1+ )+happyReduction_52 _ = notHappyAtAll ++happyReduce_53 = happySpecReduce_1 30 happyReduction_53+happyReduction_53 _+ = HappyAbsSyn30+ (Language.EO.Phi.Syntax.Abs.DeltaAttr+ )++happyReduce_54 = happySpecReduce_1 30 happyReduction_54+happyReduction_54 _+ = HappyAbsSyn30+ (Language.EO.Phi.Syntax.Abs.LambdaAttr+ )++happyReduce_55 = happySpecReduce_2 31 happyReduction_55+happyReduction_55 (HappyAbsSyn34 happy_var_2)+ (HappyAbsSyn32 happy_var_1)+ = HappyAbsSyn31+ (Language.EO.Phi.Syntax.Abs.PeeledObject happy_var_1 happy_var_2+ )+happyReduction_55 _ _ = notHappyAtAll ++happyReduce_56 = happySpecReduce_3 32 happyReduction_56+happyReduction_56 _+ (HappyAbsSyn28 happy_var_2)+ _+ = HappyAbsSyn32+ (Language.EO.Phi.Syntax.Abs.HeadFormation happy_var_2+ )+happyReduction_56 _ _ _ = notHappyAtAll ++happyReduce_57 = happySpecReduce_1 32 happyReduction_57+happyReduction_57 _+ = HappyAbsSyn32+ (Language.EO.Phi.Syntax.Abs.HeadGlobal+ )++happyReduce_58 = happySpecReduce_1 32 happyReduction_58+happyReduction_58 _+ = HappyAbsSyn32+ (Language.EO.Phi.Syntax.Abs.HeadThis+ )++happyReduce_59 = happySpecReduce_1 32 happyReduction_59+happyReduction_59 _+ = HappyAbsSyn32+ (Language.EO.Phi.Syntax.Abs.HeadTermination+ )++happyReduce_60 = happySpecReduce_3 33 happyReduction_60+happyReduction_60 _+ (HappyAbsSyn28 happy_var_2)+ _+ = HappyAbsSyn33+ (Language.EO.Phi.Syntax.Abs.ActionApplication happy_var_2+ )+happyReduction_60 _ _ _ = notHappyAtAll ++happyReduce_61 = happySpecReduce_2 33 happyReduction_61+happyReduction_61 (HappyAbsSyn29 happy_var_2)+ _+ = HappyAbsSyn33+ (Language.EO.Phi.Syntax.Abs.ActionDispatch happy_var_2+ )+happyReduction_61 _ _ = notHappyAtAll ++happyReduce_62 = happySpecReduce_0 34 happyReduction_62+happyReduction_62 = HappyAbsSyn34+ ([]+ )++happyReduce_63 = happySpecReduce_2 34 happyReduction_63+happyReduction_63 (HappyAbsSyn34 happy_var_2)+ (HappyAbsSyn33 happy_var_1)+ = HappyAbsSyn34+ ((:) happy_var_1 happy_var_2+ )+happyReduction_63 _ _ = notHappyAtAll ++happyNewToken action sts stk [] =+ action 66 66 notHappyAtAll (HappyState action) sts stk []++happyNewToken action sts stk (tk:tks) =+ let cont i = action i i tk (HappyState action) sts stk tks in+ case tk of {+ PT _ (TS _ 1) -> cont 35;+ PT _ (TS _ 2) -> cont 36;+ PT _ (TS _ 3) -> cont 37;+ PT _ (TS _ 4) -> cont 38;+ PT _ (TS _ 5) -> cont 39;+ PT _ (TS _ 6) -> cont 40;+ PT _ (TS _ 7) -> cont 41;+ PT _ (TS _ 8) -> cont 42;+ PT _ (TS _ 9) -> cont 43;+ PT _ (TS _ 10) -> cont 44;+ PT _ (TS _ 11) -> cont 45;+ PT _ (TS _ 12) -> cont 46;+ PT _ (TS _ 13) -> cont 47;+ PT _ (TS _ 14) -> cont 48;+ PT _ (TS _ 15) -> cont 49;+ PT _ (TS _ 16) -> cont 50;+ PT _ (TS _ 17) -> cont 51;+ PT _ (TS _ 18) -> cont 52;+ PT _ (TS _ 19) -> cont 53;+ PT _ (TS _ 20) -> cont 54;+ PT _ (TS _ 21) -> cont 55;+ PT _ (T_Bytes happy_dollar_dollar) -> cont 56;+ PT _ (T_Function happy_dollar_dollar) -> cont 57;+ PT _ (T_LabelId happy_dollar_dollar) -> cont 58;+ PT _ (T_AlphaIndex happy_dollar_dollar) -> cont 59;+ PT _ (T_LabelMetaId happy_dollar_dollar) -> cont 60;+ PT _ (T_TailMetaId happy_dollar_dollar) -> cont 61;+ PT _ (T_BindingsMetaId happy_dollar_dollar) -> cont 62;+ PT _ (T_ObjectMetaId happy_dollar_dollar) -> cont 63;+ PT _ (T_BytesMetaId happy_dollar_dollar) -> cont 64;+ PT _ (T_MetaFunctionName happy_dollar_dollar) -> cont 65;+ _ -> happyError' ((tk:tks), [])+ }++happyError_ explist 66 tk tks = happyError' (tks, explist)+happyError_ explist _ tk tks = happyError' ((tk:tks), explist)++happyThen :: () => Err a -> (a -> Err b) -> Err b+happyThen = ((>>=))+happyReturn :: () => a -> Err a+happyReturn = (return)+happyThen1 m k tks = ((>>=)) m (\a -> k a tks)+happyReturn1 :: () => a -> b -> Err a+happyReturn1 = \a tks -> (return) a+happyError' :: () => ([(Token)], [Prelude.String]) -> Err a+happyError' = (\(tokens, _) -> happyError tokens)+pProgram tks = happySomeParser where+ happySomeParser = happyThen (happyParse action_0 tks) (\x -> case x of {HappyAbsSyn24 z -> happyReturn z; _other -> notHappyAtAll })++pMetaId tks = happySomeParser where+ happySomeParser = happyThen (happyParse action_1 tks) (\x -> case x of {HappyAbsSyn25 z -> happyReturn z; _other -> notHappyAtAll })++pObject tks = happySomeParser where+ happySomeParser = happyThen (happyParse action_2 tks) (\x -> case x of {HappyAbsSyn26 z -> happyReturn z; _other -> notHappyAtAll })++pBinding tks = happySomeParser where+ happySomeParser = happyThen (happyParse action_3 tks) (\x -> case x of {HappyAbsSyn27 z -> happyReturn z; _other -> notHappyAtAll })++pListBinding tks = happySomeParser where+ happySomeParser = happyThen (happyParse action_4 tks) (\x -> case x of {HappyAbsSyn28 z -> happyReturn z; _other -> notHappyAtAll })++pAttribute tks = happySomeParser where+ happySomeParser = happyThen (happyParse action_5 tks) (\x -> case x of {HappyAbsSyn29 z -> happyReturn z; _other -> notHappyAtAll })++pRuleAttribute tks = happySomeParser where+ happySomeParser = happyThen (happyParse action_6 tks) (\x -> case x of {HappyAbsSyn30 z -> happyReturn z; _other -> notHappyAtAll })++pPeeledObject tks = happySomeParser where+ happySomeParser = happyThen (happyParse action_7 tks) (\x -> case x of {HappyAbsSyn31 z -> happyReturn z; _other -> notHappyAtAll })++pObjectHead tks = happySomeParser where+ happySomeParser = happyThen (happyParse action_8 tks) (\x -> case x of {HappyAbsSyn32 z -> happyReturn z; _other -> notHappyAtAll })++pObjectAction tks = happySomeParser where+ happySomeParser = happyThen (happyParse action_9 tks) (\x -> case x of {HappyAbsSyn33 z -> happyReturn z; _other -> notHappyAtAll })++pListObjectAction tks = happySomeParser where+ happySomeParser = happyThen (happyParse action_10 tks) (\x -> case x of {HappyAbsSyn34 z -> happyReturn z; _other -> notHappyAtAll }) happySeq = happyDontSeq
src/Language/EO/Phi/Syntax/Par.y view
@@ -9,6 +9,7 @@ ( happyError , myLexer , pProgram+ , pMetaId , pObject , pBinding , pListBinding@@ -28,6 +29,7 @@ } %name pProgram Program+%name pMetaId MetaId %name pObject Object %name pBinding Binding %name pListBinding ListBinding@@ -43,29 +45,34 @@ %token '(' { PT _ (TS _ 1) } ')' { PT _ (TS _ 2) }- ',' { PT _ (TS _ 3) }- '.' { PT _ (TS _ 4) }- '[' { PT _ (TS _ 5) }- ']' { PT _ (TS _ 6) }- '{' { PT _ (TS _ 7) }- '}' { PT _ (TS _ 8) }- 'Δ' { PT _ (TS _ 9) }- 'Φ' { PT _ (TS _ 10) }- 'λ' { PT _ (TS _ 11) }- 'ξ' { PT _ (TS _ 12) }- 'ρ' { PT _ (TS _ 13) }- 'φ' { PT _ (TS _ 14) }- '↦' { PT _ (TS _ 15) }- '∅' { PT _ (TS _ 16) }- '⊥' { PT _ (TS _ 17) }- '⟦' { PT _ (TS _ 18) }- '⟧' { PT _ (TS _ 19) }- '⤍' { PT _ (TS _ 20) }+ '*' { PT _ (TS _ 3) }+ ',' { PT _ (TS _ 4) }+ '.' { PT _ (TS _ 5) }+ '[' { PT _ (TS _ 6) }+ ']' { PT _ (TS _ 7) }+ '{' { PT _ (TS _ 8) }+ '}' { PT _ (TS _ 9) }+ 'Δ' { PT _ (TS _ 10) }+ 'Φ' { PT _ (TS _ 11) }+ 'λ' { PT _ (TS _ 12) }+ 'ξ' { PT _ (TS _ 13) }+ 'ρ' { PT _ (TS _ 14) }+ 'φ' { PT _ (TS _ 15) }+ '↦' { PT _ (TS _ 16) }+ '∅' { PT _ (TS _ 17) }+ '⊥' { PT _ (TS _ 18) }+ '⟦' { PT _ (TS _ 19) }+ '⟧' { PT _ (TS _ 20) }+ '⤍' { PT _ (TS _ 21) } L_Bytes { PT _ (T_Bytes $$) } L_Function { PT _ (T_Function $$) } L_LabelId { PT _ (T_LabelId $$) } L_AlphaIndex { PT _ (T_AlphaIndex $$) }- L_MetaId { PT _ (T_MetaId $$) }+ L_LabelMetaId { PT _ (T_LabelMetaId $$) }+ L_TailMetaId { PT _ (T_TailMetaId $$) }+ L_BindingsMetaId { PT _ (T_BindingsMetaId $$) }+ L_ObjectMetaId { PT _ (T_ObjectMetaId $$) }+ L_BytesMetaId { PT _ (T_BytesMetaId $$) } L_MetaFunctionName { PT _ (T_MetaFunctionName $$) } %%@@ -82,9 +89,21 @@ AlphaIndex :: { Language.EO.Phi.Syntax.Abs.AlphaIndex } AlphaIndex : L_AlphaIndex { Language.EO.Phi.Syntax.Abs.AlphaIndex $1 } -MetaId :: { Language.EO.Phi.Syntax.Abs.MetaId }-MetaId : L_MetaId { Language.EO.Phi.Syntax.Abs.MetaId $1 }+LabelMetaId :: { Language.EO.Phi.Syntax.Abs.LabelMetaId }+LabelMetaId : L_LabelMetaId { Language.EO.Phi.Syntax.Abs.LabelMetaId $1 } +TailMetaId :: { Language.EO.Phi.Syntax.Abs.TailMetaId }+TailMetaId : L_TailMetaId { Language.EO.Phi.Syntax.Abs.TailMetaId $1 }++BindingsMetaId :: { Language.EO.Phi.Syntax.Abs.BindingsMetaId }+BindingsMetaId : L_BindingsMetaId { Language.EO.Phi.Syntax.Abs.BindingsMetaId $1 }++ObjectMetaId :: { Language.EO.Phi.Syntax.Abs.ObjectMetaId }+ObjectMetaId : L_ObjectMetaId { Language.EO.Phi.Syntax.Abs.ObjectMetaId $1 }++BytesMetaId :: { Language.EO.Phi.Syntax.Abs.BytesMetaId }+BytesMetaId : L_BytesMetaId { Language.EO.Phi.Syntax.Abs.BytesMetaId $1 }+ MetaFunctionName :: { Language.EO.Phi.Syntax.Abs.MetaFunctionName } MetaFunctionName : L_MetaFunctionName { Language.EO.Phi.Syntax.Abs.MetaFunctionName $1 } @@ -92,6 +111,14 @@ Program : '{' '⟦' ListBinding '⟧' '}' { Language.EO.Phi.Syntax.Abs.Program $3 } +MetaId :: { Language.EO.Phi.Syntax.Abs.MetaId }+MetaId+ : LabelMetaId { Language.EO.Phi.Syntax.Abs.MetaIdLabel $1 }+ | TailMetaId { Language.EO.Phi.Syntax.Abs.MetaIdTail $1 }+ | BindingsMetaId { Language.EO.Phi.Syntax.Abs.MetaIdBindings $1 }+ | ObjectMetaId { Language.EO.Phi.Syntax.Abs.MetaIdObject $1 }+ | BytesMetaId { Language.EO.Phi.Syntax.Abs.MetaIdBytes $1 }+ Object :: { Language.EO.Phi.Syntax.Abs.Object } Object : '⟦' ListBinding '⟧' { Language.EO.Phi.Syntax.Abs.Formation $2 }@@ -101,7 +128,8 @@ | 'ξ' { Language.EO.Phi.Syntax.Abs.ThisObject } | '⊥' { Language.EO.Phi.Syntax.Abs.Termination } | Object '[' 'ξ' '↦' Object ']' { Language.EO.Phi.Syntax.Abs.MetaSubstThis $1 $5 }- | MetaId { Language.EO.Phi.Syntax.Abs.MetaObject $1 }+ | ObjectMetaId { Language.EO.Phi.Syntax.Abs.MetaObject $1 }+ | Object '*' TailMetaId { Language.EO.Phi.Syntax.Abs.MetaTailContext $1 $3 } | MetaFunctionName '(' Object ')' { Language.EO.Phi.Syntax.Abs.MetaFunction $1 $3 } Binding :: { Language.EO.Phi.Syntax.Abs.Binding }@@ -111,8 +139,8 @@ | 'Δ' '⤍' Bytes { Language.EO.Phi.Syntax.Abs.DeltaBinding $3 } | 'Δ' '⤍' '∅' { Language.EO.Phi.Syntax.Abs.DeltaEmptyBinding } | 'λ' '⤍' Function { Language.EO.Phi.Syntax.Abs.LambdaBinding $3 }- | MetaId { Language.EO.Phi.Syntax.Abs.MetaBindings $1 }- | 'Δ' '⤍' MetaId { Language.EO.Phi.Syntax.Abs.MetaDeltaBinding $3 }+ | BindingsMetaId { Language.EO.Phi.Syntax.Abs.MetaBindings $1 }+ | 'Δ' '⤍' BytesMetaId { Language.EO.Phi.Syntax.Abs.MetaDeltaBinding $3 } ListBinding :: { [Language.EO.Phi.Syntax.Abs.Binding] } ListBinding@@ -126,7 +154,7 @@ | 'ρ' { Language.EO.Phi.Syntax.Abs.Rho } | LabelId { Language.EO.Phi.Syntax.Abs.Label $1 } | AlphaIndex { Language.EO.Phi.Syntax.Abs.Alpha $1 }- | MetaId { Language.EO.Phi.Syntax.Abs.MetaAttr $1 }+ | LabelMetaId { Language.EO.Phi.Syntax.Abs.MetaAttr $1 } RuleAttribute :: { Language.EO.Phi.Syntax.Abs.RuleAttribute } RuleAttribute
src/Language/EO/Phi/Syntax/Print.hs view
@@ -145,14 +145,30 @@ prt _ (Language.EO.Phi.Syntax.Abs.LabelId i) = doc $ showString i instance Print Language.EO.Phi.Syntax.Abs.AlphaIndex where prt _ (Language.EO.Phi.Syntax.Abs.AlphaIndex i) = doc $ showString i-instance Print Language.EO.Phi.Syntax.Abs.MetaId where- prt _ (Language.EO.Phi.Syntax.Abs.MetaId i) = doc $ showString i+instance Print Language.EO.Phi.Syntax.Abs.LabelMetaId where+ prt _ (Language.EO.Phi.Syntax.Abs.LabelMetaId i) = doc $ showString i+instance Print Language.EO.Phi.Syntax.Abs.TailMetaId where+ prt _ (Language.EO.Phi.Syntax.Abs.TailMetaId i) = doc $ showString i+instance Print Language.EO.Phi.Syntax.Abs.BindingsMetaId where+ prt _ (Language.EO.Phi.Syntax.Abs.BindingsMetaId i) = doc $ showString i+instance Print Language.EO.Phi.Syntax.Abs.ObjectMetaId where+ prt _ (Language.EO.Phi.Syntax.Abs.ObjectMetaId i) = doc $ showString i+instance Print Language.EO.Phi.Syntax.Abs.BytesMetaId where+ prt _ (Language.EO.Phi.Syntax.Abs.BytesMetaId i) = doc $ showString i instance Print Language.EO.Phi.Syntax.Abs.MetaFunctionName where prt _ (Language.EO.Phi.Syntax.Abs.MetaFunctionName i) = doc $ showString i instance Print Language.EO.Phi.Syntax.Abs.Program where prt i = \case Language.EO.Phi.Syntax.Abs.Program bindings -> prPrec i 0 (concatD [doc (showString "{"), doc (showString "\10214"), prt 0 bindings, doc (showString "\10215"), doc (showString "}")]) +instance Print Language.EO.Phi.Syntax.Abs.MetaId where+ prt i = \case+ Language.EO.Phi.Syntax.Abs.MetaIdLabel labelmetaid -> prPrec i 0 (concatD [prt 0 labelmetaid])+ Language.EO.Phi.Syntax.Abs.MetaIdTail tailmetaid -> prPrec i 0 (concatD [prt 0 tailmetaid])+ Language.EO.Phi.Syntax.Abs.MetaIdBindings bindingsmetaid -> prPrec i 0 (concatD [prt 0 bindingsmetaid])+ Language.EO.Phi.Syntax.Abs.MetaIdObject objectmetaid -> prPrec i 0 (concatD [prt 0 objectmetaid])+ Language.EO.Phi.Syntax.Abs.MetaIdBytes bytesmetaid -> prPrec i 0 (concatD [prt 0 bytesmetaid])+ instance Print Language.EO.Phi.Syntax.Abs.Object where prt i = \case Language.EO.Phi.Syntax.Abs.Formation bindings -> prPrec i 0 (concatD [doc (showString "\10214"), prt 0 bindings, doc (showString "\10215")])@@ -162,7 +178,8 @@ Language.EO.Phi.Syntax.Abs.ThisObject -> prPrec i 0 (concatD [doc (showString "\958")]) Language.EO.Phi.Syntax.Abs.Termination -> prPrec i 0 (concatD [doc (showString "\8869")]) Language.EO.Phi.Syntax.Abs.MetaSubstThis object1 object2 -> prPrec i 0 (concatD [prt 0 object1, doc (showString "["), doc (showString "\958"), doc (showString "\8614"), prt 0 object2, doc (showString "]")])- Language.EO.Phi.Syntax.Abs.MetaObject metaid -> prPrec i 0 (concatD [prt 0 metaid])+ Language.EO.Phi.Syntax.Abs.MetaObject objectmetaid -> prPrec i 0 (concatD [prt 0 objectmetaid])+ Language.EO.Phi.Syntax.Abs.MetaTailContext object tailmetaid -> prPrec i 0 (concatD [prt 0 object, doc (showString "*"), prt 0 tailmetaid]) Language.EO.Phi.Syntax.Abs.MetaFunction metafunctionname object -> prPrec i 0 (concatD [prt 0 metafunctionname, doc (showString "("), prt 0 object, doc (showString ")")]) instance Print Language.EO.Phi.Syntax.Abs.Binding where@@ -172,8 +189,8 @@ Language.EO.Phi.Syntax.Abs.DeltaBinding bytes -> prPrec i 0 (concatD [doc (showString "\916"), doc (showString "\10509"), prt 0 bytes]) Language.EO.Phi.Syntax.Abs.DeltaEmptyBinding -> prPrec i 0 (concatD [doc (showString "\916"), doc (showString "\10509"), doc (showString "\8709")]) Language.EO.Phi.Syntax.Abs.LambdaBinding function -> prPrec i 0 (concatD [doc (showString "\955"), doc (showString "\10509"), prt 0 function])- Language.EO.Phi.Syntax.Abs.MetaBindings metaid -> prPrec i 0 (concatD [prt 0 metaid])- Language.EO.Phi.Syntax.Abs.MetaDeltaBinding metaid -> prPrec i 0 (concatD [doc (showString "\916"), doc (showString "\10509"), prt 0 metaid])+ Language.EO.Phi.Syntax.Abs.MetaBindings bindingsmetaid -> prPrec i 0 (concatD [prt 0 bindingsmetaid])+ Language.EO.Phi.Syntax.Abs.MetaDeltaBinding bytesmetaid -> prPrec i 0 (concatD [doc (showString "\916"), doc (showString "\10509"), prt 0 bytesmetaid]) instance Print [Language.EO.Phi.Syntax.Abs.Binding] where prt _ [] = concatD []@@ -186,7 +203,7 @@ Language.EO.Phi.Syntax.Abs.Rho -> prPrec i 0 (concatD [doc (showString "\961")]) Language.EO.Phi.Syntax.Abs.Label labelid -> prPrec i 0 (concatD [prt 0 labelid]) Language.EO.Phi.Syntax.Abs.Alpha alphaindex -> prPrec i 0 (concatD [prt 0 alphaindex])- Language.EO.Phi.Syntax.Abs.MetaAttr metaid -> prPrec i 0 (concatD [prt 0 metaid])+ Language.EO.Phi.Syntax.Abs.MetaAttr labelmetaid -> prPrec i 0 (concatD [prt 0 labelmetaid]) instance Print Language.EO.Phi.Syntax.Abs.RuleAttribute where prt i = \case
src/Language/EO/Phi/Syntax/Skel.hs view
@@ -31,10 +31,26 @@ transAlphaIndex x = case x of Language.EO.Phi.Syntax.Abs.AlphaIndex string -> failure x -transMetaId :: Language.EO.Phi.Syntax.Abs.MetaId -> Result-transMetaId x = case x of- Language.EO.Phi.Syntax.Abs.MetaId string -> failure x+transLabelMetaId :: Language.EO.Phi.Syntax.Abs.LabelMetaId -> Result+transLabelMetaId x = case x of+ Language.EO.Phi.Syntax.Abs.LabelMetaId string -> failure x +transTailMetaId :: Language.EO.Phi.Syntax.Abs.TailMetaId -> Result+transTailMetaId x = case x of+ Language.EO.Phi.Syntax.Abs.TailMetaId string -> failure x++transBindingsMetaId :: Language.EO.Phi.Syntax.Abs.BindingsMetaId -> Result+transBindingsMetaId x = case x of+ Language.EO.Phi.Syntax.Abs.BindingsMetaId string -> failure x++transObjectMetaId :: Language.EO.Phi.Syntax.Abs.ObjectMetaId -> Result+transObjectMetaId x = case x of+ Language.EO.Phi.Syntax.Abs.ObjectMetaId string -> failure x++transBytesMetaId :: Language.EO.Phi.Syntax.Abs.BytesMetaId -> Result+transBytesMetaId x = case x of+ Language.EO.Phi.Syntax.Abs.BytesMetaId string -> failure x+ transMetaFunctionName :: Language.EO.Phi.Syntax.Abs.MetaFunctionName -> Result transMetaFunctionName x = case x of Language.EO.Phi.Syntax.Abs.MetaFunctionName string -> failure x@@ -43,6 +59,14 @@ transProgram x = case x of Language.EO.Phi.Syntax.Abs.Program bindings -> failure x +transMetaId :: Language.EO.Phi.Syntax.Abs.MetaId -> Result+transMetaId x = case x of+ Language.EO.Phi.Syntax.Abs.MetaIdLabel labelmetaid -> failure x+ Language.EO.Phi.Syntax.Abs.MetaIdTail tailmetaid -> failure x+ Language.EO.Phi.Syntax.Abs.MetaIdBindings bindingsmetaid -> failure x+ Language.EO.Phi.Syntax.Abs.MetaIdObject objectmetaid -> failure x+ Language.EO.Phi.Syntax.Abs.MetaIdBytes bytesmetaid -> failure x+ transObject :: Language.EO.Phi.Syntax.Abs.Object -> Result transObject x = case x of Language.EO.Phi.Syntax.Abs.Formation bindings -> failure x@@ -52,7 +76,8 @@ Language.EO.Phi.Syntax.Abs.ThisObject -> failure x Language.EO.Phi.Syntax.Abs.Termination -> failure x Language.EO.Phi.Syntax.Abs.MetaSubstThis object1 object2 -> failure x- Language.EO.Phi.Syntax.Abs.MetaObject metaid -> failure x+ Language.EO.Phi.Syntax.Abs.MetaObject objectmetaid -> failure x+ Language.EO.Phi.Syntax.Abs.MetaTailContext object tailmetaid -> failure x Language.EO.Phi.Syntax.Abs.MetaFunction metafunctionname object -> failure x transBinding :: Language.EO.Phi.Syntax.Abs.Binding -> Result@@ -62,8 +87,8 @@ Language.EO.Phi.Syntax.Abs.DeltaBinding bytes -> failure x Language.EO.Phi.Syntax.Abs.DeltaEmptyBinding -> failure x Language.EO.Phi.Syntax.Abs.LambdaBinding function -> failure x- Language.EO.Phi.Syntax.Abs.MetaBindings metaid -> failure x- Language.EO.Phi.Syntax.Abs.MetaDeltaBinding metaid -> failure x+ Language.EO.Phi.Syntax.Abs.MetaBindings bindingsmetaid -> failure x+ Language.EO.Phi.Syntax.Abs.MetaDeltaBinding bytesmetaid -> failure x transAttribute :: Language.EO.Phi.Syntax.Abs.Attribute -> Result transAttribute x = case x of@@ -71,7 +96,7 @@ Language.EO.Phi.Syntax.Abs.Rho -> failure x Language.EO.Phi.Syntax.Abs.Label labelid -> failure x Language.EO.Phi.Syntax.Abs.Alpha alphaindex -> failure x- Language.EO.Phi.Syntax.Abs.MetaAttr metaid -> failure x+ Language.EO.Phi.Syntax.Abs.MetaAttr labelmetaid -> failure x transRuleAttribute :: Language.EO.Phi.Syntax.Abs.RuleAttribute -> Result transRuleAttribute x = case x of
src/Language/EO/Phi/TH.hs view
@@ -6,7 +6,7 @@ import Language.Haskell.TH (Dec, Name, Q) defaultOptions' :: Options-defaultOptions' = defaultOptions{fieldLabelModifier = camelTo2 '-'}+defaultOptions' = defaultOptions{fieldLabelModifier = camelTo2 '-', rejectUnknownFields = True} deriveJSON :: Name -> Q [Dec] deriveJSON = TH.deriveJSON defaultOptions'
src/Language/EO/Phi/ToLaTeX.hs view
@@ -53,6 +53,7 @@ toLatex ThisObject = "$" toLatex Termination = "\\dead" toLatex (MetaObject _) = error "rendering MetaObject in LaTex format"+ toLatex MetaTailContext{} = error "rendering MetaTailContext in LaTex format" toLatex (MetaFunction _ _) = error "rendering MetaFunction in LaTex format" toLatex (MetaSubstThis _ _) = error "rendering MetaSubstThis in LaTex format"
test/Language/EO/Phi/DataizeSpec.hs view
@@ -9,9 +9,9 @@ import Language.EO.Phi (printTree) import Language.EO.Phi qualified as Phi-import Language.EO.Phi.Dataize (dataizeRecursively)+import Language.EO.Phi.Dataize (dataizeRecursively, defaultContext) import Language.EO.Phi.Dependencies (deepMergePrograms)-import Language.EO.Phi.Rules.Common (defaultContext, equalObject)+import Language.EO.Phi.Rules.Common (equalObject) import Language.EO.Phi.Rules.Yaml (convertRuleNamed, parseRuleSetFromFile, rules) import Test.EO.Phi (DataizationResult (Bytes, Object), DataizeTest (..), DataizeTestGroup (..), dataizationTests)
test/Language/EO/PhiSpec.hs view
@@ -15,9 +15,10 @@ import Data.String (IsString (..)) import Data.Yaml (decodeFileThrow) import Language.EO.Phi+import Language.EO.Phi.Dataize (defaultContext) import Language.EO.Phi.Metrics.Collect (getProgramMetrics) import Language.EO.Phi.Metrics.Data (BindingsByPathMetrics (..), ProgramMetrics (..))-import Language.EO.Phi.Rules.Common (Rule, defaultContext, equalProgram)+import Language.EO.Phi.Rules.Common (Rule, equalProgram) import Language.EO.Phi.Rules.PhiPaper (rule6) import PyF (fmt) import Test.EO.Phi
test/Language/EO/Rules/PhiPaperSpec.hs view
@@ -22,7 +22,8 @@ import Data.List qualified as List import Data.Yaml qualified as Yaml import GHC.Generics (Generic)-import Language.EO.Phi.Rules.Common (ApplicationLimits (..), NamedRule, applyOneRule, defaultApplicationLimits, defaultContext, equalObject, intToBytes, objectSize)+import Language.EO.Phi.Dataize (defaultContext)+import Language.EO.Phi.Rules.Common (ApplicationLimits (..), NamedRule, applyOneRule, defaultApplicationLimits, equalObject, intToBytes, objectSize) import Language.EO.Phi.Rules.Yaml (convertRuleNamed, parseRuleSetFromFile, rules) import Language.EO.Phi.Syntax (printTree) import Language.EO.Phi.Syntax.Abs as Phi@@ -51,8 +52,18 @@ arbitrary = intToBytes <$> arbitrarySizedNatural instance Arbitrary Phi.Function where arbitrary = Phi.Function <$> arbitraryNonEmptyString-instance Arbitrary Phi.MetaId where- arbitrary = Phi.MetaId . ("!" ++) <$> arbitraryNonEmptyString++instance Arbitrary Phi.ObjectMetaId where+ arbitrary = Phi.ObjectMetaId . ("!b" ++) <$> arbitraryNonEmptyString+instance Arbitrary Phi.LabelMetaId where+ arbitrary = Phi.LabelMetaId . ("!τ" ++) <$> arbitraryNonEmptyString+instance Arbitrary Phi.BindingsMetaId where+ arbitrary = Phi.BindingsMetaId . ("!B" ++) <$> arbitraryNonEmptyString+instance Arbitrary Phi.TailMetaId where+ arbitrary = Phi.TailMetaId . ("!t" ++) <$> arbitraryNonEmptyString+instance Arbitrary Phi.BytesMetaId where+ arbitrary = Phi.BytesMetaId . ("!y" ++) <$> arbitraryNonEmptyString+ instance Arbitrary Phi.MetaFunctionName where arbitrary = Phi.MetaFunctionName . ("@" ++) <$> arbitraryNonEmptyString
test/Language/EO/YamlSpec.hs view
@@ -1,25 +1,30 @@ {-# LANGUAGE BlockArguments #-}-{-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedRecordDot #-} module Language.EO.YamlSpec where import Control.Monad (forM_)-import Language.EO.Phi.Rules.Common (applyOneRule, defaultContext, equalObject)+import Language.EO.Phi.Dataize (defaultContext)+import Language.EO.Phi.Rules.Common (applyOneRule) import Language.EO.Phi.Rules.Yaml (Rule (..), RuleSet (..), RuleTest (..), convertRuleNamed) import Test.EO.Yaml import Test.Hspec spec :: Spec spec = describe "User-defined rules unit tests" do- ruleset <- runIO $ fileTests "test/eo/phi/rules/yegor.yaml"- describe ruleset.title do- forM_ ruleset.rules $ \rule -> do- describe rule.name do- forM_ rule.tests $ \ruleTest -> do- it ruleTest.name $- let rule' = convertRuleNamed rule- resultOneStep = applyOneRule (defaultContext [rule'] ruleTest.input) ruleTest.input- expected = ruleTest.output- sameObjs objs1 objs2 = and ((length objs1 == length objs2) : zipWith equalObject objs2 objs1)- in map snd resultOneStep `shouldSatisfy` sameObjs expected+ forM_ testPaths $ \path -> do+ ruleset <- runIO $ fileTests path+ describe ruleset.title do+ forM_ ruleset.rules $ \rule -> do+ describe rule.name do+ forM_ rule.tests $ \ruleTest -> do+ it ruleTest.name $+ let rule' = convertRuleNamed rule+ resultOneStep = applyOneRule (defaultContext [rule'] ruleTest.input) ruleTest.input+ expected = ruleTest.output+ in map snd resultOneStep `shouldBe` expected+ where+ testPaths =+ [ "test/eo/phi/rules/yegor.yaml"+ , "test/eo/phi/rules/streams.yaml"+ ]