packages feed

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 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"+    ]