diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,7 @@
+# Clafer Version 0.4.1 released on Sep 1, 2015
+
+[Release](https://github.com/gsdlab/clafer/pull/71)
+
 # Clafer Version 0.4.0 released on Jul 28, 2015
 
 [Release](https://github.com/gsdlab/clafer/pull/68)
diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -60,7 +60,7 @@
 .PHONY : test
 
 test:
-	cabal test
+	cabal test 2>/dev/null || :    # supress error message and exit code if fail
 	$(MAKE) -C $(TEST_DIR) test
 
 generateAlloyJSPythonHTMLDot:
@@ -83,7 +83,7 @@
 	$(MAKE) -C $(TEST_DIR) clean
 
 tags:
-	hasktags --ctags --extendedctag .
+	hasktags --ctags --extendedctag --ignore-close-implementation .
 
 codex:
 	codex update
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,6 +1,9 @@
+[![Hackage](https://img.shields.io/hackage/v/clafer.svg)](https://hackage.haskell.org/package/clafer)
+[![Build Status](https://secure.travis-ci.org/gsdlab/clafer.svg)](http://travis-ci.org/gsdlab/clafer)
+
 # Clafer, the Language
 
-v0.4.0
+v0.4.1
 
 [Clafer](http://clafer.org) is a general-purpose lightweight structural modeling language developed by
 [GSD Lab](http://gsd.uwaterloo.ca/), [University of Waterloo](http://uwaterloo.ca), and
@@ -64,7 +67,7 @@
 
 ### Installation from binaries
 
-Binary distributions of the release 0.4.0 of Clafer Tools for Windows, Mac, and Linux,
+Binary distributions of the release 0.4.1 of Clafer Tools for Windows, Mac, and Linux,
 can be downloaded from
 [Clafer Tools - Binary Distributions](http://gsd.uwaterloo.ca/clafer-tools-binary-distributions).
 
@@ -77,12 +80,12 @@
 
 * [GHC](https://www.haskell.org/downloads) v7.10.*
 
-Clafer is now available on [Hackage](http://hackage.haskell.org/package/clafer-0.4.0/) and it can be installed using
+Clafer is now available on [Hackage](http://hackage.haskell.org/package/clafer-0.4.1/) and it can be installed using
 
 1. `cabal update`
 2. `cabal install clafer`
-3. on Windows `cd C:\Users\<user>\AppData\Roaming\cabal\i386-windows-ghc-7.10.1\clafer-0.4.0`
-4. on Linux `ca ~/.cabal/share/x86_64-linux-ghc-7.10.1/clafer-0.4.0/`
+3. on Windows `cd C:\Users\<user>\AppData\Roaming\cabal\i386-windows-ghc-7.10.2\clafer-0.4.1`
+4. on Linux `ca ~/.cabal/share/x86_64-linux-ghc-7.10.2/clafer-0.4.1/`
 5. to automatically download Alloy jars, execute
   * `cd tools`
   * `make`
@@ -139,15 +142,14 @@
 
 See [clafer-vim](https://github.com/wasowski/clafer-vim)
 
-Usage
-=====
+## Usage
 
-## Clafer Compiler
+### Clafer Compiler
 
 (As printed by `clafer --help`)
 
 ```
-Clafer 0.4.0
+Clafer 0.4.1
 
 clafer [OPTIONS] [FILE]
 
@@ -255,7 +257,9 @@
 * `//# STATS` - marks the insertion point for module statistics. The statistics can be omitted using the argument `--no-stats`.
 * `//# SUMMARY` - shorthand for `//# GRAPH` and `//# STATS`
 
-He is some information about the development of the clafer compiler.
+# Developing Clafer
+
+Here is some information about the development of the Clafer compiler.
 
 ## Branching
 
diff --git a/clafer.cabal b/clafer.cabal
--- a/clafer.cabal
+++ b/clafer.cabal
@@ -1,5 +1,5 @@
 Name:                   clafer
-Version:                0.4.0
+Version:                0.4.1
 Synopsis:               Compiles Clafer models to other formats: Alloy, JavaScript, JSON, HTML, Dot.
 Description:            Clafer is a general purpose, lightweight, structural modeling language developed at GSD Lab, University of Waterloo, and MODELS group at IT University of Copenhagen. Lightweight modeling aims at improving the understanding of the problem domain in the early stages of software development and determining the requirements with fewer defects. Clafer's goal is to make modeling more accessible to a wider range of users and domains. The tool provides a reference language implementation. It translates models to other formats (e.g. Alloy, JavaScript, JSON) to allow for reasoning with existing tools.
 Homepage:               http://clafer.org
@@ -10,62 +10,68 @@
 Stability:              Experimental
 Category:               Model
 Build-type:             Simple
+tested-with:            GHC == 7.8.3
+                      , GHC == 7.8.4
+                      , GHC == 7.10.1
+                      , GHC == 7.10.2
 Cabal-version:          >= 1.18
 data-files:             README.md
-                        , CHANGES.md
-                        , logo.pdf
-                        , Makefile
-                        , tools/ecore2clafer.jar
-                        , tools/Makefile
+                      , CHANGES.md
+                      , logo.pdf
+                      , Makefile
+                      , tools/Makefile
+                      , tools/ecore2clafer.jar
 source-repository head
     type:               git
     location:           git://github.com/gsdlab/clafer.git
 Executable clafer
-    build-tools:        ghc >= 7.10.1
+    build-tools:        ghc >= 7.8.3
     default-language:   Haskell2010
     main-is:            clafer.hs
     hs-source-dirs:     src-cmd
-    build-depends:      base >= 4.8.0.0 && < 5
-                      , containers >= 0.5.6.2
-                      , filepath >= 1.4.0.0
-                      , process >= 1.2.3.0
+    build-depends:      base >= 4.7.0.1 && < 5
+                      , containers >= 0.5.5.1
+                      , filepath >= 1.3.0.2
+                      , process >= 1.2.0.0
 
-                      , mtl >= 2.2.1
+                      , mtl >= 2.1.3.1
 
-                      , cmdargs >= 0.10.13
+                      , cmdargs >= 0.10.12
                       , split >= 0.2.2
 
-                      , clafer == 0.4.0
+                      , clafer == 0.4.1
     other-modules:      Paths_clafer
 
 library
-    build-tools:        ghc >= 7.10.1
+    build-tools:        ghc >= 7.8.3
     default-language:   Haskell2010
-    build-depends:      array >= 0.5.1.0
-                      , base >= 4.8.0.0 && < 5
-                      , bytestring >= 0.10.6.0
-                      , containers >= 0.5.6.2
-                      , directory >= 1.2.2.0
-                      , filepath >= 1.4.0.0
-                      , process >= 1.2.3.0
-                      , transformers >= 0.4.2.0
+    build-depends:      array >= 0.5.0.0
+                      , base >= 4.7.0.1 && < 5
+                      , bytestring >= 0.10.4.0
+                      , containers >= 0.5.5.1
+                      , directory >= 1.2.1.0
+                      , filepath >= 1.3.0.2
+                      , process >= 1.2.0.0
+                      , transformers >= 0.3.0.0
 
-                      , HTTP >= 4000.2.20
-                      , mtl >= 2.2.1
-                      , network >= 2.6.2.1
-                      , parsec >= 3.1.9
-                      , text >= 1.2.1.1
+                      , HTTP >= 4000.2.10
+                      , mtl >= 2.1.3.1
+                      , network >= 2.4.2.3
+                      , parsec >= 3.1.5
+                      , text >= 1.1.0.0
 
                       , aeson >= 0.8.0.2
-                      , cmdargs >= 0.10.13
+                      , cmdargs >= 0.10.12
                       , data-stringmap >= 1.0.1.1
                       , executable-path >= 0.0.3
                       , json-builder >= 0.3
-                      , lens >= 4.11.1
-                      , lens-aeson >= 1.0.0.4
-                      , network-uri >= 2.6.0.3
-                      , string-conversions >= 0.4
+                      , lens >= 4.6.0.1
+                      , lens-aeson >= 1.0.0.3
+                      , network-uri >= 2.5.0.0
+                      , string-conversions >= 0.3.0.3
                       , split >= 0.2.2
+                      , transformers-compat >= 0.3 && < 0.5
+                      , mtl-compat >= 0.2.1
 
     hs-source-dirs:     src
     ghc-options:        -Wall -fno-warn-orphans
@@ -108,28 +114,29 @@
     other-modules:      GetURL
 
 Test-Suite test-suite
-    build-tools:        ghc >= 7.10.1
+    build-tools:        ghc >= 7.8.3
     default-language:   Haskell2010
     type:               exitcode-stdio-1.0
     main-is:            test-suite.hs
     hs-source-dirs:     test
-    build-depends:      base >= 4.8.0.0 && < 5
-                      , containers >= 0.5.6.2
-                      , directory >= 1.2.2.0
-                      , filepath >= 1.4.0.0
+    build-depends:      base >= 4.7.0.1 && < 5
+                      , containers >= 0.5.5.1
+                      , directory >= 1.2.1.0
+                      , filepath >= 1.3.0.2
 
                       , HUnit >= 1.2.5.2
-                      , mtl >= 2.2.1
-                      , QuickCheck >= 2.8.1
+                      , mtl >= 2.1.3.1
+                      , QuickCheck >= 2.6
 
                       , data-stringmap >= 1.0.1.1
-                      , lens >= 4.11.1
-                      , lens-aeson >= 1.0.0.4
+                      , lens >= 4.6.0.1
+                      , lens-aeson >= 1.0.0.3
                       , tasty >= 0.10.1.2
                       , tasty-hunit >= 0.9.2
                       , tasty-th >= 0.1.3
-
-                      , clafer == 0.4.0
+                      , transformers-compat >= 0.3 && < 0.5
+                      , mtl-compat >= 0.2.1
+                      , clafer == 0.4.1
 
     ghc-options:        -Wall
 
@@ -141,7 +148,7 @@
                       , Suite.TypeSystem
 
 Test-suite doctests
-    build-tools:        ghc >= 7.10.1
+    build-tools:        ghc >= 7.8.3
     default-language:   Haskell2010
     type:               exitcode-stdio-1.0
     ghc-options:        -threaded -Wall
diff --git a/dist/build/Language/Clafer/Front/LexClafer.hs b/dist/build/Language/Clafer/Front/LexClafer.hs
--- a/dist/build/Language/Clafer/Front/LexClafer.hs
+++ b/dist/build/Language/Clafer/Front/LexClafer.hs
@@ -29,19 +29,19 @@
 import GlaExts
 #endif
 alex_base :: AlexAddr
-alex_base = AlexA# "\xf8\xff\xff\xff\x4c\x00\x00\x00\xcc\x00\x00\x00\x4c\x01\x00\x00\x4c\x02\x00\x00\x0c\x02\x00\x00\x00\x00\x00\x00\x7d\x02\x00\x00\x7d\x03\x00\x00\x34\x00\x00\x00\x3d\x03\x00\x00\x13\x04\x00\x00\x00\x00\x00\x00\x7f\x03\x00\x00\x93\x04\x00\x00\x08\x05\x00\x00\xd6\xff\xff\xff\x4d\x00\x00\x00\x61\x00\x00\x00\xea\xff\xff\xff\x08\x06\x00\x00\xc8\x05\x00\x00\x00\x00\x00\x00\xbe\x06\x00\x00\x00\x00\x00\x00\x7e\x00\x00\x00\xe7\xff\xff\xff\xe8\xff\xff\xff\x4f\x00\x00\x00\xd5\xff\xff\xff\xd7\xff\xff\xff\x00\x00\x00\x00\x9b\xff\xff\xff\xde\xff\xff\xff\x52\x00\x00\x00\xf1\xff\xff\xff\x0e\x00\x00\x00\x79\x00\x00\x00\x8c\x00\x00\x00\x99\x06\x00\x00\x00\x00\x00\x00\x97\x07\x00\x00"#
+alex_base = AlexA# "\xf8\xff\xff\xff\x4c\x00\x00\x00\xef\x00\x00\x00\x92\x01\x00\x00\x35\x02\x00\x00\xd8\x02\x00\x00\x8d\xff\xff\xff\x98\xff\xff\xff\x99\xff\xff\xff\xa6\xff\xff\xff\x9b\xff\xff\xff\xa3\xff\xff\xff\xa0\xff\xff\xff\xa1\xff\xff\xff\xd8\x03\x00\x00\x92\xff\xff\xff\x98\x03\x00\x00\x98\x04\x00\x00\x93\xff\xff\xff\x58\x04\x00\x00\x58\x05\x00\x00\x18\x05\x00\x00\x9c\x05\x00\x00\x20\x06\x00\x00\xa4\x06\x00\x00\x28\x07\x00\x00\xfe\x07\x00\x00\xfe\x08\x00\x00\x34\x00\x00\x00\x69\x07\x00\x00\x7e\x09\x00\x00\x3e\x09\x00\x00\xbe\x09\x00\x00\x33\x0a\x00\x00\x4d\x00\x00\x00\x61\x00\x00\x00\x79\x00\x00\x00\x7e\x00\x00\x00\xe5\xff\xff\xff\x4f\x00\x00\x00\xd4\xff\xff\xff\xd5\xff\xff\xff\xed\xff\xff\xff\xb3\xff\xff\xff\x00\x00\x00\x00\xbc\xff\xff\xff\xd7\xff\xff\xff\x3d\x00\x00\x00\xf1\xff\xff\xff\x2d\x00\x00\x00\x52\x00\x00\x00\x8c\x00\x00\x00\x1d\x01\x00\x00\x03\x0b\x00\x00\x00\x00\x00\x00\x28\x0b\x00\x00\x79\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\x0b\x00\x00\x00\x00\x00\x00\x81\x0c\x00\x00"#
 
 alex_table :: AlexAddr
-alex_table = AlexA# "\x00\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x1f\x00\x0b\x00\x1f\x00\x1f\x00\x1f\x00\x1f\x00\x17\x00\x1f\x00\x19\x00\x1d\x00\x0f\x00\x1f\x00\x1f\x00\x1f\x00\x13\x00\x1f\x00\x1f\x00\x1f\x00\x24\x00\x1b\x00\x1f\x00\x1c\x00\x23\x00\x1a\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x1e\x00\x1f\x00\x22\x00\x21\x00\x1e\x00\x1f\x00\x1f\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x1f\x00\x1f\x00\x1f\x00\x0f\x00\x00\x00\x1f\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x1f\x00\x20\x00\x1f\x00\x01\x00\x00\x00\x00\x00\x00\x00\x12\x00\x18\x00\x1f\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x19\x00\x19\x00\x19\x00\x19\x00\x19\x00\x1f\x00\x21\x00\x1f\x00\x21\x00\x0f\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x0f\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x26\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x02\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x00\x05\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x28\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x00\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x08\x00\x0a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x16\x00\x15\x00\x02\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0c\x00\x0d\x00\x03\x00\x06\x00\x06\x00\x06\x00\x07\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+alex_table = AlexA# "\x00\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x12\x00\x0f\x00\x06\x00\x07\x00\x09\x00\x0a\x00\x0d\x00\x08\x00\x17\x00\x19\x00\x2c\x00\x2c\x00\x2c\x00\x2c\x00\x0c\x00\x2c\x00\x0b\x00\x1a\x00\x25\x00\x28\x00\x21\x00\x2c\x00\x38\x00\x2c\x00\x32\x00\x2c\x00\x2c\x00\x2c\x00\x31\x00\x26\x00\x2c\x00\x27\x00\x30\x00\x2a\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x29\x00\x2c\x00\x2f\x00\x2e\x00\x29\x00\x2c\x00\x2c\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x2b\x00\x2c\x00\x2c\x00\x21\x00\x2c\x00\x2c\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x2c\x00\x2d\x00\x2c\x00\x01\x00\x2c\x00\x2c\x00\x2c\x00\x2e\x00\x39\x00\x2c\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x25\x00\x25\x00\x25\x00\x25\x00\x25\x00\x00\x00\x2e\x00\x24\x00\x00\x00\x21\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x00\x20\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x11\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x11\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0e\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0e\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0e\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0e\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x03\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x11\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x02\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x11\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x14\x00\x15\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x36\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x00\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x1d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x23\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\xff\xff\x00\x00\x00\x00\x00\x00\x37\x00\x00\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x37\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x02\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x11\x00\x13\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0e\x00\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
 
 alex_check :: AlexAddr
-alex_check = AlexA# "\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x26\x00\x2a\x00\x3d\x00\x2b\x00\x3d\x00\x3e\x00\x2f\x00\x7c\x00\x20\x00\x21\x00\x22\x00\x23\x00\x3e\x00\x25\x00\x26\x00\x2e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x2a\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x22\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x2a\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2f\x00\x2d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x3a\x00\x3e\x00\x3c\x00\x3d\x00\x5c\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\x74\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x2a\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x22\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xff\xff\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x0a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+alex_check = AlexA# "\xff\xff\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x79\x00\x6f\x00\x6f\x00\x63\x00\x6f\x00\x68\x00\x6c\x00\x6c\x00\x7c\x00\x7c\x00\x2b\x00\x3d\x00\x3d\x00\x3e\x00\x61\x00\x3e\x00\x63\x00\x2a\x00\x20\x00\x21\x00\x22\x00\x23\x00\x2f\x00\x25\x00\x26\x00\x2e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x7c\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x22\x00\x2a\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x2a\x00\x3a\x00\x26\x00\x3c\x00\x3d\x00\x2f\x00\x2d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x3e\x00\x2d\x00\xff\xff\x5c\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x74\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xc3\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x5d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7c\x00\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x7c\x00\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x7c\x00\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x7c\x00\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x7c\x00\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x2a\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\x7b\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x22\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xff\xff\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x0a\x00\xff\xff\xff\xff\xff\xff\x5f\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\x6f\x00\x70\x00\x71\x00\x72\x00\x73\x00\x74\x00\x75\x00\x76\x00\x77\x00\x78\x00\x79\x00\x7a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xc3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x7c\x00\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00\x7c\x00\xff\xff\xff\xff\xff\xff\x80\x00\x81\x00\x82\x00\x83\x00\x84\x00\x85\x00\x86\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x91\x00\x92\x00\x93\x00\x94\x00\x95\x00\x96\x00\x97\x00\x98\x00\x99\x00\x9a\x00\x9b\x00\x9c\x00\x9d\x00\x9e\x00\x9f\x00\xa0\x00\xa1\x00\xa2\x00\xa3\x00\xa4\x00\xa5\x00\xa6\x00\xa7\x00\xa8\x00\xa9\x00\xaa\x00\xab\x00\xac\x00\xad\x00\xae\x00\xaf\x00\xb0\x00\xb1\x00\xb2\x00\xb3\x00\xb4\x00\xb5\x00\xb6\x00\xb7\x00\xb8\x00\xb9\x00\xba\x00\xbb\x00\xbc\x00\xbd\x00\xbe\x00\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xc4\x00\xc5\x00\xc6\x00\xc7\x00\xc8\x00\xc9\x00\xca\x00\xcb\x00\xcc\x00\xcd\x00\xce\x00\xcf\x00\xd0\x00\xd1\x00\xd2\x00\xd3\x00\xd4\x00\xd5\x00\xd6\x00\xd7\x00\xd8\x00\xd9\x00\xda\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xe1\x00\xe2\x00\xe3\x00\xe4\x00\xe5\x00\xe6\x00\xe7\x00\xe8\x00\xe9\x00\xea\x00\xeb\x00\xec\x00\xed\x00\xee\x00\xef\x00\xf0\x00\xf1\x00\xf2\x00\xf3\x00\xf4\x00\xf5\x00\xf6\x00\xf7\x00\xf8\x00\xf9\x00\xfa\x00\xfb\x00\xfc\x00\xfd\x00\xfe\x00\xff\x00"#
 
 alex_deflt :: AlexAddr
-alex_deflt = AlexA# "\xff\xff\x0b\x00\xff\xff\xff\xff\x0b\x00\x0b\x00\x0c\x00\x0c\x00\x0f\x00\xff\xff\x0f\x00\x0b\x00\x16\x00\x16\x00\xff\xff\x0f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\x17\x00\x17\x00\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+alex_deflt = AlexA# "\xff\xff\x1a\x00\x19\x00\x19\x00\x17\x00\x17\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x17\x00\xff\xff\x17\x00\x19\x00\xff\xff\x19\x00\x1a\x00\x1a\x00\x17\x00\x17\x00\x19\x00\x19\x00\x1a\x00\x21\x00\xff\xff\x21\x00\x38\x00\x38\x00\xff\xff\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\x19\x00\xff\xff\x17\x00"#
 
-alex_accept = listArray (0::Int,41) [AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccSkip,AlexAccSkip,AlexAccSkip,AlexAcc (alex_action_3),AlexAcc (alex_action_3),AlexAcc (alex_action_3),AlexAcc (alex_action_3),AlexAcc (alex_action_3),AlexAcc (alex_action_3),AlexAcc (alex_action_3),AlexAcc (alex_action_3),AlexAcc (alex_action_3),AlexAcc (alex_action_3),AlexAcc (alex_action_3),AlexAcc (alex_action_4),AlexAcc (alex_action_5),AlexAcc (alex_action_6),AlexAcc (alex_action_7),AlexAcc (alex_action_8)]
-{-# LINE 43 "src\Language\Clafer\Front\LexClafer.x" #-}
+alex_accept = listArray (0::Int,61) [AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccNone,AlexAccSkip,AlexAcc (alex_action_1),AlexAcc (alex_action_1),AlexAcc (alex_action_1),AlexAcc (alex_action_1),AlexAcc (alex_action_1),AlexAcc (alex_action_1),AlexAcc (alex_action_1),AlexAcc (alex_action_1),AlexAcc (alex_action_1),AlexAcc (alex_action_1),AlexAcc (alex_action_1),AlexAcc (alex_action_1),AlexAcc (alex_action_1),AlexAcc (alex_action_2),AlexAcc (alex_action_3),AlexAcc (alex_action_4),AlexAcc (alex_action_5),AlexAcc (alex_action_6),AlexAcc (alex_action_7),AlexAcc (alex_action_8),AlexAcc (alex_action_9),AlexAcc (alex_action_9),AlexAcc (alex_action_10),AlexAcc (alex_action_10)]
+{-# LINE 45 "src\Language\Clafer\Front\LexClafer.x" #-}
 
 
 tok :: (Posn -> String -> Token) -> (Posn -> String -> Token)
@@ -62,6 +62,10 @@
  | T_PosReal !String
  | T_PosString !String
  | T_PosIdent !String
+ | T_PosLineComment !String
+ | T_PosBlockComment !String
+ | T_PosAlloy !String
+ | T_PosChoco !String
 
  deriving (Eq,Show,Ord)
 
@@ -101,6 +105,10 @@
   PT _ (T_PosReal s) -> s
   PT _ (T_PosString s) -> s
   PT _ (T_PosIdent s) -> s
+  PT _ (T_PosLineComment s) -> s
+  PT _ (T_PosBlockComment s) -> s
+  PT _ (T_PosAlloy s) -> s
+  PT _ (T_PosChoco s) -> s
 
 
 data BTree = N | B String Tok BTree BTree deriving (Show)
@@ -114,7 +122,7 @@
                               | s == a = t
 
 resWords :: BTree
-resWords = b ">>" 33 (b "." 17 (b "**" 9 (b "&&" 5 (b "#" 3 (b "!=" 2 (b "!" 1 N N) N) (b "%" 4 N N)) (b ")" 7 (b "(" 6 N N) (b "*" 8 N N))) (b "-" 13 (b "++" 11 (b "+" 10 N N) (b "," 12 N N)) (b "->" 15 (b "--" 14 N N) (b "->>" 16 N N)))) (b "<:" 25 (b ":=" 21 (b "/" 19 (b ".." 18 N N) (b ":" 20 N N)) (b ";" 23 (b ":>" 22 N N) (b "<" 24 N N))) (b "=" 29 (b "<=" 27 (b "<<" 26 N N) (b "<=>" 28 N N)) (b ">" 31 (b "=>" 30 N N) (b ">=" 32 N N))))) (b "min" 49 (b "assert" 41 (b "]" 37 (b "[" 35 (b "?" 34 N N) (b "\\" 36 N N)) (b "abstract" 39 (b "`" 38 N N) (b "all" 40 N N))) (b "if" 45 (b "else" 43 (b "disj" 42 N N) (b "enum" 44 N N)) (b "lone" 47 (b "in" 46 N N) (b "max" 48 N N)))) (b "some" 57 (b "one" 53 (b "no" 51 (b "mux" 50 N N) (b "not" 52 N N)) (b "or" 55 (b "opt" 54 N N) (b "product" 56 N N))) (b "{" 61 (b "then" 59 (b "sum" 58 N N) (b "xor" 60 N N)) (b "||" 63 (b "|" 62 N N) (b "}" 64 N N)))))
+resWords = b ">=" 33 (b "->>" 17 (b "*" 9 (b "&" 5 (b "#" 3 (b "!=" 2 (b "!" 1 N N) N) (b "%" 4 N N)) (b "(" 7 (b "&&" 6 N N) (b ")" 8 N N))) (b "," 13 (b "+" 11 (b "**" 10 N N) (b "++" 12 N N)) (b "--" 15 (b "-" 14 N N) (b "->" 16 N N)))) (b "<" 25 (b ":" 21 (b ".." 19 (b "." 18 N N) (b "/" 20 N N)) (b ":>" 23 (b ":=" 22 N N) (b ";" 24 N N))) (b "<=>" 29 (b "<<" 27 (b "<:" 26 N N) (b "<=" 28 N N)) (b "=>" 31 (b "=" 30 N N) (b ">" 32 N N))))) (b "min" 50 (b "assert" 42 (b "]" 38 (b "[" 36 (b "?" 35 (b ">>" 34 N N) N) (b "\\" 37 N N)) (b "abstract" 40 (b "`" 39 N N) (b "all" 41 N N))) (b "if" 46 (b "else" 44 (b "disj" 43 N N) (b "enum" 45 N N)) (b "lone" 48 (b "in" 47 N N) (b "max" 49 N N)))) (b "some" 58 (b "one" 54 (b "no" 52 (b "mux" 51 N N) (b "not" 53 N N)) (b "or" 56 (b "opt" 55 N N) (b "product" 57 N N))) (b "{" 62 (b "then" 60 (b "sum" 59 N N) (b "xor" 61 N N)) (b "||" 64 (b "|" 63 N N) (b "}" 65 N N)))))
    where b s n = let bs = id s
                   in B bs (TS bs n)
 
@@ -196,19 +204,23 @@
                         , 0x80 + oc Data.Bits..&. 0x3f
                         ]
 
-alex_action_3 =  tok (\p s -> PT p (eitherResIdent (TV . share) s)) 
-alex_action_4 =  tok (\p s -> PT p (eitherResIdent (T_PosInteger . share) s)) 
-alex_action_5 =  tok (\p s -> PT p (eitherResIdent (T_PosDouble . share) s)) 
-alex_action_6 =  tok (\p s -> PT p (eitherResIdent (T_PosReal . share) s)) 
-alex_action_7 =  tok (\p s -> PT p (eitherResIdent (T_PosString . share) s)) 
-alex_action_8 =  tok (\p s -> PT p (eitherResIdent (T_PosIdent . share) s)) 
-alex_action_9 =  tok (\p s -> PT p (eitherResIdent (TV . share) s)) 
+alex_action_1 =  tok (\p s -> PT p (eitherResIdent (TV . share) s)) 
+alex_action_2 =  tok (\p s -> PT p (eitherResIdent (T_PosInteger . share) s)) 
+alex_action_3 =  tok (\p s -> PT p (eitherResIdent (T_PosDouble . share) s)) 
+alex_action_4 =  tok (\p s -> PT p (eitherResIdent (T_PosReal . share) s)) 
+alex_action_5 =  tok (\p s -> PT p (eitherResIdent (T_PosString . share) s)) 
+alex_action_6 =  tok (\p s -> PT p (eitherResIdent (T_PosIdent . share) s)) 
+alex_action_7 =  tok (\p s -> PT p (eitherResIdent (T_PosLineComment . share) s)) 
+alex_action_8 =  tok (\p s -> PT p (eitherResIdent (T_PosBlockComment . share) s)) 
+alex_action_9 =  tok (\p s -> PT p (eitherResIdent (T_PosAlloy . share) s)) 
+alex_action_10 =  tok (\p s -> PT p (eitherResIdent (T_PosChoco . share) s)) 
+alex_action_11 =  tok (\p s -> PT p (eitherResIdent (TV . share) s)) 
 {-# LINE 1 "templates\GenericTemplate.hs" #-}
 {-# LINE 1 "templates\\GenericTemplate.hs" #-}
 {-# LINE 1 "<built-in>" #-}
 {-# LINE 1 "<command-line>" #-}
 {-# LINE 8 "<command-line>" #-}
-{-# LINE 1 "C:\\dev\\MinGHC-7.10.1\\ghc-7.10.1\\lib/include\\ghcversion.h" #-}
+{-# LINE 1 "C:\\dev\\ghc-7.10.2\\lib/include\\ghcversion.h" #-}
 
 
 
diff --git a/dist/build/Language/Clafer/Front/ParClafer.hs b/dist/build/Language/Clafer/Front/ParClafer.hs
--- a/dist/build/Language/Clafer/Front/ParClafer.hs
+++ b/dist/build/Language/Clafer/Front/ParClafer.hs
@@ -48,1733 +48,1806 @@
 happyOut12 :: (HappyAbsSyn ) -> (PosIdent)
 happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x
 {-# INLINE happyOut12 #-}
-happyIn13 :: (Module) -> (HappyAbsSyn )
-happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn13 #-}
-happyOut13 :: (HappyAbsSyn ) -> (Module)
-happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut13 #-}
-happyIn14 :: (Declaration) -> (HappyAbsSyn )
-happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn14 #-}
-happyOut14 :: (HappyAbsSyn ) -> (Declaration)
-happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut14 #-}
-happyIn15 :: (Clafer) -> (HappyAbsSyn )
-happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn15 #-}
-happyOut15 :: (HappyAbsSyn ) -> (Clafer)
-happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut15 #-}
-happyIn16 :: (Constraint) -> (HappyAbsSyn )
-happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn16 #-}
-happyOut16 :: (HappyAbsSyn ) -> (Constraint)
-happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut16 #-}
-happyIn17 :: (Assertion) -> (HappyAbsSyn )
-happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn17 #-}
-happyOut17 :: (HappyAbsSyn ) -> (Assertion)
-happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut17 #-}
-happyIn18 :: (Goal) -> (HappyAbsSyn )
-happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn18 #-}
-happyOut18 :: (HappyAbsSyn ) -> (Goal)
-happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut18 #-}
-happyIn19 :: (Abstract) -> (HappyAbsSyn )
-happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn19 #-}
-happyOut19 :: (HappyAbsSyn ) -> (Abstract)
-happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut19 #-}
-happyIn20 :: (Elements) -> (HappyAbsSyn )
-happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn20 #-}
-happyOut20 :: (HappyAbsSyn ) -> (Elements)
-happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut20 #-}
-happyIn21 :: (Element) -> (HappyAbsSyn )
-happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn21 #-}
-happyOut21 :: (HappyAbsSyn ) -> (Element)
-happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut21 #-}
-happyIn22 :: (Super) -> (HappyAbsSyn )
-happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn22 #-}
-happyOut22 :: (HappyAbsSyn ) -> (Super)
-happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut22 #-}
-happyIn23 :: (Reference) -> (HappyAbsSyn )
-happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn23 #-}
-happyOut23 :: (HappyAbsSyn ) -> (Reference)
-happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut23 #-}
-happyIn24 :: (Init) -> (HappyAbsSyn )
-happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn24 #-}
-happyOut24 :: (HappyAbsSyn ) -> (Init)
-happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut24 #-}
-happyIn25 :: (InitHow) -> (HappyAbsSyn )
-happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn25 #-}
-happyOut25 :: (HappyAbsSyn ) -> (InitHow)
-happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut25 #-}
-happyIn26 :: (GCard) -> (HappyAbsSyn )
-happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn26 #-}
-happyOut26 :: (HappyAbsSyn ) -> (GCard)
-happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut26 #-}
-happyIn27 :: (Card) -> (HappyAbsSyn )
-happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn27 #-}
-happyOut27 :: (HappyAbsSyn ) -> (Card)
-happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut27 #-}
-happyIn28 :: (NCard) -> (HappyAbsSyn )
-happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn28 #-}
-happyOut28 :: (HappyAbsSyn ) -> (NCard)
-happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut28 #-}
-happyIn29 :: (ExInteger) -> (HappyAbsSyn )
-happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn29 #-}
-happyOut29 :: (HappyAbsSyn ) -> (ExInteger)
-happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut29 #-}
-happyIn30 :: (Name) -> (HappyAbsSyn )
-happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn30 #-}
-happyOut30 :: (HappyAbsSyn ) -> (Name)
-happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut30 #-}
-happyIn31 :: (Exp) -> (HappyAbsSyn )
-happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn31 #-}
-happyOut31 :: (HappyAbsSyn ) -> (Exp)
-happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut31 #-}
-happyIn32 :: (Exp) -> (HappyAbsSyn )
-happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn32 #-}
-happyOut32 :: (HappyAbsSyn ) -> (Exp)
-happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut32 #-}
-happyIn33 :: (Exp) -> (HappyAbsSyn )
-happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn33 #-}
-happyOut33 :: (HappyAbsSyn ) -> (Exp)
-happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut33 #-}
-happyIn34 :: (Exp) -> (HappyAbsSyn )
-happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn34 #-}
-happyOut34 :: (HappyAbsSyn ) -> (Exp)
-happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut34 #-}
-happyIn35 :: (Exp) -> (HappyAbsSyn )
-happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn35 #-}
-happyOut35 :: (HappyAbsSyn ) -> (Exp)
-happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut35 #-}
-happyIn36 :: (Exp) -> (HappyAbsSyn )
-happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn36 #-}
-happyOut36 :: (HappyAbsSyn ) -> (Exp)
-happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut36 #-}
-happyIn37 :: (Exp) -> (HappyAbsSyn )
-happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn37 #-}
-happyOut37 :: (HappyAbsSyn ) -> (Exp)
-happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut37 #-}
-happyIn38 :: (Exp) -> (HappyAbsSyn )
-happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn38 #-}
-happyOut38 :: (HappyAbsSyn ) -> (Exp)
-happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut38 #-}
-happyIn39 :: (Exp) -> (HappyAbsSyn )
-happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn39 #-}
-happyOut39 :: (HappyAbsSyn ) -> (Exp)
-happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut39 #-}
-happyIn40 :: (Exp) -> (HappyAbsSyn )
-happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn40 #-}
-happyOut40 :: (HappyAbsSyn ) -> (Exp)
-happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut40 #-}
-happyIn41 :: (Exp) -> (HappyAbsSyn )
-happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn41 #-}
-happyOut41 :: (HappyAbsSyn ) -> (Exp)
-happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut41 #-}
-happyIn42 :: (Exp) -> (HappyAbsSyn )
-happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn42 #-}
-happyOut42 :: (HappyAbsSyn ) -> (Exp)
-happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut42 #-}
-happyIn43 :: (Exp) -> (HappyAbsSyn )
-happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn43 #-}
-happyOut43 :: (HappyAbsSyn ) -> (Exp)
-happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut43 #-}
-happyIn44 :: (Exp) -> (HappyAbsSyn )
-happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn44 #-}
-happyOut44 :: (HappyAbsSyn ) -> (Exp)
-happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut44 #-}
-happyIn45 :: (Exp) -> (HappyAbsSyn )
-happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn45 #-}
-happyOut45 :: (HappyAbsSyn ) -> (Exp)
-happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut45 #-}
-happyIn46 :: (Exp) -> (HappyAbsSyn )
-happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn46 #-}
-happyOut46 :: (HappyAbsSyn ) -> (Exp)
-happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut46 #-}
-happyIn47 :: (Exp) -> (HappyAbsSyn )
-happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn47 #-}
-happyOut47 :: (HappyAbsSyn ) -> (Exp)
-happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut47 #-}
-happyIn48 :: (Exp) -> (HappyAbsSyn )
-happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn48 #-}
-happyOut48 :: (HappyAbsSyn ) -> (Exp)
-happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut48 #-}
-happyIn49 :: (Exp) -> (HappyAbsSyn )
-happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn49 #-}
-happyOut49 :: (HappyAbsSyn ) -> (Exp)
-happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut49 #-}
-happyIn50 :: (Exp) -> (HappyAbsSyn )
-happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn50 #-}
-happyOut50 :: (HappyAbsSyn ) -> (Exp)
-happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut50 #-}
-happyIn51 :: (Decl) -> (HappyAbsSyn )
-happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn51 #-}
-happyOut51 :: (HappyAbsSyn ) -> (Decl)
-happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut51 #-}
-happyIn52 :: (Quant) -> (HappyAbsSyn )
-happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn52 #-}
-happyOut52 :: (HappyAbsSyn ) -> (Quant)
-happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut52 #-}
-happyIn53 :: (EnumId) -> (HappyAbsSyn )
-happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn53 #-}
-happyOut53 :: (HappyAbsSyn ) -> (EnumId)
-happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut53 #-}
-happyIn54 :: (ModId) -> (HappyAbsSyn )
-happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn54 #-}
-happyOut54 :: (HappyAbsSyn ) -> (ModId)
-happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut54 #-}
-happyIn55 :: (LocId) -> (HappyAbsSyn )
-happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn55 #-}
-happyOut55 :: (HappyAbsSyn ) -> (LocId)
-happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut55 #-}
-happyIn56 :: ([Declaration]) -> (HappyAbsSyn )
-happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn56 #-}
-happyOut56 :: (HappyAbsSyn ) -> ([Declaration])
-happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut56 #-}
-happyIn57 :: ([EnumId]) -> (HappyAbsSyn )
-happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn57 #-}
-happyOut57 :: (HappyAbsSyn ) -> ([EnumId])
-happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut57 #-}
-happyIn58 :: ([Element]) -> (HappyAbsSyn )
-happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn58 #-}
-happyOut58 :: (HappyAbsSyn ) -> ([Element])
-happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut58 #-}
-happyIn59 :: ([Exp]) -> (HappyAbsSyn )
-happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn59 #-}
-happyOut59 :: (HappyAbsSyn ) -> ([Exp])
-happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut59 #-}
-happyIn60 :: ([LocId]) -> (HappyAbsSyn )
-happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn60 #-}
-happyOut60 :: (HappyAbsSyn ) -> ([LocId])
-happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut60 #-}
-happyIn61 :: ([ModId]) -> (HappyAbsSyn )
-happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyIn61 #-}
-happyOut61 :: (HappyAbsSyn ) -> ([ModId])
-happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOut61 #-}
-happyInTok :: (Token) -> (HappyAbsSyn )
-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyInTok #-}
-happyOutTok :: (HappyAbsSyn ) -> (Token)
-happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
-{-# INLINE happyOutTok #-}
-
-
-happyActOffsets :: HappyAddr
-happyActOffsets = HappyA# "\x00\x00\x72\x01\x74\x01\x6d\x01\x7b\x01\x57\x01\x00\x00\x4e\x01\x00\x00\x4e\x01\x70\x01\x4b\x01\x00\x00\x4b\x01\xaa\x00\x00\x00\x4b\x01\x21\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x45\x01\x45\x01\x60\x01\x43\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x59\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x55\x01\x51\x01\x31\x01\x32\x01\x68\x01\x00\x00\xff\xff\x00\x00\x08\x00\xda\x00\x00\x00\x00\x00\x53\x01\x54\x01\x3f\x00\x56\x01\x59\x01\x4a\x01\x00\x00\x31\x00\x1f\x01\x00\x00\xb0\x00\x29\x00\x77\x00\x29\x00\x00\x00\xde\xff\x29\x00\x00\x00\x93\x00\x93\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x2d\x01\xfe\xff\x21\x01\xfb\xff\x1a\x01\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x00\x00\x00\x00\x00\x00\x00\x39\x00\xb9\x00\x00\x00\x00\x00\x00\x00\xf6\x00\x29\x00\xf6\x00\xef\x00\x00\x00\xd4\x00\xf5\x00\xf7\x00\xc5\x00\x00\x00\x02\x01\x00\x00\xff\xff\xc3\x00\xfc\xff\x00\x00\xc7\x00\xc2\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xcc\x00\xcc\x00\xcc\x00\xcc\x00\xcc\x00\xb0\x00\xb0\x00\xb0\x00\xb0\x00\xb0\x00\xb0\x00\xb0\x00\xca\x00\x93\x00\x93\x00\x93\x00\x93\x00\x93\x00\xd9\x00\xb7\x00\xb4\x00\xea\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xda\x00\xda\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x0d\x00\xde\x00\xde\x00\xd1\x00\xc0\x00\x00\x00\xa9\x00\x77\x00\x00\x00\x00\x00\x9d\x00\xb9\x00\x8b\x00\x77\x00\x29\x00\xb8\x00\xfb\xff\xb9\x00\xb9\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\x19\x01\x79\x00\x0d\x00\x0d\x00\xf4\xff\x99\x00\x00\x00\x00\x00\x9c\x00\x77\x00\x00\x00\x77\x00\x00\x00\x00\x00\x00\x00\xb9\x00\x6c\x00\x77\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x00\x00\x00"#
-
-happyGotoOffsets :: HappyAddr
-happyGotoOffsets = HappyA# "\x11\x00\x04\x00\x9a\x00\x98\x00\x86\x00\x00\x00\x00\x00\x00\x00\x64\x00\x00\x00\x00\x00\x00\x00\x5c\x00\x00\x00\x65\x00\x00\x00\x00\x00\x30\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7f\x00\x87\x00\x00\x00\x7e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x02\x4c\x00\x48\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x97\x04\x00\x00\x00\x00\xc0\x03\xd4\x05\x19\x02\xbd\x05\x00\x00\x9f\x00\xa4\x05\x00\x00\xd5\x02\xa6\x02\x00\x00\x00\x00\x00\x00\x8d\x05\x00\x00\x74\x05\x00\x00\x00\x00\x00\x00\x00\x00\xea\x01\x00\x00\x5b\x00\x0c\x00\x00\x00\x5d\x00\x00\x00\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x00\x58\x00\xa5\x06\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x00\x00\x51\x00\xbe\x06\x8e\x06\x84\x06\x75\x06\x6d\x06\x54\x06\x1d\x06\x2d\x05\x14\x05\xfd\x04\xe4\x04\xcd\x04\x80\x04\x67\x04\x50\x04\x37\x04\x20\x04\x07\x04\xf0\x03\x00\x00\x91\x03\x62\x03\x33\x03\x04\x03\x77\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd7\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x01\x00\x00\x00\x00\x00\x00\x04\x06\x09\x00\x8c\x01\x44\x05\x00\x00\x14\x00\x3d\x06\x34\x06\x00\x00\x00\x00\x00\x00\x00\x00\xd8\xff\x5e\x01\x20\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x01\x00\x00\x2e\x01\x00\x00\x00\x00\x00\x00\xed\x05\x0f\x00\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-happyDefActions :: HappyAddr
-happyDefActions = HappyA# "\x84\xff\xee\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\x00\x00\x7e\xff\x00\x00\x00\x00\x00\x00\x7e\xff\x00\x00\xdc\xff\xed\xff\x00\x00\xee\xff\x83\xff\xea\xff\xe8\xff\xe6\xff\xe7\xff\xf3\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd7\xff\xd9\xff\xd8\xff\xda\xff\xdb\xff\x00\x00\x7e\xff\x00\x00\x92\xff\x91\xff\x90\xff\x8f\xff\x86\xff\x93\xff\x7d\xff\xc8\xff\xc4\xff\xc2\xff\xc0\xff\xbe\xff\xbc\xff\xba\xff\xb1\xff\xaf\xff\xac\xff\xa8\xff\xa3\xff\xa1\xff\x9f\xff\x9d\xff\x9a\xff\x98\xff\x96\xff\x94\xff\x00\x00\x7a\xff\xcd\xff\x00\x00\x00\x00\x00\x00\x00\x00\xef\xff\x00\x00\x00\x00\x8a\xff\x00\x00\x00\x00\x8c\xff\x8b\xff\x89\xff\x00\x00\x88\xff\x00\x00\xf9\xff\xf8\xff\xf7\xff\xf6\xff\x00\x00\xf1\xff\xe5\xff\x00\x00\x00\x00\xd6\xff\xd2\xff\xec\xff\xd1\xff\xd3\xff\xd4\xff\xd5\xff\x00\x00\xce\xff\xd0\xff\xcf\xff\xe3\xff\x00\x00\xf0\xff\xa7\xff\xa6\xff\xc6\xff\x00\x00\xc7\xff\x00\x00\x85\xff\x00\x00\x7c\xff\x00\x00\x00\x00\xa4\xff\x00\x00\xa5\xff\xbb\xff\x00\x00\x86\xff\xb0\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xff\xc3\xff\xc1\xff\xbf\xff\xbd\xff\x00\x00\xb3\xff\xb5\xff\xb8\xff\xb7\xff\xb6\xff\xb9\xff\xb4\xff\xad\xff\xae\xff\xaa\xff\xab\xff\xa9\xff\xa0\xff\x9e\xff\x9b\xff\x9c\xff\x99\xff\x97\xff\x95\xff\x00\x00\x00\x00\x79\xff\x8e\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\xff\xd6\xff\x00\x00\x00\x00\x87\xff\x82\xff\xf4\xff\xe9\xff\x80\xff\xee\xff\x00\x00\xe1\xff\xe2\xff\xe0\xff\x00\x00\xcb\xff\x7b\xff\x8d\xff\x00\x00\xc9\xff\x00\x00\xb2\xff\xca\xff\xcc\xff\x00\x00\xec\xff\x00\x00\xdd\xff\xde\xff\x81\xff\x7f\xff\xeb\xff\xdf\xff\xf2\xff\xa2\xff"#
-
-happyCheck :: HappyAddr
-happyCheck = HappyA# "\xff\xff\x02\x00\x01\x00\x08\x00\x03\x00\x0a\x00\x08\x00\x06\x00\x2a\x00\x15\x00\x32\x00\x07\x00\x00\x00\x04\x00\x0d\x00\x0b\x00\x14\x00\x1d\x00\x0a\x00\x17\x00\x00\x00\x0d\x00\x05\x00\x18\x00\x0b\x00\x0c\x00\x1b\x00\x0c\x00\x1d\x00\x22\x00\x1f\x00\x20\x00\x01\x00\x15\x00\x03\x00\x45\x00\x04\x00\x06\x00\x25\x00\x13\x00\x14\x00\x28\x00\x10\x00\x11\x00\x0d\x00\x2e\x00\x2d\x00\x06\x00\x2f\x00\x30\x00\x31\x00\x34\x00\x33\x00\x34\x00\x35\x00\x06\x00\x2f\x00\x38\x00\x39\x00\x3a\x00\x41\x00\x34\x00\x04\x00\x41\x00\x21\x00\x30\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x28\x00\x0f\x00\x10\x00\x0b\x00\x0c\x00\x2d\x00\x2d\x00\x2f\x00\x30\x00\x31\x00\x31\x00\x33\x00\x34\x00\x35\x00\x04\x00\x2d\x00\x38\x00\x39\x00\x3a\x00\x01\x00\x2a\x00\x03\x00\x00\x00\x2d\x00\x06\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x00\x00\x0d\x00\x0f\x00\x2e\x00\x0e\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x35\x00\x13\x00\x14\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x12\x00\x01\x00\x14\x00\x03\x00\x0c\x00\x2b\x00\x06\x00\x25\x00\x33\x00\x2f\x00\x28\x00\x04\x00\x04\x00\x0d\x00\x34\x00\x2d\x00\x04\x00\x2f\x00\x30\x00\x31\x00\x04\x00\x33\x00\x34\x00\x35\x00\x33\x00\x0a\x00\x38\x00\x39\x00\x3a\x00\x01\x00\x16\x00\x03\x00\x33\x00\x04\x00\x06\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x28\x00\x0d\x00\x09\x00\x08\x00\x04\x00\x2d\x00\x19\x00\x2f\x00\x30\x00\x31\x00\x3d\x00\x33\x00\x34\x00\x35\x00\x2e\x00\x2b\x00\x38\x00\x39\x00\x3a\x00\x2f\x00\x03\x00\x35\x00\x19\x00\x06\x00\x34\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x0d\x00\x45\x00\x06\x00\x2d\x00\x2d\x00\x2f\x00\x3e\x00\x2b\x00\x31\x00\x33\x00\x34\x00\x35\x00\x11\x00\x2b\x00\x38\x00\x39\x00\x3a\x00\x2f\x00\x03\x00\x45\x00\x11\x00\x06\x00\x34\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x0d\x00\x09\x00\x3e\x00\x32\x00\x2d\x00\x04\x00\x2f\x00\x36\x00\x37\x00\x08\x00\x33\x00\x34\x00\x35\x00\x3c\x00\x3e\x00\x38\x00\x39\x00\x3a\x00\x41\x00\x0e\x00\x13\x00\x16\x00\x05\x00\x3c\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x3f\x00\x1e\x00\x2e\x00\x2d\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x38\x00\x3e\x00\x3a\x00\x45\x00\x45\x00\x07\x00\x45\x00\x14\x00\x17\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x3e\x00\x45\x00\x1e\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x3b\x00\x2c\x00\x12\x00\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x35\x00\x3d\x00\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x23\x00\x0d\x00\x1d\x00\x26\x00\x27\x00\x14\x00\x29\x00\x24\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x40\x00\x2c\x00\x11\x00\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x09\x00\x35\x00\x0e\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x16\x00\x0d\x00\x19\x00\x05\x00\x3c\x00\x1e\x00\x3f\x00\x1c\x00\x12\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x45\x00\x2c\x00\x45\x00\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x46\x00\x35\x00\x23\x00\x46\x00\x1a\x00\x29\x00\x23\x00\x41\x00\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x35\x00\xff\xff\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\xff\xff\xff\xff\x26\x00\x27\x00\x16\x00\x29\x00\xff\xff\xff\xff\x2c\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x46\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\x16\x00\x2e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\x16\x00\x2e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\x16\x00\x2e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\x16\x00\x2e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\xff\xff\x2e\x00\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x2c\x00\x16\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\xff\xff\xff\xff\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x35\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\x16\x00\x2e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\xff\xff\x2e\x00\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\x16\x00\x2e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\xff\xff\x2e\x00\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\x16\x00\x2e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\xff\xff\x2e\x00\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\x16\x00\x2e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\xff\xff\x2e\x00\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\x16\x00\x2e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\xff\xff\x2e\x00\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\x16\x00\x2e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\xff\xff\x2e\x00\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\x16\x00\x2e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\xff\xff\x2e\x00\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\x16\x00\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\xff\xff\x2e\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\x35\x00\x16\x00\x2e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\xff\xff\x2e\x00\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\x16\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\x16\x00\x2e\x00\x27\x00\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\x35\x00\x2e\x00\x16\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\x28\x00\x29\x00\x2a\x00\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2a\x00\x35\x00\xff\xff\x16\x00\x2e\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2a\x00\xff\xff\xff\xff\xff\xff\x2e\x00\x16\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
-
-happyTable :: HappyAddr
-happyTable = HappyA# "\x00\x00\x89\x00\x42\x00\x5f\x00\x43\x00\x60\x00\x65\x00\x44\x00\x73\x00\xd3\x00\xc0\x00\x0d\x00\x62\x00\x6e\x00\x45\x00\x0e\x00\x85\xff\xd4\x00\x87\x00\x85\xff\x5b\x00\x88\x00\x10\x00\x8a\x00\x80\x00\x81\x00\x8b\x00\xd8\x00\x8c\x00\x61\x00\x8d\x00\x8e\x00\x42\x00\x63\x00\x43\x00\x55\x00\xbb\x00\x44\x00\x68\x00\xc4\x00\x5d\x00\x47\x00\xd0\x00\xd1\x00\x45\x00\x8f\x00\x48\x00\x44\x00\x49\x00\x4a\x00\x4b\x00\x90\x00\x4c\x00\x4d\x00\x4e\x00\x44\x00\x70\x00\x4f\x00\x50\x00\x51\x00\x07\x00\xc7\x00\x28\x00\x07\x00\x46\x00\x11\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x47\x00\xba\x00\xbb\x00\x80\x00\x81\x00\x48\x00\xbc\x00\x49\x00\x4a\x00\x4b\x00\xd4\x00\x4c\x00\x4d\x00\x4e\x00\x6e\x00\x48\x00\x4f\x00\x50\x00\x51\x00\x42\x00\x7c\x00\x43\x00\x5b\x00\x48\x00\x44\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x1a\x00\x45\x00\xb8\x00\x3f\x00\x65\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\xb0\x00\x5c\x00\x5d\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x1b\x00\x42\x00\x1c\x00\x43\x00\xbe\x00\xae\x00\x44\x00\x57\x00\x55\x00\x70\x00\x47\x00\x57\x00\x28\x00\x45\x00\x71\x00\x48\x00\x6e\x00\x49\x00\x4a\x00\x4b\x00\x59\x00\x4c\x00\x4d\x00\x4e\x00\x21\x00\x07\x00\x4f\x00\x50\x00\x51\x00\x42\x00\x5a\x00\x43\x00\x23\x00\xbb\x00\x44\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x47\x00\x45\x00\x09\x00\x0b\x00\x6e\x00\x48\x00\x83\x00\x49\x00\x4a\x00\x4b\x00\xc0\x00\x4c\x00\x4d\x00\x4e\x00\x3f\x00\xb2\x00\x4f\x00\x50\x00\x51\x00\x70\x00\x43\x00\x40\x00\x83\x00\x44\x00\x71\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x45\x00\x55\x00\x44\x00\x48\x00\xbc\x00\x49\x00\xc2\x00\xd0\x00\xbd\x00\x4c\x00\x4d\x00\x4e\x00\x7d\x00\x6f\x00\x4f\x00\x50\x00\x51\x00\x70\x00\x43\x00\x55\x00\x7d\x00\x44\x00\x71\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x45\x00\x7e\x00\xca\x00\x1e\x00\x48\x00\x84\x00\x49\x00\x1f\x00\x20\x00\x85\x00\x4c\x00\x4d\x00\x4e\x00\x21\x00\xcc\x00\x4f\x00\x50\x00\x51\x00\x07\x00\x7f\x00\x86\x00\x82\x00\x91\x00\x92\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x93\x00\x94\x00\x9b\x00\x48\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x4f\x00\xb0\x00\x51\x00\x55\x00\x55\x00\xb2\x00\x55\x00\xb4\x00\xb5\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\xb6\x00\x55\x00\x94\x00\x29\x00\xd7\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\xb7\x00\x3e\x00\x59\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x09\x00\x40\x00\xc0\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0e\x00\x0d\x00\x17\x00\x62\x00\x19\x00\x10\x00\x67\x00\x0b\x00\x78\x00\x29\x00\xcd\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\xd7\x00\x3e\x00\x7d\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x7e\x00\x40\x00\x7f\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0e\x00\x82\x00\xd5\x00\x83\x00\x91\x00\x92\x00\x94\x00\x93\x00\x95\x00\x59\x00\x29\x00\xce\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x55\x00\x3e\x00\x55\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xff\xff\x40\x00\x23\x00\xff\xff\x09\x00\x0b\x00\x0d\x00\x07\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\xc6\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\xca\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x74\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x95\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x6a\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x6c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x96\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x19\x00\x10\x00\x29\x00\x0b\x00\x00\x00\x00\x00\x1a\x00\x97\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xf5\xff\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x98\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x76\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x29\x00\x3f\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\xcc\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x9b\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x29\x00\x3f\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x9c\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x9d\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x29\x00\x3f\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x9e\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x9f\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x29\x00\x3f\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\xa0\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x78\x00\x40\x00\x00\x00\x00\x00\xa1\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x29\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x7a\x00\x00\x00\x00\x00\x3f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x00\x40\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x29\x00\x3f\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\xa3\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x29\x00\x3f\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\xa5\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x29\x00\x3f\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x79\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x29\x00\x3f\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x69\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x29\x00\x3f\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x73\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x29\x00\x3f\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x29\x00\x3f\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xa7\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x29\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\xc2\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\xc3\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x40\x00\x29\x00\x3f\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xa8\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x29\x00\x00\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\xa9\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x29\x00\x3f\x00\xaa\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x40\x00\x3f\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\xab\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x00\x3d\x00\x40\x00\x00\x00\x29\x00\x3f\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb7\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
-
-happyReduceArr = Happy_Data_Array.array (5, 134) [
-	(5 , happyReduce_5),
-	(6 , happyReduce_6),
-	(7 , happyReduce_7),
-	(8 , happyReduce_8),
-	(9 , happyReduce_9),
-	(10 , happyReduce_10),
-	(11 , happyReduce_11),
-	(12 , happyReduce_12),
-	(13 , happyReduce_13),
-	(14 , happyReduce_14),
-	(15 , happyReduce_15),
-	(16 , happyReduce_16),
-	(17 , happyReduce_17),
-	(18 , happyReduce_18),
-	(19 , happyReduce_19),
-	(20 , happyReduce_20),
-	(21 , happyReduce_21),
-	(22 , happyReduce_22),
-	(23 , happyReduce_23),
-	(24 , happyReduce_24),
-	(25 , happyReduce_25),
-	(26 , happyReduce_26),
-	(27 , happyReduce_27),
-	(28 , happyReduce_28),
-	(29 , happyReduce_29),
-	(30 , happyReduce_30),
-	(31 , happyReduce_31),
-	(32 , happyReduce_32),
-	(33 , happyReduce_33),
-	(34 , happyReduce_34),
-	(35 , happyReduce_35),
-	(36 , happyReduce_36),
-	(37 , happyReduce_37),
-	(38 , happyReduce_38),
-	(39 , happyReduce_39),
-	(40 , happyReduce_40),
-	(41 , happyReduce_41),
-	(42 , happyReduce_42),
-	(43 , happyReduce_43),
-	(44 , happyReduce_44),
-	(45 , happyReduce_45),
-	(46 , happyReduce_46),
-	(47 , happyReduce_47),
-	(48 , happyReduce_48),
-	(49 , happyReduce_49),
-	(50 , happyReduce_50),
-	(51 , happyReduce_51),
-	(52 , happyReduce_52),
-	(53 , happyReduce_53),
-	(54 , happyReduce_54),
-	(55 , happyReduce_55),
-	(56 , happyReduce_56),
-	(57 , happyReduce_57),
-	(58 , happyReduce_58),
-	(59 , happyReduce_59),
-	(60 , happyReduce_60),
-	(61 , happyReduce_61),
-	(62 , happyReduce_62),
-	(63 , happyReduce_63),
-	(64 , happyReduce_64),
-	(65 , happyReduce_65),
-	(66 , happyReduce_66),
-	(67 , happyReduce_67),
-	(68 , happyReduce_68),
-	(69 , happyReduce_69),
-	(70 , happyReduce_70),
-	(71 , happyReduce_71),
-	(72 , happyReduce_72),
-	(73 , happyReduce_73),
-	(74 , happyReduce_74),
-	(75 , happyReduce_75),
-	(76 , happyReduce_76),
-	(77 , happyReduce_77),
-	(78 , happyReduce_78),
-	(79 , happyReduce_79),
-	(80 , happyReduce_80),
-	(81 , happyReduce_81),
-	(82 , happyReduce_82),
-	(83 , happyReduce_83),
-	(84 , happyReduce_84),
-	(85 , happyReduce_85),
-	(86 , happyReduce_86),
-	(87 , happyReduce_87),
-	(88 , happyReduce_88),
-	(89 , happyReduce_89),
-	(90 , happyReduce_90),
-	(91 , happyReduce_91),
-	(92 , happyReduce_92),
-	(93 , happyReduce_93),
-	(94 , happyReduce_94),
-	(95 , happyReduce_95),
-	(96 , happyReduce_96),
-	(97 , happyReduce_97),
-	(98 , happyReduce_98),
-	(99 , happyReduce_99),
-	(100 , happyReduce_100),
-	(101 , happyReduce_101),
-	(102 , happyReduce_102),
-	(103 , happyReduce_103),
-	(104 , happyReduce_104),
-	(105 , happyReduce_105),
-	(106 , happyReduce_106),
-	(107 , happyReduce_107),
-	(108 , happyReduce_108),
-	(109 , happyReduce_109),
-	(110 , happyReduce_110),
-	(111 , happyReduce_111),
-	(112 , happyReduce_112),
-	(113 , happyReduce_113),
-	(114 , happyReduce_114),
-	(115 , happyReduce_115),
-	(116 , happyReduce_116),
-	(117 , happyReduce_117),
-	(118 , happyReduce_118),
-	(119 , happyReduce_119),
-	(120 , happyReduce_120),
-	(121 , happyReduce_121),
-	(122 , happyReduce_122),
-	(123 , happyReduce_123),
-	(124 , happyReduce_124),
-	(125 , happyReduce_125),
-	(126 , happyReduce_126),
-	(127 , happyReduce_127),
-	(128 , happyReduce_128),
-	(129 , happyReduce_129),
-	(130 , happyReduce_130),
-	(131 , happyReduce_131),
-	(132 , happyReduce_132),
-	(133 , happyReduce_133),
-	(134 , happyReduce_134)
-	]
-
-happy_n_terms = 71 :: Int
-happy_n_nonterms = 54 :: Int
-
-happyReduce_5 = happySpecReduce_1  0# happyReduction_5
-happyReduction_5 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn8
-		 (PosInteger (mkPosToken happy_var_1)
-	)}
-
-happyReduce_6 = happySpecReduce_1  1# happyReduction_6
-happyReduction_6 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn9
-		 (PosDouble (mkPosToken happy_var_1)
-	)}
-
-happyReduce_7 = happySpecReduce_1  2# happyReduction_7
-happyReduction_7 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn10
-		 (PosReal (mkPosToken happy_var_1)
-	)}
-
-happyReduce_8 = happySpecReduce_1  3# happyReduction_8
-happyReduction_8 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn11
-		 (PosString (mkPosToken happy_var_1)
-	)}
-
-happyReduce_9 = happySpecReduce_1  4# happyReduction_9
-happyReduction_9 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn12
-		 (PosIdent (mkPosToken happy_var_1)
-	)}
-
-happyReduce_10 = happySpecReduce_1  5# happyReduction_10
-happyReduction_10 happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	happyIn13
-		 (Module ((mkCatSpan happy_var_1)) (reverse happy_var_1)
-	)}
-
-happyReduce_11 = happyReduce 4# 6# happyReduction_11
-happyReduction_11 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut12 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { happy_var_3 -> 
-	case happyOut57 happy_x_4 of { happy_var_4 -> 
-	happyIn14
-		 (EnumDecl ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkTokenSpan happy_var_3) >- (mkCatSpan happy_var_4)) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_12 = happySpecReduce_1  6# happyReduction_12
-happyReduction_12 happy_x_1
-	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
-	happyIn14
-		 (ElementDecl ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_13 = happyReduce 8# 7# happyReduction_13
-happyReduction_13 (happy_x_8 `HappyStk`
-	happy_x_7 `HappyStk`
-	happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut19 happy_x_1 of { happy_var_1 -> 
-	case happyOut26 happy_x_2 of { happy_var_2 -> 
-	case happyOut12 happy_x_3 of { happy_var_3 -> 
-	case happyOut22 happy_x_4 of { happy_var_4 -> 
-	case happyOut23 happy_x_5 of { happy_var_5 -> 
-	case happyOut27 happy_x_6 of { happy_var_6 -> 
-	case happyOut24 happy_x_7 of { happy_var_7 -> 
-	case happyOut20 happy_x_8 of { happy_var_8 -> 
-	happyIn15
-		 (Clafer ((mkCatSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkCatSpan happy_var_3) >- (mkCatSpan happy_var_4) >- (mkCatSpan happy_var_5) >- (mkCatSpan happy_var_6) >- (mkCatSpan happy_var_7) >- (mkCatSpan happy_var_8)) happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7 happy_var_8
-	) `HappyStk` happyRest}}}}}}}}
-
-happyReduce_14 = happySpecReduce_3  8# happyReduction_14
-happyReduction_14 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut59 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { happy_var_3 -> 
-	happyIn16
-		 (Constraint ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkTokenSpan happy_var_3)) (reverse happy_var_2)
-	)}}}
-
-happyReduce_15 = happyReduce 4# 9# happyReduction_15
-happyReduction_15 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut59 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { happy_var_4 -> 
-	happyIn17
-		 (Assertion ((mkTokenSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3) >- (mkTokenSpan happy_var_4)) (reverse happy_var_3)
-	) `HappyStk` happyRest}}}}
-
-happyReduce_16 = happySpecReduce_3  10# happyReduction_16
-happyReduction_16 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut59 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { happy_var_3 -> 
-	happyIn18
-		 (Goal ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkTokenSpan happy_var_3)) (reverse happy_var_2)
-	)}}}
-
-happyReduce_17 = happySpecReduce_0  11# happyReduction_17
-happyReduction_17  =  happyIn19
-		 (AbstractEmpty noSpan
-	)
-
-happyReduce_18 = happySpecReduce_1  11# happyReduction_18
-happyReduction_18 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn19
-		 (Abstract ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_19 = happySpecReduce_0  12# happyReduction_19
-happyReduction_19  =  happyIn20
-		 (ElementsEmpty noSpan
-	)
-
-happyReduce_20 = happySpecReduce_3  12# happyReduction_20
-happyReduction_20 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut58 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { happy_var_3 -> 
-	happyIn20
-		 (ElementsList ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkTokenSpan happy_var_3)) (reverse happy_var_2)
-	)}}}
-
-happyReduce_21 = happySpecReduce_1  13# happyReduction_21
-happyReduction_21 happy_x_1
-	 =  case happyOut15 happy_x_1 of { happy_var_1 -> 
-	happyIn21
-		 (Subclafer ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_22 = happyReduce 4# 13# happyReduction_22
-happyReduction_22 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut30 happy_x_2 of { happy_var_2 -> 
-	case happyOut27 happy_x_3 of { happy_var_3 -> 
-	case happyOut20 happy_x_4 of { happy_var_4 -> 
-	happyIn21
-		 (ClaferUse ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkCatSpan happy_var_3) >- (mkCatSpan happy_var_4)) happy_var_2 happy_var_3 happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_23 = happySpecReduce_1  13# happyReduction_23
-happyReduction_23 happy_x_1
-	 =  case happyOut16 happy_x_1 of { happy_var_1 -> 
-	happyIn21
-		 (Subconstraint ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_24 = happySpecReduce_1  13# happyReduction_24
-happyReduction_24 happy_x_1
-	 =  case happyOut18 happy_x_1 of { happy_var_1 -> 
-	happyIn21
-		 (Subgoal ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_25 = happySpecReduce_1  13# happyReduction_25
-happyReduction_25 happy_x_1
-	 =  case happyOut17 happy_x_1 of { happy_var_1 -> 
-	happyIn21
-		 (SubAssertion ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_26 = happySpecReduce_0  14# happyReduction_26
-happyReduction_26  =  happyIn22
-		 (SuperEmpty noSpan
-	)
-
-happyReduce_27 = happySpecReduce_2  14# happyReduction_27
-happyReduction_27 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut49 happy_x_2 of { happy_var_2 -> 
-	happyIn22
-		 (SuperSome ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
-	)}}
-
-happyReduce_28 = happySpecReduce_0  15# happyReduction_28
-happyReduction_28  =  happyIn23
-		 (ReferenceEmpty noSpan
-	)
-
-happyReduce_29 = happySpecReduce_2  15# happyReduction_29
-happyReduction_29 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut46 happy_x_2 of { happy_var_2 -> 
-	happyIn23
-		 (ReferenceSet ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
-	)}}
-
-happyReduce_30 = happySpecReduce_2  15# happyReduction_30
-happyReduction_30 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut46 happy_x_2 of { happy_var_2 -> 
-	happyIn23
-		 (ReferenceBag ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
-	)}}
-
-happyReduce_31 = happySpecReduce_0  16# happyReduction_31
-happyReduction_31  =  happyIn24
-		 (InitEmpty noSpan
-	)
-
-happyReduce_32 = happySpecReduce_2  16# happyReduction_32
-happyReduction_32 happy_x_2
-	happy_x_1
-	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
-	case happyOut31 happy_x_2 of { happy_var_2 -> 
-	happyIn24
-		 (InitSome ((mkCatSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_1 happy_var_2
-	)}}
-
-happyReduce_33 = happySpecReduce_1  17# happyReduction_33
-happyReduction_33 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn25
-		 (InitConstant ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_34 = happySpecReduce_1  17# happyReduction_34
-happyReduction_34 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn25
-		 (InitDefault ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_35 = happySpecReduce_0  18# happyReduction_35
-happyReduction_35  =  happyIn26
-		 (GCardEmpty noSpan
-	)
-
-happyReduce_36 = happySpecReduce_1  18# happyReduction_36
-happyReduction_36 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn26
-		 (GCardXor ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_37 = happySpecReduce_1  18# happyReduction_37
-happyReduction_37 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn26
-		 (GCardOr ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_38 = happySpecReduce_1  18# happyReduction_38
-happyReduction_38 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn26
-		 (GCardMux ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_39 = happySpecReduce_1  18# happyReduction_39
-happyReduction_39 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn26
-		 (GCardOpt ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_40 = happySpecReduce_1  18# happyReduction_40
-happyReduction_40 happy_x_1
-	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
-	happyIn26
-		 (GCardInterval ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_41 = happySpecReduce_0  19# happyReduction_41
-happyReduction_41  =  happyIn27
-		 (CardEmpty noSpan
-	)
-
-happyReduce_42 = happySpecReduce_1  19# happyReduction_42
-happyReduction_42 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn27
-		 (CardLone ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_43 = happySpecReduce_1  19# happyReduction_43
-happyReduction_43 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn27
-		 (CardSome ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_44 = happySpecReduce_1  19# happyReduction_44
-happyReduction_44 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn27
-		 (CardAny ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_45 = happySpecReduce_1  19# happyReduction_45
-happyReduction_45 happy_x_1
-	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
-	happyIn27
-		 (CardNum ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_46 = happySpecReduce_1  19# happyReduction_46
-happyReduction_46 happy_x_1
-	 =  case happyOut28 happy_x_1 of { happy_var_1 -> 
-	happyIn27
-		 (CardInterval ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_47 = happySpecReduce_3  20# happyReduction_47
-happyReduction_47 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut29 happy_x_3 of { happy_var_3 -> 
-	happyIn28
-		 (NCard ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_48 = happySpecReduce_1  21# happyReduction_48
-happyReduction_48 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn29
-		 (ExIntegerAst ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_49 = happySpecReduce_1  21# happyReduction_49
-happyReduction_49 happy_x_1
-	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
-	happyIn29
-		 (ExIntegerNum ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_50 = happySpecReduce_1  22# happyReduction_50
-happyReduction_50 happy_x_1
-	 =  case happyOut61 happy_x_1 of { happy_var_1 -> 
-	happyIn30
-		 (Path ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_51 = happyReduce 5# 23# happyReduction_51
-happyReduction_51 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut51 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { happy_var_4 -> 
-	case happyOut31 happy_x_5 of { happy_var_5 -> 
-	happyIn31
-		 (EDeclAllDisj ((mkTokenSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3) >- (mkTokenSpan happy_var_4) >- (mkCatSpan happy_var_5)) happy_var_3 happy_var_5
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_52 = happyReduce 4# 23# happyReduction_52
-happyReduction_52 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut51 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { happy_var_3 -> 
-	case happyOut31 happy_x_4 of { happy_var_4 -> 
-	happyIn31
-		 (EDeclAll ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkTokenSpan happy_var_3) >- (mkCatSpan happy_var_4)) happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_53 = happyReduce 5# 23# happyReduction_53
-happyReduction_53 (happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut52 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut51 happy_x_3 of { happy_var_3 -> 
-	case happyOutTok happy_x_4 of { happy_var_4 -> 
-	case happyOut31 happy_x_5 of { happy_var_5 -> 
-	happyIn31
-		 (EDeclQuantDisj ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3) >- (mkTokenSpan happy_var_4) >- (mkCatSpan happy_var_5)) happy_var_1 happy_var_3 happy_var_5
-	) `HappyStk` happyRest}}}}}
-
-happyReduce_54 = happyReduce 4# 23# happyReduction_54
-happyReduction_54 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut52 happy_x_1 of { happy_var_1 -> 
-	case happyOut51 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { happy_var_3 -> 
-	case happyOut31 happy_x_4 of { happy_var_4 -> 
-	happyIn31
-		 (EDeclQuant ((mkCatSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkTokenSpan happy_var_3) >- (mkCatSpan happy_var_4)) happy_var_1 happy_var_2 happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_55 = happySpecReduce_1  23# happyReduction_55
-happyReduction_55 happy_x_1
-	 =  case happyOut32 happy_x_1 of { happy_var_1 -> 
-	happyIn31
-		 (happy_var_1
-	)}
-
-happyReduce_56 = happySpecReduce_2  24# happyReduction_56
-happyReduction_56 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut33 happy_x_2 of { happy_var_2 -> 
-	happyIn32
-		 (EGMax ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
-	)}}
-
-happyReduce_57 = happySpecReduce_2  24# happyReduction_57
-happyReduction_57 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut33 happy_x_2 of { happy_var_2 -> 
-	happyIn32
-		 (EGMin ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
-	)}}
-
-happyReduce_58 = happySpecReduce_3  24# happyReduction_58
-happyReduction_58 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut32 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut33 happy_x_3 of { happy_var_3 -> 
-	happyIn32
-		 (EIff ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_59 = happySpecReduce_1  24# happyReduction_59
-happyReduction_59 happy_x_1
-	 =  case happyOut33 happy_x_1 of { happy_var_1 -> 
-	happyIn32
-		 (happy_var_1
-	)}
-
-happyReduce_60 = happySpecReduce_3  25# happyReduction_60
-happyReduction_60 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut33 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut34 happy_x_3 of { happy_var_3 -> 
-	happyIn33
-		 (EImplies ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_61 = happySpecReduce_1  25# happyReduction_61
-happyReduction_61 happy_x_1
-	 =  case happyOut34 happy_x_1 of { happy_var_1 -> 
-	happyIn33
-		 (happy_var_1
-	)}
-
-happyReduce_62 = happySpecReduce_3  26# happyReduction_62
-happyReduction_62 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut34 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut35 happy_x_3 of { happy_var_3 -> 
-	happyIn34
-		 (EOr ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_63 = happySpecReduce_1  26# happyReduction_63
-happyReduction_63 happy_x_1
-	 =  case happyOut35 happy_x_1 of { happy_var_1 -> 
-	happyIn34
-		 (happy_var_1
-	)}
-
-happyReduce_64 = happySpecReduce_3  27# happyReduction_64
-happyReduction_64 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut35 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut36 happy_x_3 of { happy_var_3 -> 
-	happyIn35
-		 (EXor ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_65 = happySpecReduce_1  27# happyReduction_65
-happyReduction_65 happy_x_1
-	 =  case happyOut36 happy_x_1 of { happy_var_1 -> 
-	happyIn35
-		 (happy_var_1
-	)}
-
-happyReduce_66 = happySpecReduce_3  28# happyReduction_66
-happyReduction_66 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut36 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut37 happy_x_3 of { happy_var_3 -> 
-	happyIn36
-		 (EAnd ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_67 = happySpecReduce_1  28# happyReduction_67
-happyReduction_67 happy_x_1
-	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
-	happyIn36
-		 (happy_var_1
-	)}
-
-happyReduce_68 = happySpecReduce_2  29# happyReduction_68
-happyReduction_68 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut38 happy_x_2 of { happy_var_2 -> 
-	happyIn37
-		 (ENeg ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
-	)}}
-
-happyReduce_69 = happySpecReduce_1  29# happyReduction_69
-happyReduction_69 happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	happyIn37
-		 (happy_var_1
-	)}
-
-happyReduce_70 = happySpecReduce_3  30# happyReduction_70
-happyReduction_70 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut39 happy_x_3 of { happy_var_3 -> 
-	happyIn38
-		 (ELt ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_71 = happySpecReduce_3  30# happyReduction_71
-happyReduction_71 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut39 happy_x_3 of { happy_var_3 -> 
-	happyIn38
-		 (EGt ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_72 = happySpecReduce_3  30# happyReduction_72
-happyReduction_72 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut39 happy_x_3 of { happy_var_3 -> 
-	happyIn38
-		 (EEq ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_73 = happySpecReduce_3  30# happyReduction_73
-happyReduction_73 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut39 happy_x_3 of { happy_var_3 -> 
-	happyIn38
-		 (ELte ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_74 = happySpecReduce_3  30# happyReduction_74
-happyReduction_74 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut39 happy_x_3 of { happy_var_3 -> 
-	happyIn38
-		 (EGte ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_75 = happySpecReduce_3  30# happyReduction_75
-happyReduction_75 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut39 happy_x_3 of { happy_var_3 -> 
-	happyIn38
-		 (ENeq ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_76 = happySpecReduce_3  30# happyReduction_76
-happyReduction_76 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut39 happy_x_3 of { happy_var_3 -> 
-	happyIn38
-		 (EIn ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_77 = happyReduce 4# 30# happyReduction_77
-happyReduction_77 (happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOut38 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { happy_var_3 -> 
-	case happyOut39 happy_x_4 of { happy_var_4 -> 
-	happyIn38
-		 (ENin ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkTokenSpan happy_var_3) >- (mkCatSpan happy_var_4)) happy_var_1 happy_var_4
-	) `HappyStk` happyRest}}}}
-
-happyReduce_78 = happySpecReduce_1  30# happyReduction_78
-happyReduction_78 happy_x_1
-	 =  case happyOut39 happy_x_1 of { happy_var_1 -> 
-	happyIn38
-		 (happy_var_1
-	)}
-
-happyReduce_79 = happySpecReduce_2  31# happyReduction_79
-happyReduction_79 happy_x_2
-	happy_x_1
-	 =  case happyOut52 happy_x_1 of { happy_var_1 -> 
-	case happyOut43 happy_x_2 of { happy_var_2 -> 
-	happyIn39
-		 (EQuantExp ((mkCatSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_1 happy_var_2
-	)}}
-
-happyReduce_80 = happySpecReduce_1  31# happyReduction_80
-happyReduction_80 happy_x_1
-	 =  case happyOut40 happy_x_1 of { happy_var_1 -> 
-	happyIn39
-		 (happy_var_1
-	)}
-
-happyReduce_81 = happySpecReduce_3  32# happyReduction_81
-happyReduction_81 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut40 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut41 happy_x_3 of { happy_var_3 -> 
-	happyIn40
-		 (EAdd ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_82 = happySpecReduce_3  32# happyReduction_82
-happyReduction_82 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut40 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut41 happy_x_3 of { happy_var_3 -> 
-	happyIn40
-		 (ESub ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_83 = happySpecReduce_1  32# happyReduction_83
-happyReduction_83 happy_x_1
-	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
-	happyIn40
-		 (happy_var_1
-	)}
-
-happyReduce_84 = happySpecReduce_3  33# happyReduction_84
-happyReduction_84 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut42 happy_x_3 of { happy_var_3 -> 
-	happyIn41
-		 (EMul ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_85 = happySpecReduce_3  33# happyReduction_85
-happyReduction_85 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut42 happy_x_3 of { happy_var_3 -> 
-	happyIn41
-		 (EDiv ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_86 = happySpecReduce_3  33# happyReduction_86
-happyReduction_86 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut42 happy_x_3 of { happy_var_3 -> 
-	happyIn41
-		 (ERem ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_87 = happySpecReduce_1  33# happyReduction_87
-happyReduction_87 happy_x_1
-	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
-	happyIn41
-		 (happy_var_1
-	)}
-
-happyReduce_88 = happySpecReduce_2  34# happyReduction_88
-happyReduction_88 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut43 happy_x_2 of { happy_var_2 -> 
-	happyIn42
-		 (ESum ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
-	)}}
-
-happyReduce_89 = happySpecReduce_2  34# happyReduction_89
-happyReduction_89 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut43 happy_x_2 of { happy_var_2 -> 
-	happyIn42
-		 (EProd ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
-	)}}
-
-happyReduce_90 = happySpecReduce_2  34# happyReduction_90
-happyReduction_90 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut43 happy_x_2 of { happy_var_2 -> 
-	happyIn42
-		 (ECard ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
-	)}}
-
-happyReduce_91 = happySpecReduce_2  34# happyReduction_91
-happyReduction_91 happy_x_2
-	happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut43 happy_x_2 of { happy_var_2 -> 
-	happyIn42
-		 (EMinExp ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
-	)}}
-
-happyReduce_92 = happySpecReduce_1  34# happyReduction_92
-happyReduction_92 happy_x_1
-	 =  case happyOut43 happy_x_1 of { happy_var_1 -> 
-	happyIn42
-		 (happy_var_1
-	)}
-
-happyReduce_93 = happyReduce 6# 35# happyReduction_93
-happyReduction_93 (happy_x_6 `HappyStk`
-	happy_x_5 `HappyStk`
-	happy_x_4 `HappyStk`
-	happy_x_3 `HappyStk`
-	happy_x_2 `HappyStk`
-	happy_x_1 `HappyStk`
-	happyRest)
-	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
-	case happyOut43 happy_x_2 of { happy_var_2 -> 
-	case happyOutTok happy_x_3 of { happy_var_3 -> 
-	case happyOut43 happy_x_4 of { happy_var_4 -> 
-	case happyOutTok happy_x_5 of { happy_var_5 -> 
-	case happyOut44 happy_x_6 of { happy_var_6 -> 
-	happyIn43
-		 (EImpliesElse ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkTokenSpan happy_var_3) >- (mkCatSpan happy_var_4) >- (mkTokenSpan happy_var_5) >- (mkCatSpan happy_var_6)) happy_var_2 happy_var_4 happy_var_6
-	) `HappyStk` happyRest}}}}}}
-
-happyReduce_94 = happySpecReduce_1  35# happyReduction_94
-happyReduction_94 happy_x_1
-	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
-	happyIn43
-		 (happy_var_1
-	)}
-
-happyReduce_95 = happySpecReduce_3  36# happyReduction_95
-happyReduction_95 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut45 happy_x_3 of { happy_var_3 -> 
-	happyIn44
-		 (EDomain ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_96 = happySpecReduce_1  36# happyReduction_96
-happyReduction_96 happy_x_1
-	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
-	happyIn44
-		 (happy_var_1
-	)}
-
-happyReduce_97 = happySpecReduce_3  37# happyReduction_97
-happyReduction_97 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut46 happy_x_3 of { happy_var_3 -> 
-	happyIn45
-		 (ERange ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_98 = happySpecReduce_1  37# happyReduction_98
-happyReduction_98 happy_x_1
-	 =  case happyOut46 happy_x_1 of { happy_var_1 -> 
-	happyIn45
-		 (happy_var_1
-	)}
-
-happyReduce_99 = happySpecReduce_3  38# happyReduction_99
-happyReduction_99 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut46 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut47 happy_x_3 of { happy_var_3 -> 
-	happyIn46
-		 (EUnion ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_100 = happySpecReduce_3  38# happyReduction_100
-happyReduction_100 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut46 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut47 happy_x_3 of { happy_var_3 -> 
-	happyIn46
-		 (EUnionCom ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_101 = happySpecReduce_1  38# happyReduction_101
-happyReduction_101 happy_x_1
-	 =  case happyOut47 happy_x_1 of { happy_var_1 -> 
-	happyIn46
-		 (happy_var_1
-	)}
-
-happyReduce_102 = happySpecReduce_3  39# happyReduction_102
-happyReduction_102 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut47 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut48 happy_x_3 of { happy_var_3 -> 
-	happyIn47
-		 (EDifference ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_103 = happySpecReduce_1  39# happyReduction_103
-happyReduction_103 happy_x_1
-	 =  case happyOut48 happy_x_1 of { happy_var_1 -> 
-	happyIn47
-		 (happy_var_1
-	)}
-
-happyReduce_104 = happySpecReduce_3  40# happyReduction_104
-happyReduction_104 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut48 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut49 happy_x_3 of { happy_var_3 -> 
-	happyIn48
-		 (EIntersection ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_105 = happySpecReduce_1  40# happyReduction_105
-happyReduction_105 happy_x_1
-	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
-	happyIn48
-		 (happy_var_1
-	)}
-
-happyReduce_106 = happySpecReduce_3  41# happyReduction_106
-happyReduction_106 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut50 happy_x_3 of { happy_var_3 -> 
-	happyIn49
-		 (EJoin ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_107 = happySpecReduce_1  41# happyReduction_107
-happyReduction_107 happy_x_1
-	 =  case happyOut50 happy_x_1 of { happy_var_1 -> 
-	happyIn49
-		 (happy_var_1
-	)}
-
-happyReduce_108 = happySpecReduce_1  42# happyReduction_108
-happyReduction_108 happy_x_1
-	 =  case happyOut30 happy_x_1 of { happy_var_1 -> 
-	happyIn50
-		 (ClaferId ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_109 = happySpecReduce_1  42# happyReduction_109
-happyReduction_109 happy_x_1
-	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
-	happyIn50
-		 (EInt ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_110 = happySpecReduce_1  42# happyReduction_110
-happyReduction_110 happy_x_1
-	 =  case happyOut9 happy_x_1 of { happy_var_1 -> 
-	happyIn50
-		 (EDouble ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_111 = happySpecReduce_1  42# happyReduction_111
-happyReduction_111 happy_x_1
-	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
-	happyIn50
-		 (EReal ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_112 = happySpecReduce_1  42# happyReduction_112
-happyReduction_112 happy_x_1
-	 =  case happyOut11 happy_x_1 of { happy_var_1 -> 
-	happyIn50
-		 (EStr ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_113 = happySpecReduce_3  42# happyReduction_113
-happyReduction_113 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut31 happy_x_2 of { happy_var_2 -> 
-	happyIn50
-		 (happy_var_2
-	)}
-
-happyReduce_114 = happySpecReduce_3  43# happyReduction_114
-happyReduction_114 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut60 happy_x_1 of { happy_var_1 -> 
-	case happyOutTok happy_x_2 of { happy_var_2 -> 
-	case happyOut44 happy_x_3 of { happy_var_3 -> 
-	happyIn51
-		 (Decl ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
-	)}}}
-
-happyReduce_115 = happySpecReduce_1  44# happyReduction_115
-happyReduction_115 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn52
-		 (QuantNo ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_116 = happySpecReduce_1  44# happyReduction_116
-happyReduction_116 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn52
-		 (QuantNot ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_117 = happySpecReduce_1  44# happyReduction_117
-happyReduction_117 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn52
-		 (QuantLone ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_118 = happySpecReduce_1  44# happyReduction_118
-happyReduction_118 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn52
-		 (QuantOne ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_119 = happySpecReduce_1  44# happyReduction_119
-happyReduction_119 happy_x_1
-	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
-	happyIn52
-		 (QuantSome ((mkTokenSpan happy_var_1))
-	)}
-
-happyReduce_120 = happySpecReduce_1  45# happyReduction_120
-happyReduction_120 happy_x_1
-	 =  case happyOut12 happy_x_1 of { happy_var_1 -> 
-	happyIn53
-		 (EnumIdIdent ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_121 = happySpecReduce_1  46# happyReduction_121
-happyReduction_121 happy_x_1
-	 =  case happyOut12 happy_x_1 of { happy_var_1 -> 
-	happyIn54
-		 (ModIdIdent ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_122 = happySpecReduce_1  47# happyReduction_122
-happyReduction_122 happy_x_1
-	 =  case happyOut12 happy_x_1 of { happy_var_1 -> 
-	happyIn55
-		 (LocIdIdent ((mkCatSpan happy_var_1)) happy_var_1
-	)}
-
-happyReduce_123 = happySpecReduce_0  48# happyReduction_123
-happyReduction_123  =  happyIn56
-		 ([]
-	)
-
-happyReduce_124 = happySpecReduce_2  48# happyReduction_124
-happyReduction_124 happy_x_2
-	happy_x_1
-	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
-	case happyOut14 happy_x_2 of { happy_var_2 -> 
-	happyIn56
-		 (flip (:)  happy_var_1 happy_var_2
-	)}}
-
-happyReduce_125 = happySpecReduce_1  49# happyReduction_125
-happyReduction_125 happy_x_1
-	 =  case happyOut53 happy_x_1 of { happy_var_1 -> 
-	happyIn57
-		 ((:[])  happy_var_1
-	)}
-
-happyReduce_126 = happySpecReduce_3  49# happyReduction_126
-happyReduction_126 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut53 happy_x_1 of { happy_var_1 -> 
-	case happyOut57 happy_x_3 of { happy_var_3 -> 
-	happyIn57
-		 ((:)  happy_var_1 happy_var_3
-	)}}
-
-happyReduce_127 = happySpecReduce_0  50# happyReduction_127
-happyReduction_127  =  happyIn58
-		 ([]
-	)
-
-happyReduce_128 = happySpecReduce_2  50# happyReduction_128
-happyReduction_128 happy_x_2
-	happy_x_1
-	 =  case happyOut58 happy_x_1 of { happy_var_1 -> 
-	case happyOut21 happy_x_2 of { happy_var_2 -> 
-	happyIn58
-		 (flip (:)  happy_var_1 happy_var_2
-	)}}
-
-happyReduce_129 = happySpecReduce_0  51# happyReduction_129
-happyReduction_129  =  happyIn59
-		 ([]
-	)
-
-happyReduce_130 = happySpecReduce_2  51# happyReduction_130
-happyReduction_130 happy_x_2
-	happy_x_1
-	 =  case happyOut59 happy_x_1 of { happy_var_1 -> 
-	case happyOut31 happy_x_2 of { happy_var_2 -> 
-	happyIn59
-		 (flip (:)  happy_var_1 happy_var_2
-	)}}
-
-happyReduce_131 = happySpecReduce_1  52# happyReduction_131
-happyReduction_131 happy_x_1
-	 =  case happyOut55 happy_x_1 of { happy_var_1 -> 
-	happyIn60
-		 ((:[])  happy_var_1
-	)}
-
-happyReduce_132 = happySpecReduce_3  52# happyReduction_132
-happyReduction_132 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut55 happy_x_1 of { happy_var_1 -> 
-	case happyOut60 happy_x_3 of { happy_var_3 -> 
-	happyIn60
-		 ((:)  happy_var_1 happy_var_3
-	)}}
-
-happyReduce_133 = happySpecReduce_1  53# happyReduction_133
-happyReduction_133 happy_x_1
-	 =  case happyOut54 happy_x_1 of { happy_var_1 -> 
-	happyIn61
-		 ((:[])  happy_var_1
-	)}
-
-happyReduce_134 = happySpecReduce_3  53# happyReduction_134
-happyReduction_134 happy_x_3
-	happy_x_2
-	happy_x_1
-	 =  case happyOut54 happy_x_1 of { happy_var_1 -> 
-	case happyOut61 happy_x_3 of { happy_var_3 -> 
-	happyIn61
-		 ((:)  happy_var_1 happy_var_3
-	)}}
-
-happyNewToken action sts stk [] =
-	happyDoAction 70# notHappyAtAll action sts stk []
-
-happyNewToken action sts stk (tk:tks) =
-	let cont i = happyDoAction i tk action sts stk tks in
-	case tk of {
-	PT _ (TS _ 1) -> cont 1#;
-	PT _ (TS _ 2) -> cont 2#;
-	PT _ (TS _ 3) -> cont 3#;
-	PT _ (TS _ 4) -> cont 4#;
-	PT _ (TS _ 5) -> cont 5#;
-	PT _ (TS _ 6) -> cont 6#;
-	PT _ (TS _ 7) -> cont 7#;
-	PT _ (TS _ 8) -> cont 8#;
-	PT _ (TS _ 9) -> cont 9#;
-	PT _ (TS _ 10) -> cont 10#;
-	PT _ (TS _ 11) -> cont 11#;
-	PT _ (TS _ 12) -> cont 12#;
-	PT _ (TS _ 13) -> cont 13#;
-	PT _ (TS _ 14) -> cont 14#;
-	PT _ (TS _ 15) -> cont 15#;
-	PT _ (TS _ 16) -> cont 16#;
-	PT _ (TS _ 17) -> cont 17#;
-	PT _ (TS _ 18) -> cont 18#;
-	PT _ (TS _ 19) -> cont 19#;
-	PT _ (TS _ 20) -> cont 20#;
-	PT _ (TS _ 21) -> cont 21#;
-	PT _ (TS _ 22) -> cont 22#;
-	PT _ (TS _ 23) -> cont 23#;
-	PT _ (TS _ 24) -> cont 24#;
-	PT _ (TS _ 25) -> cont 25#;
-	PT _ (TS _ 26) -> cont 26#;
-	PT _ (TS _ 27) -> cont 27#;
-	PT _ (TS _ 28) -> cont 28#;
-	PT _ (TS _ 29) -> cont 29#;
-	PT _ (TS _ 30) -> cont 30#;
-	PT _ (TS _ 31) -> cont 31#;
-	PT _ (TS _ 32) -> cont 32#;
-	PT _ (TS _ 33) -> cont 33#;
-	PT _ (TS _ 34) -> cont 34#;
-	PT _ (TS _ 35) -> cont 35#;
-	PT _ (TS _ 36) -> cont 36#;
-	PT _ (TS _ 37) -> cont 37#;
-	PT _ (TS _ 38) -> cont 38#;
-	PT _ (TS _ 39) -> cont 39#;
-	PT _ (TS _ 40) -> cont 40#;
-	PT _ (TS _ 41) -> cont 41#;
-	PT _ (TS _ 42) -> cont 42#;
-	PT _ (TS _ 43) -> cont 43#;
-	PT _ (TS _ 44) -> cont 44#;
-	PT _ (TS _ 45) -> cont 45#;
-	PT _ (TS _ 46) -> cont 46#;
-	PT _ (TS _ 47) -> cont 47#;
-	PT _ (TS _ 48) -> cont 48#;
-	PT _ (TS _ 49) -> cont 49#;
-	PT _ (TS _ 50) -> cont 50#;
-	PT _ (TS _ 51) -> cont 51#;
-	PT _ (TS _ 52) -> cont 52#;
-	PT _ (TS _ 53) -> cont 53#;
-	PT _ (TS _ 54) -> cont 54#;
-	PT _ (TS _ 55) -> cont 55#;
-	PT _ (TS _ 56) -> cont 56#;
-	PT _ (TS _ 57) -> cont 57#;
-	PT _ (TS _ 58) -> cont 58#;
-	PT _ (TS _ 59) -> cont 59#;
-	PT _ (TS _ 60) -> cont 60#;
-	PT _ (TS _ 61) -> cont 61#;
-	PT _ (TS _ 62) -> cont 62#;
-	PT _ (TS _ 63) -> cont 63#;
-	PT _ (TS _ 64) -> cont 64#;
-	PT _ (T_PosInteger _) -> cont 65#;
-	PT _ (T_PosDouble _) -> cont 66#;
-	PT _ (T_PosReal _) -> cont 67#;
-	PT _ (T_PosString _) -> cont 68#;
-	PT _ (T_PosIdent _) -> cont 69#;
-	_ -> happyError' (tk:tks)
-	}
-
-happyError_ 70# tk tks = happyError' tks
-happyError_ _ tk tks = happyError' (tk:tks)
-
-happyThen :: () => Err a -> (a -> Err b) -> Err b
-happyThen = (thenM)
-happyReturn :: () => a -> Err a
-happyReturn = (returnM)
-happyThen1 m k tks = (thenM) m (\a -> k a tks)
-happyReturn1 :: () => a -> b -> Err a
-happyReturn1 = \a tks -> (returnM) a
-happyError' :: () => [(Token)] -> Err a
-happyError' = happyError
-
-pModule tks = happySomeParser where
-  happySomeParser = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut13 x))
-
-pClafer tks = happySomeParser where
-  happySomeParser = happyThen (happyParse 1# tks) (\x -> happyReturn (happyOut15 x))
-
-pConstraint tks = happySomeParser where
-  happySomeParser = happyThen (happyParse 2# tks) (\x -> happyReturn (happyOut16 x))
-
-pAssertion tks = happySomeParser where
-  happySomeParser = happyThen (happyParse 3# tks) (\x -> happyReturn (happyOut17 x))
-
-pGoal tks = happySomeParser where
-  happySomeParser = happyThen (happyParse 4# tks) (\x -> happyReturn (happyOut18 x))
-
-happySeq = happyDontSeq
-
-
-returnM :: a -> Err a
-returnM = return
-
-thenM :: Err a -> (a -> Err b) -> Err b
-thenM = (>>=)
-
-happyError :: [Token] -> Err a
-happyError ts =
-  Bad (pp ts) $ "syntax error at " ++ tokenPos ts ++ 
-  case ts of
-    [] -> []
-    [Err _] -> " due to lexer error"
-    _ -> " before " ++ unwords (map (id . prToken) (take 4 ts))
-
-myLexer = tokens
-
-gp x@(PT (Pn _ l c) _) = Span (Pos (toInteger l) (toInteger c)) (Pos (toInteger l) (toInteger c + toInteger (length $ prToken x)))
-pp (PT (Pn _ l c) _ :_) = Pos (toInteger l) (toInteger c)
-pp (Err (Pn _ l c) :_) = Pos (toInteger l) (toInteger c)
-pp _ = error "EOF"
-
-mkCatSpan :: (Spannable c) => c -> Span
-mkCatSpan = getSpan
-
-mkTokenSpan :: Token -> Span
-mkTokenSpan = gp
-{-# LINE 1 "templates\GenericTemplate.hs" #-}
-{-# LINE 1 "templates\\GenericTemplate.hs" #-}
-{-# LINE 1 "<built-in>" #-}
-{-# LINE 1 "<command-line>" #-}
-{-# LINE 9 "<command-line>" #-}
-{-# LINE 1 "C:\\dev\\MinGHC-7.10.1\\ghc-7.10.1\\lib/include\\ghcversion.h" #-}
+happyIn13 :: (PosLineComment) -> (HappyAbsSyn )
+happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn13 #-}
+happyOut13 :: (HappyAbsSyn ) -> (PosLineComment)
+happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut13 #-}
+happyIn14 :: (PosBlockComment) -> (HappyAbsSyn )
+happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn14 #-}
+happyOut14 :: (HappyAbsSyn ) -> (PosBlockComment)
+happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut14 #-}
+happyIn15 :: (PosAlloy) -> (HappyAbsSyn )
+happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn15 #-}
+happyOut15 :: (HappyAbsSyn ) -> (PosAlloy)
+happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut15 #-}
+happyIn16 :: (PosChoco) -> (HappyAbsSyn )
+happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn16 #-}
+happyOut16 :: (HappyAbsSyn ) -> (PosChoco)
+happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut16 #-}
+happyIn17 :: (Module) -> (HappyAbsSyn )
+happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn17 #-}
+happyOut17 :: (HappyAbsSyn ) -> (Module)
+happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut17 #-}
+happyIn18 :: (Declaration) -> (HappyAbsSyn )
+happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn18 #-}
+happyOut18 :: (HappyAbsSyn ) -> (Declaration)
+happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut18 #-}
+happyIn19 :: (Clafer) -> (HappyAbsSyn )
+happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn19 #-}
+happyOut19 :: (HappyAbsSyn ) -> (Clafer)
+happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut19 #-}
+happyIn20 :: (Constraint) -> (HappyAbsSyn )
+happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn20 #-}
+happyOut20 :: (HappyAbsSyn ) -> (Constraint)
+happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut20 #-}
+happyIn21 :: (Assertion) -> (HappyAbsSyn )
+happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn21 #-}
+happyOut21 :: (HappyAbsSyn ) -> (Assertion)
+happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut21 #-}
+happyIn22 :: (Goal) -> (HappyAbsSyn )
+happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn22 #-}
+happyOut22 :: (HappyAbsSyn ) -> (Goal)
+happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut22 #-}
+happyIn23 :: (Abstract) -> (HappyAbsSyn )
+happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn23 #-}
+happyOut23 :: (HappyAbsSyn ) -> (Abstract)
+happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut23 #-}
+happyIn24 :: (Elements) -> (HappyAbsSyn )
+happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn24 #-}
+happyOut24 :: (HappyAbsSyn ) -> (Elements)
+happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut24 #-}
+happyIn25 :: (Element) -> (HappyAbsSyn )
+happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn25 #-}
+happyOut25 :: (HappyAbsSyn ) -> (Element)
+happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut25 #-}
+happyIn26 :: (Super) -> (HappyAbsSyn )
+happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn26 #-}
+happyOut26 :: (HappyAbsSyn ) -> (Super)
+happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut26 #-}
+happyIn27 :: (Reference) -> (HappyAbsSyn )
+happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn27 #-}
+happyOut27 :: (HappyAbsSyn ) -> (Reference)
+happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut27 #-}
+happyIn28 :: (Init) -> (HappyAbsSyn )
+happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn28 #-}
+happyOut28 :: (HappyAbsSyn ) -> (Init)
+happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut28 #-}
+happyIn29 :: (InitHow) -> (HappyAbsSyn )
+happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn29 #-}
+happyOut29 :: (HappyAbsSyn ) -> (InitHow)
+happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut29 #-}
+happyIn30 :: (GCard) -> (HappyAbsSyn )
+happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn30 #-}
+happyOut30 :: (HappyAbsSyn ) -> (GCard)
+happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut30 #-}
+happyIn31 :: (Card) -> (HappyAbsSyn )
+happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn31 #-}
+happyOut31 :: (HappyAbsSyn ) -> (Card)
+happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut31 #-}
+happyIn32 :: (NCard) -> (HappyAbsSyn )
+happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn32 #-}
+happyOut32 :: (HappyAbsSyn ) -> (NCard)
+happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut32 #-}
+happyIn33 :: (ExInteger) -> (HappyAbsSyn )
+happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn33 #-}
+happyOut33 :: (HappyAbsSyn ) -> (ExInteger)
+happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut33 #-}
+happyIn34 :: (Name) -> (HappyAbsSyn )
+happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn34 #-}
+happyOut34 :: (HappyAbsSyn ) -> (Name)
+happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut34 #-}
+happyIn35 :: (Exp) -> (HappyAbsSyn )
+happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn35 #-}
+happyOut35 :: (HappyAbsSyn ) -> (Exp)
+happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut35 #-}
+happyIn36 :: (Exp) -> (HappyAbsSyn )
+happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn36 #-}
+happyOut36 :: (HappyAbsSyn ) -> (Exp)
+happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut36 #-}
+happyIn37 :: (Exp) -> (HappyAbsSyn )
+happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn37 #-}
+happyOut37 :: (HappyAbsSyn ) -> (Exp)
+happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut37 #-}
+happyIn38 :: (Exp) -> (HappyAbsSyn )
+happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn38 #-}
+happyOut38 :: (HappyAbsSyn ) -> (Exp)
+happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut38 #-}
+happyIn39 :: (Exp) -> (HappyAbsSyn )
+happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn39 #-}
+happyOut39 :: (HappyAbsSyn ) -> (Exp)
+happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut39 #-}
+happyIn40 :: (Exp) -> (HappyAbsSyn )
+happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn40 #-}
+happyOut40 :: (HappyAbsSyn ) -> (Exp)
+happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut40 #-}
+happyIn41 :: (Exp) -> (HappyAbsSyn )
+happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn41 #-}
+happyOut41 :: (HappyAbsSyn ) -> (Exp)
+happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut41 #-}
+happyIn42 :: (Exp) -> (HappyAbsSyn )
+happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn42 #-}
+happyOut42 :: (HappyAbsSyn ) -> (Exp)
+happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut42 #-}
+happyIn43 :: (Exp) -> (HappyAbsSyn )
+happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn43 #-}
+happyOut43 :: (HappyAbsSyn ) -> (Exp)
+happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut43 #-}
+happyIn44 :: (Exp) -> (HappyAbsSyn )
+happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn44 #-}
+happyOut44 :: (HappyAbsSyn ) -> (Exp)
+happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut44 #-}
+happyIn45 :: (Exp) -> (HappyAbsSyn )
+happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn45 #-}
+happyOut45 :: (HappyAbsSyn ) -> (Exp)
+happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut45 #-}
+happyIn46 :: (Exp) -> (HappyAbsSyn )
+happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn46 #-}
+happyOut46 :: (HappyAbsSyn ) -> (Exp)
+happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut46 #-}
+happyIn47 :: (Exp) -> (HappyAbsSyn )
+happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn47 #-}
+happyOut47 :: (HappyAbsSyn ) -> (Exp)
+happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut47 #-}
+happyIn48 :: (Exp) -> (HappyAbsSyn )
+happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn48 #-}
+happyOut48 :: (HappyAbsSyn ) -> (Exp)
+happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut48 #-}
+happyIn49 :: (Exp) -> (HappyAbsSyn )
+happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn49 #-}
+happyOut49 :: (HappyAbsSyn ) -> (Exp)
+happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut49 #-}
+happyIn50 :: (Exp) -> (HappyAbsSyn )
+happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn50 #-}
+happyOut50 :: (HappyAbsSyn ) -> (Exp)
+happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut50 #-}
+happyIn51 :: (Exp) -> (HappyAbsSyn )
+happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn51 #-}
+happyOut51 :: (HappyAbsSyn ) -> (Exp)
+happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut51 #-}
+happyIn52 :: (Exp) -> (HappyAbsSyn )
+happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn52 #-}
+happyOut52 :: (HappyAbsSyn ) -> (Exp)
+happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut52 #-}
+happyIn53 :: (Exp) -> (HappyAbsSyn )
+happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn53 #-}
+happyOut53 :: (HappyAbsSyn ) -> (Exp)
+happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut53 #-}
+happyIn54 :: (Exp) -> (HappyAbsSyn )
+happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn54 #-}
+happyOut54 :: (HappyAbsSyn ) -> (Exp)
+happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut54 #-}
+happyIn55 :: (Decl) -> (HappyAbsSyn )
+happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn55 #-}
+happyOut55 :: (HappyAbsSyn ) -> (Decl)
+happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut55 #-}
+happyIn56 :: (Quant) -> (HappyAbsSyn )
+happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn56 #-}
+happyOut56 :: (HappyAbsSyn ) -> (Quant)
+happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut56 #-}
+happyIn57 :: (EnumId) -> (HappyAbsSyn )
+happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn57 #-}
+happyOut57 :: (HappyAbsSyn ) -> (EnumId)
+happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut57 #-}
+happyIn58 :: (ModId) -> (HappyAbsSyn )
+happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn58 #-}
+happyOut58 :: (HappyAbsSyn ) -> (ModId)
+happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut58 #-}
+happyIn59 :: (LocId) -> (HappyAbsSyn )
+happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn59 #-}
+happyOut59 :: (HappyAbsSyn ) -> (LocId)
+happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut59 #-}
+happyIn60 :: ([Declaration]) -> (HappyAbsSyn )
+happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn60 #-}
+happyOut60 :: (HappyAbsSyn ) -> ([Declaration])
+happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut60 #-}
+happyIn61 :: ([EnumId]) -> (HappyAbsSyn )
+happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn61 #-}
+happyOut61 :: (HappyAbsSyn ) -> ([EnumId])
+happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut61 #-}
+happyIn62 :: ([Element]) -> (HappyAbsSyn )
+happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn62 #-}
+happyOut62 :: (HappyAbsSyn ) -> ([Element])
+happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut62 #-}
+happyIn63 :: ([Exp]) -> (HappyAbsSyn )
+happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn63 #-}
+happyOut63 :: (HappyAbsSyn ) -> ([Exp])
+happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut63 #-}
+happyIn64 :: ([LocId]) -> (HappyAbsSyn )
+happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn64 #-}
+happyOut64 :: (HappyAbsSyn ) -> ([LocId])
+happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut64 #-}
+happyIn65 :: ([ModId]) -> (HappyAbsSyn )
+happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyIn65 #-}
+happyOut65 :: (HappyAbsSyn ) -> ([ModId])
+happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOut65 #-}
+happyInTok :: (Token) -> (HappyAbsSyn )
+happyInTok x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyInTok #-}
+happyOutTok :: (HappyAbsSyn ) -> (Token)
+happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x
+{-# INLINE happyOutTok #-}
+
+
+happyActOffsets :: HappyAddr
+happyActOffsets = HappyA# "\x00\x00\x24\x01\x1f\x01\x18\x01\x03\x01\xfe\x00\x00\x00\xf4\x00\x00\x00\xf4\x00\x19\x01\xeb\x00\x00\x00\xeb\x00\xdd\xff\x00\x00\xeb\x00\x88\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xee\x00\xee\x00\x0a\x01\xd3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\xfc\x00\xd8\x00\xda\x00\x10\x01\x00\x00\x0e\x05\x00\x00\x6c\x00\x03\x00\x00\x00\x00\x00\xfa\x00\xf3\x00\x90\x00\x01\x01\x11\x00\xef\x00\x00\x00\xa7\x00\xdb\x00\x00\x00\x3b\x00\xaf\x00\x83\x00\xaf\x00\x00\x00\xd8\xff\xaf\x00\x00\x00\xc9\x00\xc9\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x00\x00\xaf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xe7\x00\xfd\xff\xdc\x00\x08\x00\xe5\x00\xb8\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x00\x00\x77\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\x00\xaf\x00\xd0\x00\xb4\x00\x00\x00\xa9\x00\xcf\x00\xcb\x00\x99\x00\x00\x00\xd6\x00\x00\x00\x0e\x05\x96\x00\x52\x00\x00\x00\x97\x00\x95\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x1a\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\xa4\x00\xc9\x00\xc9\x00\xc9\x00\xc9\x00\xc9\x00\xb2\x00\x8e\x00\x92\x00\xc5\x00\x00\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x00\x00\x00\x00\x00\x00\xac\x00\x76\x00\xb3\x00\xb3\x00\x11\x00\xae\x00\xae\x00\x00\x00\x82\x00\x83\x00\x00\x00\x00\x00\x7b\x00\x1a\x00\x5e\x00\x83\x00\xaf\x00\x91\x00\x08\x00\x1a\x00\x1a\x00\x00\x00\x73\x00\x00\x00\x00\x00\x00\x00\x26\x01\x5b\x00\x76\x00\x76\x00\xef\xff\x68\x00\x00\x00\x00\x00\x76\x00\x83\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x54\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x00\x00"#
+
+happyGotoOffsets :: HappyAddr
+happyGotoOffsets = HappyA# "\xf8\xff\x0e\x00\x81\x00\x7c\x00\x64\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x42\x00\x00\x00\x18\x00\x00\x00\x00\x00\x3a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x53\x00\x6a\x00\x00\x00\x57\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x02\x17\x00\x6a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\x05\x00\x00\x00\x00\xea\x03\x0a\x06\x37\x02\xec\x05\x00\x00\xe2\x00\xd7\x05\x00\x00\x03\x03\xd0\x02\x00\x00\x00\x00\x00\x00\xb9\x05\x00\x00\xa4\x05\x00\x00\x00\x00\x00\x00\x00\x00\x04\x02\x00\x00\x12\x00\x0a\x00\x00\x00\xfb\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x47\x00\x00\x00\x00\x00\x00\x00\x09\x00\xcf\x06\x00\x00\x00\x00\x00\x00\x00\x00\x86\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x05\x00\x03\x07\xc9\x06\xc1\x06\xb4\x06\xac\x06\x8e\x06\x79\x06\x3d\x06\x4b\x03\x18\x03\xe5\x02\xb2\x02\x7f\x02\x22\x05\xef\x04\xd4\x04\xa1\x04\x86\x04\x53\x04\x38\x04\x00\x00\xb7\x03\x9c\x03\x69\x03\x36\x03\x9d\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x01\x00\x00\x00\x00\x00\x00\x70\x06\xa1\x00\x9e\x01\x71\x05\x00\x00\x98\x00\x5b\x06\x28\x06\x00\x00\x00\x00\x00\x00\x00\x00\xdc\xff\x67\x01\x21\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x01\x00\x00\x38\x01\x00\x00\x00\x00\x00\x00\x1f\x06\xfe\xff\x05\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+
+happyDefActions :: HappyAddr
+happyDefActions = HappyA# "\x7f\xff\xea\xff\x00\x00\x00\x00\x00\x00\x00\x00\xfa\xff\x00\x00\x79\xff\x00\x00\x00\x00\x00\x00\x79\xff\x00\x00\xd8\xff\xe9\xff\x00\x00\xea\xff\x7e\xff\xe6\xff\xe4\xff\xe2\xff\xe3\xff\xef\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd3\xff\xd5\xff\xd4\xff\xd6\xff\xd7\xff\x00\x00\x79\xff\x00\x00\x8d\xff\x8c\xff\x8b\xff\x8a\xff\x81\xff\x8e\xff\x78\xff\xc4\xff\xc0\xff\xbe\xff\xbc\xff\xba\xff\xb8\xff\xb6\xff\xad\xff\xab\xff\xa8\xff\xa4\xff\x9f\xff\x9d\xff\x9b\xff\x99\xff\x96\xff\x94\xff\x91\xff\x8f\xff\x00\x00\x75\xff\xc9\xff\x00\x00\x00\x00\x00\x00\x00\x00\xeb\xff\x00\x00\x00\x00\x85\xff\x00\x00\x00\x00\x87\xff\x86\xff\x84\xff\x00\x00\x83\xff\x00\x00\xf9\xff\xf8\xff\xf7\xff\xf6\xff\x00\x00\xed\xff\xe1\xff\x00\x00\x00\x00\xd2\xff\xce\xff\xe8\xff\xcd\xff\xcf\xff\xd0\xff\xd1\xff\x00\x00\xca\xff\xcc\xff\xcb\xff\xdf\xff\x00\x00\xec\xff\xa3\xff\xa2\xff\xc2\xff\x00\x00\xc3\xff\x00\x00\x80\xff\x00\x00\x77\xff\x00\x00\x00\x00\xa0\xff\x00\x00\xa1\xff\xb7\xff\x00\x00\x81\xff\xac\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\xff\xbf\xff\xbd\xff\xbb\xff\xb9\xff\x00\x00\xaf\xff\xb1\xff\xb4\xff\xb3\xff\xb2\xff\xb5\xff\xb0\xff\xa9\xff\xaa\xff\xa6\xff\xa7\xff\xa5\xff\x9c\xff\x9a\xff\x97\xff\x98\xff\x95\xff\x93\xff\x92\xff\x90\xff\x00\x00\x00\x00\x74\xff\x89\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\xd2\xff\x00\x00\x00\x00\x82\xff\x7d\xff\xf0\xff\xe5\xff\x7b\xff\xea\xff\x00\x00\xdd\xff\xde\xff\xdc\xff\x00\x00\xc7\xff\x76\xff\x88\xff\x00\x00\xc5\xff\x00\x00\xae\xff\xc6\xff\xc8\xff\x00\x00\xe8\xff\x00\x00\xd9\xff\xda\xff\x7c\xff\x7a\xff\xe7\xff\xdb\xff\xee\xff\x9e\xff"#
+
+happyCheck :: HappyAddr
+happyCheck = HappyA# "\xff\xff\x09\x00\x01\x00\x2b\x00\x03\x00\x16\x00\x09\x00\x04\x00\x07\x00\x04\x00\x00\x00\x04\x00\x09\x00\x1e\x00\x10\x00\x0e\x00\x33\x00\x09\x00\x36\x00\x0b\x00\x37\x00\x38\x00\x05\x00\x14\x00\x00\x00\x0b\x00\x3d\x00\x0a\x00\x13\x00\x0f\x00\x46\x00\x42\x00\x01\x00\x07\x00\x03\x00\x19\x00\x12\x00\x04\x00\x07\x00\x26\x00\x14\x00\x15\x00\x29\x00\x23\x00\x34\x00\x0e\x00\x16\x00\x2e\x00\x18\x00\x30\x00\x31\x00\x32\x00\x2f\x00\x34\x00\x35\x00\x36\x00\x33\x00\x32\x00\x39\x00\x3a\x00\x3b\x00\x38\x00\x03\x00\x42\x00\x39\x00\x22\x00\x07\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x29\x00\x0e\x00\x42\x00\x04\x00\x10\x00\x2e\x00\x37\x00\x30\x00\x31\x00\x32\x00\x31\x00\x34\x00\x35\x00\x36\x00\x35\x00\x04\x00\x39\x00\x3a\x00\x3b\x00\x04\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x01\x00\x15\x00\x03\x00\x2e\x00\x18\x00\x30\x00\x07\x00\x1a\x00\x04\x00\x34\x00\x35\x00\x36\x00\x0e\x00\x0e\x00\x39\x00\x3a\x00\x3b\x00\x0b\x00\x31\x00\x37\x00\x0e\x00\x37\x00\x35\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x0c\x00\x0d\x00\x01\x00\x32\x00\x03\x00\x10\x00\x11\x00\x0d\x00\x07\x00\x26\x00\x39\x00\x0c\x00\x29\x00\x1a\x00\x04\x00\x0e\x00\x3e\x00\x2e\x00\x2c\x00\x30\x00\x31\x00\x32\x00\x00\x00\x34\x00\x35\x00\x36\x00\x0c\x00\x0d\x00\x39\x00\x3a\x00\x3b\x00\x46\x00\x03\x00\x12\x00\x46\x00\x04\x00\x07\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x29\x00\x0e\x00\x07\x00\x17\x00\x18\x00\x2e\x00\x3f\x00\x30\x00\x31\x00\x32\x00\x07\x00\x34\x00\x35\x00\x36\x00\x3f\x00\x2f\x00\x39\x00\x3a\x00\x3b\x00\x33\x00\x12\x00\x3f\x00\x0f\x00\x17\x00\x38\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x01\x00\x06\x00\x03\x00\x2e\x00\x40\x00\x3d\x00\x07\x00\x1f\x00\x2b\x00\x2f\x00\x33\x00\x2e\x00\x3f\x00\x0e\x00\x39\x00\x38\x00\x3b\x00\x46\x00\x46\x00\x2e\x00\x08\x00\x46\x00\x15\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x04\x00\x18\x00\x3f\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x46\x00\x1f\x00\x3c\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x3e\x00\x2e\x00\x13\x00\x30\x00\x1e\x00\x00\x00\x15\x00\x34\x00\x35\x00\x36\x00\x25\x00\x12\x00\x39\x00\x3a\x00\x3b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x17\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x0f\x00\x2f\x00\x17\x00\x18\x00\x1a\x00\x33\x00\x06\x00\x3d\x00\x40\x00\x46\x00\x38\x00\x1f\x00\x1d\x00\x13\x00\x1b\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x46\x00\x30\x00\x4b\x00\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x24\x00\x39\x00\x4b\x00\x42\x00\x1b\x00\x2a\x00\x24\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x24\x00\x11\x00\x28\x00\x27\x00\x28\x00\xff\xff\x2a\x00\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x41\x00\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\xff\xff\x11\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1a\x00\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x39\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1a\x00\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x39\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1a\x00\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x39\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1a\x00\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x39\x00\xff\xff\xff\xff\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1a\x00\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x39\x00\xff\xff\xff\xff\xff\xff\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x24\x00\xff\xff\xff\xff\x27\x00\x28\x00\xff\xff\x2a\x00\xff\xff\xff\xff\x2d\x00\x1a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\xff\xff\xff\xff\x1a\x00\xff\xff\x4b\x00\xff\xff\x39\x00\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\xff\xff\xff\xff\x1a\x00\xff\xff\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\xff\xff\xff\xff\x1a\x00\xff\xff\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\xff\xff\xff\xff\x1a\x00\xff\xff\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\xff\xff\xff\xff\x1a\x00\xff\xff\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\x02\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\x30\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x19\x00\x39\x00\xff\xff\x1c\x00\xff\xff\x1e\x00\xff\xff\x20\x00\x21\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x35\x00\xff\xff\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1a\x00\x30\x00\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\x32\x00\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\x39\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1a\x00\xff\xff\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1a\x00\xff\xff\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1a\x00\xff\xff\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x39\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1a\x00\xff\xff\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x39\x00\xff\xff\xff\xff\xff\xff\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1a\x00\x39\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x39\x00\xff\xff\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1a\x00\xff\xff\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1a\x00\x39\x00\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\x39\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x39\x00\xff\xff\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x1a\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\xff\xff\xff\xff\xff\xff\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x1a\x00\xff\xff\xff\xff\x32\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\x1a\x00\xff\xff\x39\x00\x32\x00\xff\xff\xff\xff\x1a\x00\xff\xff\xff\xff\xff\xff\x39\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\x2d\x00\x2e\x00\xff\xff\xff\xff\x39\x00\x32\x00\x2d\x00\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\x39\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\xff\xff\xff\xff\x32\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"#
+
+happyTable :: HappyAddr
+happyTable = HappyA# "\x00\x00\x10\x00\x42\x00\x73\x00\x43\x00\xd5\x00\x65\x00\x85\x00\x44\x00\x6e\x00\x62\x00\x28\x00\x86\x00\xd6\x00\xda\x00\x45\x00\x1e\x00\x5f\x00\xc2\x00\x60\x00\x1f\x00\x20\x00\x7e\x00\x87\x00\x1a\x00\x0d\x00\x21\x00\x7f\x00\xba\x00\x0e\x00\x55\x00\x07\x00\x42\x00\x44\x00\x43\x00\x63\x00\x65\x00\xbd\x00\x44\x00\x68\x00\xd2\x00\xd3\x00\x47\x00\x61\x00\x11\x00\x45\x00\x1b\x00\x48\x00\x1c\x00\x49\x00\x4a\x00\x4b\x00\xb0\x00\x4c\x00\x4d\x00\x4e\x00\x70\x00\x3f\x00\x4f\x00\x50\x00\x51\x00\x71\x00\x43\x00\x07\x00\xb2\x00\x46\x00\x44\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x47\x00\x45\x00\x07\x00\xbd\x00\xc0\x00\x48\x00\x55\x00\x49\x00\x4a\x00\x4b\x00\xbe\x00\x4c\x00\x4d\x00\x4e\x00\xd6\x00\x28\x00\x4f\x00\x50\x00\x51\x00\x57\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x42\x00\x80\xff\x43\x00\x48\x00\x80\xff\x49\x00\x44\x00\x5a\x00\x59\x00\x4c\x00\x4d\x00\x4e\x00\x07\x00\x45\x00\x4f\x00\x50\x00\x51\x00\x88\x00\xbe\x00\x21\x00\x89\x00\x23\x00\xbf\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x81\x00\x82\x00\x42\x00\x3f\x00\x43\x00\xbc\x00\xbd\x00\x09\x00\x44\x00\x57\x00\x40\x00\x0b\x00\x47\x00\x84\x00\x6e\x00\x45\x00\xc2\x00\x48\x00\xd2\x00\x49\x00\x4a\x00\x4b\x00\x5b\x00\x4c\x00\x4d\x00\x4e\x00\x81\x00\x82\x00\x4f\x00\x50\x00\x51\x00\x55\x00\x43\x00\x7d\x00\x55\x00\x6e\x00\x44\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x47\x00\x45\x00\x44\x00\xc6\x00\x5d\x00\x48\x00\xc4\x00\x49\x00\x4a\x00\x4b\x00\x44\x00\x4c\x00\x4d\x00\x4e\x00\xcc\x00\xb4\x00\x4f\x00\x50\x00\x51\x00\x70\x00\x7d\x00\xce\x00\x80\x00\x83\x00\x71\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x42\x00\x92\x00\x43\x00\x48\x00\x94\x00\x93\x00\x44\x00\x95\x00\x7c\x00\x9c\x00\x70\x00\x48\x00\xb2\x00\x45\x00\x4f\x00\xc9\x00\x51\x00\x55\x00\x55\x00\x48\x00\xb4\x00\x55\x00\xb6\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x6e\x00\xb7\x00\xb8\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x55\x00\x95\x00\xb9\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\xc2\x00\x48\x00\x59\x00\x49\x00\x62\x00\x5b\x00\x67\x00\x4c\x00\x4d\x00\x4e\x00\x78\x00\x7d\x00\x4f\x00\x50\x00\x51\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x83\x00\x07\x00\x52\x00\x53\x00\x54\x00\x55\x00\x80\x00\x6f\x00\x5c\x00\x5d\x00\x84\x00\x70\x00\x92\x00\x93\x00\x94\x00\x55\x00\x71\x00\x95\x00\x96\x00\x59\x00\x09\x00\x29\x00\xd9\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x55\x00\x3e\x00\xff\xff\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x23\x00\x40\x00\xff\xff\x07\x00\x09\x00\x0b\x00\x0d\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0e\x00\x0d\x00\x17\x00\x10\x00\x19\x00\x10\x00\x00\x00\x0b\x00\x00\x00\x29\x00\xcf\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\xd9\x00\x3e\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x13\x00\x14\x00\x15\x00\x16\x00\x0e\x00\x00\x00\xd7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\xd0\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\xc8\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\xcc\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x74\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x3e\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x29\x00\x3e\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\xa3\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x40\x00\x00\x00\x96\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x29\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\xa4\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x40\x00\x00\x00\x6a\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x29\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\xa5\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x40\x00\x00\x00\x6c\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x29\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\xa6\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x40\x00\x00\x00\x00\x00\x97\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x29\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\xa7\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x40\x00\x00\x00\x00\x00\x00\x00\x98\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x19\x00\x10\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x1a\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x99\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x29\x00\x00\x00\xf1\xff\x00\x00\x40\x00\x00\x00\x00\x00\x9a\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x76\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\xce\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x00\x00\x9e\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x8a\x00\x00\x00\xa1\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x6b\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x8b\x00\x40\x00\x00\x00\x8c\x00\x00\x00\x8d\x00\x00\x00\x8e\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x78\x00\x29\x00\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x91\x00\x00\x00\xa2\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x29\x00\x6b\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x79\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x7a\x00\x00\x00\x00\x00\x3f\x00\x70\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x00\x40\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x29\x00\x00\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x79\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x29\x00\x00\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x69\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6d\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x29\x00\x00\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x73\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x40\x00\x00\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x29\x00\x00\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x40\x00\x00\x00\x00\x00\x00\x00\xdb\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\xc4\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x29\x00\x40\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa8\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x40\x00\x00\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x29\x00\x00\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xca\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\xa9\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00\x29\x00\x40\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x40\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\xaa\x00\x3b\x00\x3c\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x40\x00\x00\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x00\x00\x00\x00\x00\x00\xab\x00\x3b\x00\x3c\x00\x3d\x00\x29\x00\x00\x00\x00\x00\x3f\x00\x00\x00\xac\x00\x3c\x00\x3d\x00\x29\x00\x00\x00\x40\x00\x3f\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x40\x00\xad\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x00\x00\x00\x00\xae\x00\x3d\x00\x00\x00\x00\x00\x40\x00\x3f\x00\xb9\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x40\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x00\x00\x00\x00\x00\x00\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#
+
+happyReduceArr = Happy_Data_Array.array (5, 139) [
+	(5 , happyReduce_5),
+	(6 , happyReduce_6),
+	(7 , happyReduce_7),
+	(8 , happyReduce_8),
+	(9 , happyReduce_9),
+	(10 , happyReduce_10),
+	(11 , happyReduce_11),
+	(12 , happyReduce_12),
+	(13 , happyReduce_13),
+	(14 , happyReduce_14),
+	(15 , happyReduce_15),
+	(16 , happyReduce_16),
+	(17 , happyReduce_17),
+	(18 , happyReduce_18),
+	(19 , happyReduce_19),
+	(20 , happyReduce_20),
+	(21 , happyReduce_21),
+	(22 , happyReduce_22),
+	(23 , happyReduce_23),
+	(24 , happyReduce_24),
+	(25 , happyReduce_25),
+	(26 , happyReduce_26),
+	(27 , happyReduce_27),
+	(28 , happyReduce_28),
+	(29 , happyReduce_29),
+	(30 , happyReduce_30),
+	(31 , happyReduce_31),
+	(32 , happyReduce_32),
+	(33 , happyReduce_33),
+	(34 , happyReduce_34),
+	(35 , happyReduce_35),
+	(36 , happyReduce_36),
+	(37 , happyReduce_37),
+	(38 , happyReduce_38),
+	(39 , happyReduce_39),
+	(40 , happyReduce_40),
+	(41 , happyReduce_41),
+	(42 , happyReduce_42),
+	(43 , happyReduce_43),
+	(44 , happyReduce_44),
+	(45 , happyReduce_45),
+	(46 , happyReduce_46),
+	(47 , happyReduce_47),
+	(48 , happyReduce_48),
+	(49 , happyReduce_49),
+	(50 , happyReduce_50),
+	(51 , happyReduce_51),
+	(52 , happyReduce_52),
+	(53 , happyReduce_53),
+	(54 , happyReduce_54),
+	(55 , happyReduce_55),
+	(56 , happyReduce_56),
+	(57 , happyReduce_57),
+	(58 , happyReduce_58),
+	(59 , happyReduce_59),
+	(60 , happyReduce_60),
+	(61 , happyReduce_61),
+	(62 , happyReduce_62),
+	(63 , happyReduce_63),
+	(64 , happyReduce_64),
+	(65 , happyReduce_65),
+	(66 , happyReduce_66),
+	(67 , happyReduce_67),
+	(68 , happyReduce_68),
+	(69 , happyReduce_69),
+	(70 , happyReduce_70),
+	(71 , happyReduce_71),
+	(72 , happyReduce_72),
+	(73 , happyReduce_73),
+	(74 , happyReduce_74),
+	(75 , happyReduce_75),
+	(76 , happyReduce_76),
+	(77 , happyReduce_77),
+	(78 , happyReduce_78),
+	(79 , happyReduce_79),
+	(80 , happyReduce_80),
+	(81 , happyReduce_81),
+	(82 , happyReduce_82),
+	(83 , happyReduce_83),
+	(84 , happyReduce_84),
+	(85 , happyReduce_85),
+	(86 , happyReduce_86),
+	(87 , happyReduce_87),
+	(88 , happyReduce_88),
+	(89 , happyReduce_89),
+	(90 , happyReduce_90),
+	(91 , happyReduce_91),
+	(92 , happyReduce_92),
+	(93 , happyReduce_93),
+	(94 , happyReduce_94),
+	(95 , happyReduce_95),
+	(96 , happyReduce_96),
+	(97 , happyReduce_97),
+	(98 , happyReduce_98),
+	(99 , happyReduce_99),
+	(100 , happyReduce_100),
+	(101 , happyReduce_101),
+	(102 , happyReduce_102),
+	(103 , happyReduce_103),
+	(104 , happyReduce_104),
+	(105 , happyReduce_105),
+	(106 , happyReduce_106),
+	(107 , happyReduce_107),
+	(108 , happyReduce_108),
+	(109 , happyReduce_109),
+	(110 , happyReduce_110),
+	(111 , happyReduce_111),
+	(112 , happyReduce_112),
+	(113 , happyReduce_113),
+	(114 , happyReduce_114),
+	(115 , happyReduce_115),
+	(116 , happyReduce_116),
+	(117 , happyReduce_117),
+	(118 , happyReduce_118),
+	(119 , happyReduce_119),
+	(120 , happyReduce_120),
+	(121 , happyReduce_121),
+	(122 , happyReduce_122),
+	(123 , happyReduce_123),
+	(124 , happyReduce_124),
+	(125 , happyReduce_125),
+	(126 , happyReduce_126),
+	(127 , happyReduce_127),
+	(128 , happyReduce_128),
+	(129 , happyReduce_129),
+	(130 , happyReduce_130),
+	(131 , happyReduce_131),
+	(132 , happyReduce_132),
+	(133 , happyReduce_133),
+	(134 , happyReduce_134),
+	(135 , happyReduce_135),
+	(136 , happyReduce_136),
+	(137 , happyReduce_137),
+	(138 , happyReduce_138),
+	(139 , happyReduce_139)
+	]
+
+happy_n_terms = 76 :: Int
+happy_n_nonterms = 58 :: Int
+
+happyReduce_5 = happySpecReduce_1  0# happyReduction_5
+happyReduction_5 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn8
+		 (PosInteger (mkPosToken happy_var_1)
+	)}
+
+happyReduce_6 = happySpecReduce_1  1# happyReduction_6
+happyReduction_6 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn9
+		 (PosDouble (mkPosToken happy_var_1)
+	)}
+
+happyReduce_7 = happySpecReduce_1  2# happyReduction_7
+happyReduction_7 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn10
+		 (PosReal (mkPosToken happy_var_1)
+	)}
+
+happyReduce_8 = happySpecReduce_1  3# happyReduction_8
+happyReduction_8 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn11
+		 (PosString (mkPosToken happy_var_1)
+	)}
+
+happyReduce_9 = happySpecReduce_1  4# happyReduction_9
+happyReduction_9 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn12
+		 (PosIdent (mkPosToken happy_var_1)
+	)}
+
+happyReduce_10 = happySpecReduce_1  5# happyReduction_10
+happyReduction_10 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn13
+		 (PosLineComment (mkPosToken happy_var_1)
+	)}
+
+happyReduce_11 = happySpecReduce_1  6# happyReduction_11
+happyReduction_11 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn14
+		 (PosBlockComment (mkPosToken happy_var_1)
+	)}
+
+happyReduce_12 = happySpecReduce_1  7# happyReduction_12
+happyReduction_12 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn15
+		 (PosAlloy (mkPosToken happy_var_1)
+	)}
+
+happyReduce_13 = happySpecReduce_1  8# happyReduction_13
+happyReduction_13 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn16
+		 (PosChoco (mkPosToken happy_var_1)
+	)}
+
+happyReduce_14 = happySpecReduce_1  9# happyReduction_14
+happyReduction_14 happy_x_1
+	 =  case happyOut60 happy_x_1 of { happy_var_1 -> 
+	happyIn17
+		 (Language.Clafer.Front.AbsClafer.Module ((mkCatSpan happy_var_1)) (reverse happy_var_1)
+	)}
+
+happyReduce_15 = happyReduce 4# 10# happyReduction_15
+happyReduction_15 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut12 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { happy_var_3 -> 
+	case happyOut61 happy_x_4 of { happy_var_4 -> 
+	happyIn18
+		 (Language.Clafer.Front.AbsClafer.EnumDecl ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkTokenSpan happy_var_3) >- (mkCatSpan happy_var_4)) happy_var_2 happy_var_4
+	) `HappyStk` happyRest}}}}
+
+happyReduce_16 = happySpecReduce_1  10# happyReduction_16
+happyReduction_16 happy_x_1
+	 =  case happyOut25 happy_x_1 of { happy_var_1 -> 
+	happyIn18
+		 (Language.Clafer.Front.AbsClafer.ElementDecl ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_17 = happyReduce 8# 11# happyReduction_17
+happyReduction_17 (happy_x_8 `HappyStk`
+	happy_x_7 `HappyStk`
+	happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut23 happy_x_1 of { happy_var_1 -> 
+	case happyOut30 happy_x_2 of { happy_var_2 -> 
+	case happyOut12 happy_x_3 of { happy_var_3 -> 
+	case happyOut26 happy_x_4 of { happy_var_4 -> 
+	case happyOut27 happy_x_5 of { happy_var_5 -> 
+	case happyOut31 happy_x_6 of { happy_var_6 -> 
+	case happyOut28 happy_x_7 of { happy_var_7 -> 
+	case happyOut24 happy_x_8 of { happy_var_8 -> 
+	happyIn19
+		 (Language.Clafer.Front.AbsClafer.Clafer ((mkCatSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkCatSpan happy_var_3) >- (mkCatSpan happy_var_4) >- (mkCatSpan happy_var_5) >- (mkCatSpan happy_var_6) >- (mkCatSpan happy_var_7) >- (mkCatSpan happy_var_8)) happy_var_1 happy_var_2 happy_var_3 happy_var_4 happy_var_5 happy_var_6 happy_var_7 happy_var_8
+	) `HappyStk` happyRest}}}}}}}}
+
+happyReduce_18 = happySpecReduce_3  12# happyReduction_18
+happyReduction_18 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut63 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { happy_var_3 -> 
+	happyIn20
+		 (Language.Clafer.Front.AbsClafer.Constraint ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkTokenSpan happy_var_3)) (reverse happy_var_2)
+	)}}}
+
+happyReduce_19 = happyReduce 4# 13# happyReduction_19
+happyReduction_19 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut63 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { happy_var_4 -> 
+	happyIn21
+		 (Language.Clafer.Front.AbsClafer.Assertion ((mkTokenSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3) >- (mkTokenSpan happy_var_4)) (reverse happy_var_3)
+	) `HappyStk` happyRest}}}}
+
+happyReduce_20 = happySpecReduce_3  14# happyReduction_20
+happyReduction_20 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut63 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { happy_var_3 -> 
+	happyIn22
+		 (Language.Clafer.Front.AbsClafer.Goal ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkTokenSpan happy_var_3)) (reverse happy_var_2)
+	)}}}
+
+happyReduce_21 = happySpecReduce_0  15# happyReduction_21
+happyReduction_21  =  happyIn23
+		 (Language.Clafer.Front.AbsClafer.AbstractEmpty noSpan
+	)
+
+happyReduce_22 = happySpecReduce_1  15# happyReduction_22
+happyReduction_22 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn23
+		 (Language.Clafer.Front.AbsClafer.Abstract ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_23 = happySpecReduce_0  16# happyReduction_23
+happyReduction_23  =  happyIn24
+		 (Language.Clafer.Front.AbsClafer.ElementsEmpty noSpan
+	)
+
+happyReduce_24 = happySpecReduce_3  16# happyReduction_24
+happyReduction_24 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut62 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { happy_var_3 -> 
+	happyIn24
+		 (Language.Clafer.Front.AbsClafer.ElementsList ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkTokenSpan happy_var_3)) (reverse happy_var_2)
+	)}}}
+
+happyReduce_25 = happySpecReduce_1  17# happyReduction_25
+happyReduction_25 happy_x_1
+	 =  case happyOut19 happy_x_1 of { happy_var_1 -> 
+	happyIn25
+		 (Language.Clafer.Front.AbsClafer.Subclafer ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_26 = happyReduce 4# 17# happyReduction_26
+happyReduction_26 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut34 happy_x_2 of { happy_var_2 -> 
+	case happyOut31 happy_x_3 of { happy_var_3 -> 
+	case happyOut24 happy_x_4 of { happy_var_4 -> 
+	happyIn25
+		 (Language.Clafer.Front.AbsClafer.ClaferUse ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkCatSpan happy_var_3) >- (mkCatSpan happy_var_4)) happy_var_2 happy_var_3 happy_var_4
+	) `HappyStk` happyRest}}}}
+
+happyReduce_27 = happySpecReduce_1  17# happyReduction_27
+happyReduction_27 happy_x_1
+	 =  case happyOut20 happy_x_1 of { happy_var_1 -> 
+	happyIn25
+		 (Language.Clafer.Front.AbsClafer.Subconstraint ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_28 = happySpecReduce_1  17# happyReduction_28
+happyReduction_28 happy_x_1
+	 =  case happyOut22 happy_x_1 of { happy_var_1 -> 
+	happyIn25
+		 (Language.Clafer.Front.AbsClafer.Subgoal ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_29 = happySpecReduce_1  17# happyReduction_29
+happyReduction_29 happy_x_1
+	 =  case happyOut21 happy_x_1 of { happy_var_1 -> 
+	happyIn25
+		 (Language.Clafer.Front.AbsClafer.SubAssertion ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_30 = happySpecReduce_0  18# happyReduction_30
+happyReduction_30  =  happyIn26
+		 (Language.Clafer.Front.AbsClafer.SuperEmpty noSpan
+	)
+
+happyReduce_31 = happySpecReduce_2  18# happyReduction_31
+happyReduction_31 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut53 happy_x_2 of { happy_var_2 -> 
+	happyIn26
+		 (Language.Clafer.Front.AbsClafer.SuperSome ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
+	)}}
+
+happyReduce_32 = happySpecReduce_0  19# happyReduction_32
+happyReduction_32  =  happyIn27
+		 (Language.Clafer.Front.AbsClafer.ReferenceEmpty noSpan
+	)
+
+happyReduce_33 = happySpecReduce_2  19# happyReduction_33
+happyReduction_33 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut50 happy_x_2 of { happy_var_2 -> 
+	happyIn27
+		 (Language.Clafer.Front.AbsClafer.ReferenceSet ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
+	)}}
+
+happyReduce_34 = happySpecReduce_2  19# happyReduction_34
+happyReduction_34 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut50 happy_x_2 of { happy_var_2 -> 
+	happyIn27
+		 (Language.Clafer.Front.AbsClafer.ReferenceBag ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
+	)}}
+
+happyReduce_35 = happySpecReduce_0  20# happyReduction_35
+happyReduction_35  =  happyIn28
+		 (Language.Clafer.Front.AbsClafer.InitEmpty noSpan
+	)
+
+happyReduce_36 = happySpecReduce_2  20# happyReduction_36
+happyReduction_36 happy_x_2
+	happy_x_1
+	 =  case happyOut29 happy_x_1 of { happy_var_1 -> 
+	case happyOut35 happy_x_2 of { happy_var_2 -> 
+	happyIn28
+		 (Language.Clafer.Front.AbsClafer.InitSome ((mkCatSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_1 happy_var_2
+	)}}
+
+happyReduce_37 = happySpecReduce_1  21# happyReduction_37
+happyReduction_37 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn29
+		 (Language.Clafer.Front.AbsClafer.InitConstant ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_38 = happySpecReduce_1  21# happyReduction_38
+happyReduction_38 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn29
+		 (Language.Clafer.Front.AbsClafer.InitDefault ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_39 = happySpecReduce_0  22# happyReduction_39
+happyReduction_39  =  happyIn30
+		 (Language.Clafer.Front.AbsClafer.GCardEmpty noSpan
+	)
+
+happyReduce_40 = happySpecReduce_1  22# happyReduction_40
+happyReduction_40 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn30
+		 (Language.Clafer.Front.AbsClafer.GCardXor ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_41 = happySpecReduce_1  22# happyReduction_41
+happyReduction_41 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn30
+		 (Language.Clafer.Front.AbsClafer.GCardOr ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_42 = happySpecReduce_1  22# happyReduction_42
+happyReduction_42 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn30
+		 (Language.Clafer.Front.AbsClafer.GCardMux ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_43 = happySpecReduce_1  22# happyReduction_43
+happyReduction_43 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn30
+		 (Language.Clafer.Front.AbsClafer.GCardOpt ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_44 = happySpecReduce_1  22# happyReduction_44
+happyReduction_44 happy_x_1
+	 =  case happyOut32 happy_x_1 of { happy_var_1 -> 
+	happyIn30
+		 (Language.Clafer.Front.AbsClafer.GCardInterval ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_45 = happySpecReduce_0  23# happyReduction_45
+happyReduction_45  =  happyIn31
+		 (Language.Clafer.Front.AbsClafer.CardEmpty noSpan
+	)
+
+happyReduce_46 = happySpecReduce_1  23# happyReduction_46
+happyReduction_46 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn31
+		 (Language.Clafer.Front.AbsClafer.CardLone ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_47 = happySpecReduce_1  23# happyReduction_47
+happyReduction_47 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn31
+		 (Language.Clafer.Front.AbsClafer.CardSome ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_48 = happySpecReduce_1  23# happyReduction_48
+happyReduction_48 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn31
+		 (Language.Clafer.Front.AbsClafer.CardAny ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_49 = happySpecReduce_1  23# happyReduction_49
+happyReduction_49 happy_x_1
+	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
+	happyIn31
+		 (Language.Clafer.Front.AbsClafer.CardNum ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_50 = happySpecReduce_1  23# happyReduction_50
+happyReduction_50 happy_x_1
+	 =  case happyOut32 happy_x_1 of { happy_var_1 -> 
+	happyIn31
+		 (Language.Clafer.Front.AbsClafer.CardInterval ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_51 = happySpecReduce_3  24# happyReduction_51
+happyReduction_51 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut33 happy_x_3 of { happy_var_3 -> 
+	happyIn32
+		 (Language.Clafer.Front.AbsClafer.NCard ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_52 = happySpecReduce_1  25# happyReduction_52
+happyReduction_52 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn33
+		 (Language.Clafer.Front.AbsClafer.ExIntegerAst ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_53 = happySpecReduce_1  25# happyReduction_53
+happyReduction_53 happy_x_1
+	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
+	happyIn33
+		 (Language.Clafer.Front.AbsClafer.ExIntegerNum ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_54 = happySpecReduce_1  26# happyReduction_54
+happyReduction_54 happy_x_1
+	 =  case happyOut65 happy_x_1 of { happy_var_1 -> 
+	happyIn34
+		 (Language.Clafer.Front.AbsClafer.Path ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_55 = happyReduce 5# 27# happyReduction_55
+happyReduction_55 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut55 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { happy_var_4 -> 
+	case happyOut35 happy_x_5 of { happy_var_5 -> 
+	happyIn35
+		 (Language.Clafer.Front.AbsClafer.EDeclAllDisj ((mkTokenSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3) >- (mkTokenSpan happy_var_4) >- (mkCatSpan happy_var_5)) happy_var_3 happy_var_5
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_56 = happyReduce 4# 27# happyReduction_56
+happyReduction_56 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut55 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { happy_var_3 -> 
+	case happyOut35 happy_x_4 of { happy_var_4 -> 
+	happyIn35
+		 (Language.Clafer.Front.AbsClafer.EDeclAll ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkTokenSpan happy_var_3) >- (mkCatSpan happy_var_4)) happy_var_2 happy_var_4
+	) `HappyStk` happyRest}}}}
+
+happyReduce_57 = happyReduce 5# 27# happyReduction_57
+happyReduction_57 (happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut56 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut55 happy_x_3 of { happy_var_3 -> 
+	case happyOutTok happy_x_4 of { happy_var_4 -> 
+	case happyOut35 happy_x_5 of { happy_var_5 -> 
+	happyIn35
+		 (Language.Clafer.Front.AbsClafer.EDeclQuantDisj ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3) >- (mkTokenSpan happy_var_4) >- (mkCatSpan happy_var_5)) happy_var_1 happy_var_3 happy_var_5
+	) `HappyStk` happyRest}}}}}
+
+happyReduce_58 = happyReduce 4# 27# happyReduction_58
+happyReduction_58 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut56 happy_x_1 of { happy_var_1 -> 
+	case happyOut55 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { happy_var_3 -> 
+	case happyOut35 happy_x_4 of { happy_var_4 -> 
+	happyIn35
+		 (Language.Clafer.Front.AbsClafer.EDeclQuant ((mkCatSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkTokenSpan happy_var_3) >- (mkCatSpan happy_var_4)) happy_var_1 happy_var_2 happy_var_4
+	) `HappyStk` happyRest}}}}
+
+happyReduce_59 = happySpecReduce_1  27# happyReduction_59
+happyReduction_59 happy_x_1
+	 =  case happyOut36 happy_x_1 of { happy_var_1 -> 
+	happyIn35
+		 (happy_var_1
+	)}
+
+happyReduce_60 = happySpecReduce_2  28# happyReduction_60
+happyReduction_60 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut37 happy_x_2 of { happy_var_2 -> 
+	happyIn36
+		 (Language.Clafer.Front.AbsClafer.EGMax ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
+	)}}
+
+happyReduce_61 = happySpecReduce_2  28# happyReduction_61
+happyReduction_61 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut37 happy_x_2 of { happy_var_2 -> 
+	happyIn36
+		 (Language.Clafer.Front.AbsClafer.EGMin ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
+	)}}
+
+happyReduce_62 = happySpecReduce_3  28# happyReduction_62
+happyReduction_62 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut36 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut37 happy_x_3 of { happy_var_3 -> 
+	happyIn36
+		 (Language.Clafer.Front.AbsClafer.EIff ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_63 = happySpecReduce_1  28# happyReduction_63
+happyReduction_63 happy_x_1
+	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
+	happyIn36
+		 (happy_var_1
+	)}
+
+happyReduce_64 = happySpecReduce_3  29# happyReduction_64
+happyReduction_64 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut37 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut38 happy_x_3 of { happy_var_3 -> 
+	happyIn37
+		 (Language.Clafer.Front.AbsClafer.EImplies ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_65 = happySpecReduce_1  29# happyReduction_65
+happyReduction_65 happy_x_1
+	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
+	happyIn37
+		 (happy_var_1
+	)}
+
+happyReduce_66 = happySpecReduce_3  30# happyReduction_66
+happyReduction_66 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut38 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut39 happy_x_3 of { happy_var_3 -> 
+	happyIn38
+		 (Language.Clafer.Front.AbsClafer.EOr ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_67 = happySpecReduce_1  30# happyReduction_67
+happyReduction_67 happy_x_1
+	 =  case happyOut39 happy_x_1 of { happy_var_1 -> 
+	happyIn38
+		 (happy_var_1
+	)}
+
+happyReduce_68 = happySpecReduce_3  31# happyReduction_68
+happyReduction_68 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut39 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut40 happy_x_3 of { happy_var_3 -> 
+	happyIn39
+		 (Language.Clafer.Front.AbsClafer.EXor ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_69 = happySpecReduce_1  31# happyReduction_69
+happyReduction_69 happy_x_1
+	 =  case happyOut40 happy_x_1 of { happy_var_1 -> 
+	happyIn39
+		 (happy_var_1
+	)}
+
+happyReduce_70 = happySpecReduce_3  32# happyReduction_70
+happyReduction_70 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut40 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut41 happy_x_3 of { happy_var_3 -> 
+	happyIn40
+		 (Language.Clafer.Front.AbsClafer.EAnd ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_71 = happySpecReduce_1  32# happyReduction_71
+happyReduction_71 happy_x_1
+	 =  case happyOut41 happy_x_1 of { happy_var_1 -> 
+	happyIn40
+		 (happy_var_1
+	)}
+
+happyReduce_72 = happySpecReduce_2  33# happyReduction_72
+happyReduction_72 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut42 happy_x_2 of { happy_var_2 -> 
+	happyIn41
+		 (Language.Clafer.Front.AbsClafer.ENeg ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
+	)}}
+
+happyReduce_73 = happySpecReduce_1  33# happyReduction_73
+happyReduction_73 happy_x_1
+	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
+	happyIn41
+		 (happy_var_1
+	)}
+
+happyReduce_74 = happySpecReduce_3  34# happyReduction_74
+happyReduction_74 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut43 happy_x_3 of { happy_var_3 -> 
+	happyIn42
+		 (Language.Clafer.Front.AbsClafer.ELt ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_75 = happySpecReduce_3  34# happyReduction_75
+happyReduction_75 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut43 happy_x_3 of { happy_var_3 -> 
+	happyIn42
+		 (Language.Clafer.Front.AbsClafer.EGt ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_76 = happySpecReduce_3  34# happyReduction_76
+happyReduction_76 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut43 happy_x_3 of { happy_var_3 -> 
+	happyIn42
+		 (Language.Clafer.Front.AbsClafer.EEq ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_77 = happySpecReduce_3  34# happyReduction_77
+happyReduction_77 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut43 happy_x_3 of { happy_var_3 -> 
+	happyIn42
+		 (Language.Clafer.Front.AbsClafer.ELte ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_78 = happySpecReduce_3  34# happyReduction_78
+happyReduction_78 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut43 happy_x_3 of { happy_var_3 -> 
+	happyIn42
+		 (Language.Clafer.Front.AbsClafer.EGte ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_79 = happySpecReduce_3  34# happyReduction_79
+happyReduction_79 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut43 happy_x_3 of { happy_var_3 -> 
+	happyIn42
+		 (Language.Clafer.Front.AbsClafer.ENeq ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_80 = happySpecReduce_3  34# happyReduction_80
+happyReduction_80 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut42 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut43 happy_x_3 of { happy_var_3 -> 
+	happyIn42
+		 (Language.Clafer.Front.AbsClafer.EIn ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_81 = happyReduce 4# 34# happyReduction_81
+happyReduction_81 (happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOut42 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { happy_var_3 -> 
+	case happyOut43 happy_x_4 of { happy_var_4 -> 
+	happyIn42
+		 (Language.Clafer.Front.AbsClafer.ENin ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkTokenSpan happy_var_3) >- (mkCatSpan happy_var_4)) happy_var_1 happy_var_4
+	) `HappyStk` happyRest}}}}
+
+happyReduce_82 = happySpecReduce_1  34# happyReduction_82
+happyReduction_82 happy_x_1
+	 =  case happyOut43 happy_x_1 of { happy_var_1 -> 
+	happyIn42
+		 (happy_var_1
+	)}
+
+happyReduce_83 = happySpecReduce_2  35# happyReduction_83
+happyReduction_83 happy_x_2
+	happy_x_1
+	 =  case happyOut56 happy_x_1 of { happy_var_1 -> 
+	case happyOut47 happy_x_2 of { happy_var_2 -> 
+	happyIn43
+		 (Language.Clafer.Front.AbsClafer.EQuantExp ((mkCatSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_1 happy_var_2
+	)}}
+
+happyReduce_84 = happySpecReduce_1  35# happyReduction_84
+happyReduction_84 happy_x_1
+	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
+	happyIn43
+		 (happy_var_1
+	)}
+
+happyReduce_85 = happySpecReduce_3  36# happyReduction_85
+happyReduction_85 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut45 happy_x_3 of { happy_var_3 -> 
+	happyIn44
+		 (Language.Clafer.Front.AbsClafer.EAdd ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_86 = happySpecReduce_3  36# happyReduction_86
+happyReduction_86 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut44 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut45 happy_x_3 of { happy_var_3 -> 
+	happyIn44
+		 (Language.Clafer.Front.AbsClafer.ESub ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_87 = happySpecReduce_1  36# happyReduction_87
+happyReduction_87 happy_x_1
+	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
+	happyIn44
+		 (happy_var_1
+	)}
+
+happyReduce_88 = happySpecReduce_3  37# happyReduction_88
+happyReduction_88 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut46 happy_x_3 of { happy_var_3 -> 
+	happyIn45
+		 (Language.Clafer.Front.AbsClafer.EMul ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_89 = happySpecReduce_3  37# happyReduction_89
+happyReduction_89 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut46 happy_x_3 of { happy_var_3 -> 
+	happyIn45
+		 (Language.Clafer.Front.AbsClafer.EDiv ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_90 = happySpecReduce_3  37# happyReduction_90
+happyReduction_90 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut45 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut46 happy_x_3 of { happy_var_3 -> 
+	happyIn45
+		 (Language.Clafer.Front.AbsClafer.ERem ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_91 = happySpecReduce_1  37# happyReduction_91
+happyReduction_91 happy_x_1
+	 =  case happyOut46 happy_x_1 of { happy_var_1 -> 
+	happyIn45
+		 (happy_var_1
+	)}
+
+happyReduce_92 = happySpecReduce_2  38# happyReduction_92
+happyReduction_92 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut47 happy_x_2 of { happy_var_2 -> 
+	happyIn46
+		 (Language.Clafer.Front.AbsClafer.ESum ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
+	)}}
+
+happyReduce_93 = happySpecReduce_2  38# happyReduction_93
+happyReduction_93 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut47 happy_x_2 of { happy_var_2 -> 
+	happyIn46
+		 (Language.Clafer.Front.AbsClafer.EProd ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
+	)}}
+
+happyReduce_94 = happySpecReduce_2  38# happyReduction_94
+happyReduction_94 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut47 happy_x_2 of { happy_var_2 -> 
+	happyIn46
+		 (Language.Clafer.Front.AbsClafer.ECard ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
+	)}}
+
+happyReduce_95 = happySpecReduce_2  38# happyReduction_95
+happyReduction_95 happy_x_2
+	happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut47 happy_x_2 of { happy_var_2 -> 
+	happyIn46
+		 (Language.Clafer.Front.AbsClafer.EMinExp ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2)) happy_var_2
+	)}}
+
+happyReduce_96 = happySpecReduce_1  38# happyReduction_96
+happyReduction_96 happy_x_1
+	 =  case happyOut47 happy_x_1 of { happy_var_1 -> 
+	happyIn46
+		 (happy_var_1
+	)}
+
+happyReduce_97 = happyReduce 6# 39# happyReduction_97
+happyReduction_97 (happy_x_6 `HappyStk`
+	happy_x_5 `HappyStk`
+	happy_x_4 `HappyStk`
+	happy_x_3 `HappyStk`
+	happy_x_2 `HappyStk`
+	happy_x_1 `HappyStk`
+	happyRest)
+	 = case happyOutTok happy_x_1 of { happy_var_1 -> 
+	case happyOut47 happy_x_2 of { happy_var_2 -> 
+	case happyOutTok happy_x_3 of { happy_var_3 -> 
+	case happyOut47 happy_x_4 of { happy_var_4 -> 
+	case happyOutTok happy_x_5 of { happy_var_5 -> 
+	case happyOut48 happy_x_6 of { happy_var_6 -> 
+	happyIn47
+		 (Language.Clafer.Front.AbsClafer.EImpliesElse ((mkTokenSpan happy_var_1) >- (mkCatSpan happy_var_2) >- (mkTokenSpan happy_var_3) >- (mkCatSpan happy_var_4) >- (mkTokenSpan happy_var_5) >- (mkCatSpan happy_var_6)) happy_var_2 happy_var_4 happy_var_6
+	) `HappyStk` happyRest}}}}}}
+
+happyReduce_98 = happySpecReduce_1  39# happyReduction_98
+happyReduction_98 happy_x_1
+	 =  case happyOut48 happy_x_1 of { happy_var_1 -> 
+	happyIn47
+		 (happy_var_1
+	)}
+
+happyReduce_99 = happySpecReduce_3  40# happyReduction_99
+happyReduction_99 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut48 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut49 happy_x_3 of { happy_var_3 -> 
+	happyIn48
+		 (Language.Clafer.Front.AbsClafer.EDomain ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_100 = happySpecReduce_1  40# happyReduction_100
+happyReduction_100 happy_x_1
+	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
+	happyIn48
+		 (happy_var_1
+	)}
+
+happyReduce_101 = happySpecReduce_3  41# happyReduction_101
+happyReduction_101 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut49 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut50 happy_x_3 of { happy_var_3 -> 
+	happyIn49
+		 (Language.Clafer.Front.AbsClafer.ERange ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_102 = happySpecReduce_1  41# happyReduction_102
+happyReduction_102 happy_x_1
+	 =  case happyOut50 happy_x_1 of { happy_var_1 -> 
+	happyIn49
+		 (happy_var_1
+	)}
+
+happyReduce_103 = happySpecReduce_3  42# happyReduction_103
+happyReduction_103 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut50 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut51 happy_x_3 of { happy_var_3 -> 
+	happyIn50
+		 (Language.Clafer.Front.AbsClafer.EUnion ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_104 = happySpecReduce_3  42# happyReduction_104
+happyReduction_104 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut50 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut51 happy_x_3 of { happy_var_3 -> 
+	happyIn50
+		 (Language.Clafer.Front.AbsClafer.EUnionCom ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_105 = happySpecReduce_1  42# happyReduction_105
+happyReduction_105 happy_x_1
+	 =  case happyOut51 happy_x_1 of { happy_var_1 -> 
+	happyIn50
+		 (happy_var_1
+	)}
+
+happyReduce_106 = happySpecReduce_3  43# happyReduction_106
+happyReduction_106 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut51 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut52 happy_x_3 of { happy_var_3 -> 
+	happyIn51
+		 (Language.Clafer.Front.AbsClafer.EDifference ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_107 = happySpecReduce_1  43# happyReduction_107
+happyReduction_107 happy_x_1
+	 =  case happyOut52 happy_x_1 of { happy_var_1 -> 
+	happyIn51
+		 (happy_var_1
+	)}
+
+happyReduce_108 = happySpecReduce_3  44# happyReduction_108
+happyReduction_108 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut52 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut53 happy_x_3 of { happy_var_3 -> 
+	happyIn52
+		 (Language.Clafer.Front.AbsClafer.EIntersection ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_109 = happySpecReduce_3  44# happyReduction_109
+happyReduction_109 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut52 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut53 happy_x_3 of { happy_var_3 -> 
+	happyIn52
+		 (Language.Clafer.Front.AbsClafer.EIntersectionDeprecated ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_110 = happySpecReduce_1  44# happyReduction_110
+happyReduction_110 happy_x_1
+	 =  case happyOut53 happy_x_1 of { happy_var_1 -> 
+	happyIn52
+		 (happy_var_1
+	)}
+
+happyReduce_111 = happySpecReduce_3  45# happyReduction_111
+happyReduction_111 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut53 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut54 happy_x_3 of { happy_var_3 -> 
+	happyIn53
+		 (Language.Clafer.Front.AbsClafer.EJoin ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_112 = happySpecReduce_1  45# happyReduction_112
+happyReduction_112 happy_x_1
+	 =  case happyOut54 happy_x_1 of { happy_var_1 -> 
+	happyIn53
+		 (happy_var_1
+	)}
+
+happyReduce_113 = happySpecReduce_1  46# happyReduction_113
+happyReduction_113 happy_x_1
+	 =  case happyOut34 happy_x_1 of { happy_var_1 -> 
+	happyIn54
+		 (Language.Clafer.Front.AbsClafer.ClaferId ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_114 = happySpecReduce_1  46# happyReduction_114
+happyReduction_114 happy_x_1
+	 =  case happyOut8 happy_x_1 of { happy_var_1 -> 
+	happyIn54
+		 (Language.Clafer.Front.AbsClafer.EInt ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_115 = happySpecReduce_1  46# happyReduction_115
+happyReduction_115 happy_x_1
+	 =  case happyOut9 happy_x_1 of { happy_var_1 -> 
+	happyIn54
+		 (Language.Clafer.Front.AbsClafer.EDouble ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_116 = happySpecReduce_1  46# happyReduction_116
+happyReduction_116 happy_x_1
+	 =  case happyOut10 happy_x_1 of { happy_var_1 -> 
+	happyIn54
+		 (Language.Clafer.Front.AbsClafer.EReal ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_117 = happySpecReduce_1  46# happyReduction_117
+happyReduction_117 happy_x_1
+	 =  case happyOut11 happy_x_1 of { happy_var_1 -> 
+	happyIn54
+		 (Language.Clafer.Front.AbsClafer.EStr ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_118 = happySpecReduce_3  46# happyReduction_118
+happyReduction_118 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut35 happy_x_2 of { happy_var_2 -> 
+	happyIn54
+		 (happy_var_2
+	)}
+
+happyReduce_119 = happySpecReduce_3  47# happyReduction_119
+happyReduction_119 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut64 happy_x_1 of { happy_var_1 -> 
+	case happyOutTok happy_x_2 of { happy_var_2 -> 
+	case happyOut50 happy_x_3 of { happy_var_3 -> 
+	happyIn55
+		 (Language.Clafer.Front.AbsClafer.Decl ((mkCatSpan happy_var_1) >- (mkTokenSpan happy_var_2) >- (mkCatSpan happy_var_3)) happy_var_1 happy_var_3
+	)}}}
+
+happyReduce_120 = happySpecReduce_1  48# happyReduction_120
+happyReduction_120 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn56
+		 (Language.Clafer.Front.AbsClafer.QuantNo ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_121 = happySpecReduce_1  48# happyReduction_121
+happyReduction_121 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn56
+		 (Language.Clafer.Front.AbsClafer.QuantNot ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_122 = happySpecReduce_1  48# happyReduction_122
+happyReduction_122 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn56
+		 (Language.Clafer.Front.AbsClafer.QuantLone ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_123 = happySpecReduce_1  48# happyReduction_123
+happyReduction_123 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn56
+		 (Language.Clafer.Front.AbsClafer.QuantOne ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_124 = happySpecReduce_1  48# happyReduction_124
+happyReduction_124 happy_x_1
+	 =  case happyOutTok happy_x_1 of { happy_var_1 -> 
+	happyIn56
+		 (Language.Clafer.Front.AbsClafer.QuantSome ((mkTokenSpan happy_var_1))
+	)}
+
+happyReduce_125 = happySpecReduce_1  49# happyReduction_125
+happyReduction_125 happy_x_1
+	 =  case happyOut12 happy_x_1 of { happy_var_1 -> 
+	happyIn57
+		 (Language.Clafer.Front.AbsClafer.EnumIdIdent ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_126 = happySpecReduce_1  50# happyReduction_126
+happyReduction_126 happy_x_1
+	 =  case happyOut12 happy_x_1 of { happy_var_1 -> 
+	happyIn58
+		 (Language.Clafer.Front.AbsClafer.ModIdIdent ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_127 = happySpecReduce_1  51# happyReduction_127
+happyReduction_127 happy_x_1
+	 =  case happyOut12 happy_x_1 of { happy_var_1 -> 
+	happyIn59
+		 (Language.Clafer.Front.AbsClafer.LocIdIdent ((mkCatSpan happy_var_1)) happy_var_1
+	)}
+
+happyReduce_128 = happySpecReduce_0  52# happyReduction_128
+happyReduction_128  =  happyIn60
+		 ([]
+	)
+
+happyReduce_129 = happySpecReduce_2  52# happyReduction_129
+happyReduction_129 happy_x_2
+	happy_x_1
+	 =  case happyOut60 happy_x_1 of { happy_var_1 -> 
+	case happyOut18 happy_x_2 of { happy_var_2 -> 
+	happyIn60
+		 (flip (:)  happy_var_1 happy_var_2
+	)}}
+
+happyReduce_130 = happySpecReduce_1  53# happyReduction_130
+happyReduction_130 happy_x_1
+	 =  case happyOut57 happy_x_1 of { happy_var_1 -> 
+	happyIn61
+		 ((:[])  happy_var_1
+	)}
+
+happyReduce_131 = happySpecReduce_3  53# happyReduction_131
+happyReduction_131 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut57 happy_x_1 of { happy_var_1 -> 
+	case happyOut61 happy_x_3 of { happy_var_3 -> 
+	happyIn61
+		 ((:)  happy_var_1 happy_var_3
+	)}}
+
+happyReduce_132 = happySpecReduce_0  54# happyReduction_132
+happyReduction_132  =  happyIn62
+		 ([]
+	)
+
+happyReduce_133 = happySpecReduce_2  54# happyReduction_133
+happyReduction_133 happy_x_2
+	happy_x_1
+	 =  case happyOut62 happy_x_1 of { happy_var_1 -> 
+	case happyOut25 happy_x_2 of { happy_var_2 -> 
+	happyIn62
+		 (flip (:)  happy_var_1 happy_var_2
+	)}}
+
+happyReduce_134 = happySpecReduce_0  55# happyReduction_134
+happyReduction_134  =  happyIn63
+		 ([]
+	)
+
+happyReduce_135 = happySpecReduce_2  55# happyReduction_135
+happyReduction_135 happy_x_2
+	happy_x_1
+	 =  case happyOut63 happy_x_1 of { happy_var_1 -> 
+	case happyOut35 happy_x_2 of { happy_var_2 -> 
+	happyIn63
+		 (flip (:)  happy_var_1 happy_var_2
+	)}}
+
+happyReduce_136 = happySpecReduce_1  56# happyReduction_136
+happyReduction_136 happy_x_1
+	 =  case happyOut59 happy_x_1 of { happy_var_1 -> 
+	happyIn64
+		 ((:[])  happy_var_1
+	)}
+
+happyReduce_137 = happySpecReduce_3  56# happyReduction_137
+happyReduction_137 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut59 happy_x_1 of { happy_var_1 -> 
+	case happyOut64 happy_x_3 of { happy_var_3 -> 
+	happyIn64
+		 ((:)  happy_var_1 happy_var_3
+	)}}
+
+happyReduce_138 = happySpecReduce_1  57# happyReduction_138
+happyReduction_138 happy_x_1
+	 =  case happyOut58 happy_x_1 of { happy_var_1 -> 
+	happyIn65
+		 ((:[])  happy_var_1
+	)}
+
+happyReduce_139 = happySpecReduce_3  57# happyReduction_139
+happyReduction_139 happy_x_3
+	happy_x_2
+	happy_x_1
+	 =  case happyOut58 happy_x_1 of { happy_var_1 -> 
+	case happyOut65 happy_x_3 of { happy_var_3 -> 
+	happyIn65
+		 ((:)  happy_var_1 happy_var_3
+	)}}
+
+happyNewToken action sts stk [] =
+	happyDoAction 75# notHappyAtAll action sts stk []
+
+happyNewToken action sts stk (tk:tks) =
+	let cont i = happyDoAction i tk action sts stk tks in
+	case tk of {
+	PT _ (TS _ 1) -> cont 1#;
+	PT _ (TS _ 2) -> cont 2#;
+	PT _ (TS _ 3) -> cont 3#;
+	PT _ (TS _ 4) -> cont 4#;
+	PT _ (TS _ 5) -> cont 5#;
+	PT _ (TS _ 6) -> cont 6#;
+	PT _ (TS _ 7) -> cont 7#;
+	PT _ (TS _ 8) -> cont 8#;
+	PT _ (TS _ 9) -> cont 9#;
+	PT _ (TS _ 10) -> cont 10#;
+	PT _ (TS _ 11) -> cont 11#;
+	PT _ (TS _ 12) -> cont 12#;
+	PT _ (TS _ 13) -> cont 13#;
+	PT _ (TS _ 14) -> cont 14#;
+	PT _ (TS _ 15) -> cont 15#;
+	PT _ (TS _ 16) -> cont 16#;
+	PT _ (TS _ 17) -> cont 17#;
+	PT _ (TS _ 18) -> cont 18#;
+	PT _ (TS _ 19) -> cont 19#;
+	PT _ (TS _ 20) -> cont 20#;
+	PT _ (TS _ 21) -> cont 21#;
+	PT _ (TS _ 22) -> cont 22#;
+	PT _ (TS _ 23) -> cont 23#;
+	PT _ (TS _ 24) -> cont 24#;
+	PT _ (TS _ 25) -> cont 25#;
+	PT _ (TS _ 26) -> cont 26#;
+	PT _ (TS _ 27) -> cont 27#;
+	PT _ (TS _ 28) -> cont 28#;
+	PT _ (TS _ 29) -> cont 29#;
+	PT _ (TS _ 30) -> cont 30#;
+	PT _ (TS _ 31) -> cont 31#;
+	PT _ (TS _ 32) -> cont 32#;
+	PT _ (TS _ 33) -> cont 33#;
+	PT _ (TS _ 34) -> cont 34#;
+	PT _ (TS _ 35) -> cont 35#;
+	PT _ (TS _ 36) -> cont 36#;
+	PT _ (TS _ 37) -> cont 37#;
+	PT _ (TS _ 38) -> cont 38#;
+	PT _ (TS _ 39) -> cont 39#;
+	PT _ (TS _ 40) -> cont 40#;
+	PT _ (TS _ 41) -> cont 41#;
+	PT _ (TS _ 42) -> cont 42#;
+	PT _ (TS _ 43) -> cont 43#;
+	PT _ (TS _ 44) -> cont 44#;
+	PT _ (TS _ 45) -> cont 45#;
+	PT _ (TS _ 46) -> cont 46#;
+	PT _ (TS _ 47) -> cont 47#;
+	PT _ (TS _ 48) -> cont 48#;
+	PT _ (TS _ 49) -> cont 49#;
+	PT _ (TS _ 50) -> cont 50#;
+	PT _ (TS _ 51) -> cont 51#;
+	PT _ (TS _ 52) -> cont 52#;
+	PT _ (TS _ 53) -> cont 53#;
+	PT _ (TS _ 54) -> cont 54#;
+	PT _ (TS _ 55) -> cont 55#;
+	PT _ (TS _ 56) -> cont 56#;
+	PT _ (TS _ 57) -> cont 57#;
+	PT _ (TS _ 58) -> cont 58#;
+	PT _ (TS _ 59) -> cont 59#;
+	PT _ (TS _ 60) -> cont 60#;
+	PT _ (TS _ 61) -> cont 61#;
+	PT _ (TS _ 62) -> cont 62#;
+	PT _ (TS _ 63) -> cont 63#;
+	PT _ (TS _ 64) -> cont 64#;
+	PT _ (TS _ 65) -> cont 65#;
+	PT _ (T_PosInteger _) -> cont 66#;
+	PT _ (T_PosDouble _) -> cont 67#;
+	PT _ (T_PosReal _) -> cont 68#;
+	PT _ (T_PosString _) -> cont 69#;
+	PT _ (T_PosIdent _) -> cont 70#;
+	PT _ (T_PosLineComment _) -> cont 71#;
+	PT _ (T_PosBlockComment _) -> cont 72#;
+	PT _ (T_PosAlloy _) -> cont 73#;
+	PT _ (T_PosChoco _) -> cont 74#;
+	_ -> happyError' (tk:tks)
+	}
+
+happyError_ 75# tk tks = happyError' tks
+happyError_ _ tk tks = happyError' (tk:tks)
+
+happyThen :: () => Err a -> (a -> Err b) -> Err b
+happyThen = (thenM)
+happyReturn :: () => a -> Err a
+happyReturn = (returnM)
+happyThen1 m k tks = (thenM) m (\a -> k a tks)
+happyReturn1 :: () => a -> b -> Err a
+happyReturn1 = \a tks -> (returnM) a
+happyError' :: () => [(Token)] -> Err a
+happyError' = happyError
+
+pModule tks = happySomeParser where
+  happySomeParser = happyThen (happyParse 0# tks) (\x -> happyReturn (happyOut17 x))
+
+pClafer tks = happySomeParser where
+  happySomeParser = happyThen (happyParse 1# tks) (\x -> happyReturn (happyOut19 x))
+
+pConstraint tks = happySomeParser where
+  happySomeParser = happyThen (happyParse 2# tks) (\x -> happyReturn (happyOut20 x))
+
+pAssertion tks = happySomeParser where
+  happySomeParser = happyThen (happyParse 3# tks) (\x -> happyReturn (happyOut21 x))
+
+pGoal tks = happySomeParser where
+  happySomeParser = happyThen (happyParse 4# tks) (\x -> happyReturn (happyOut22 x))
+
+happySeq = happyDontSeq
+
+
+returnM :: a -> Err a
+returnM = return
+
+thenM :: Err a -> (a -> Err b) -> Err b
+thenM = (>>=)
+
+happyError :: [Token] -> Err a
+happyError ts =
+  Bad (pp ts) $ "syntax error at " ++ tokenPos ts ++ 
+  case ts of
+    [] -> []
+    [Err _] -> " due to lexer error"
+    _ -> " before " ++ unwords (map (id . prToken) (take 4 ts))
+
+myLexer = tokens
+
+gp x@(PT (Pn _ l c) _) = Span (Pos (toInteger l) (toInteger c)) (Pos (toInteger l) (toInteger c + toInteger (length $ prToken x)))
+pp (PT (Pn _ l c) _ :_) = Pos (toInteger l) (toInteger c)
+pp (Err (Pn _ l c) :_) = Pos (toInteger l) (toInteger c)
+pp _ = error "EOF"
+
+mkCatSpan :: (Spannable c) => c -> Span
+mkCatSpan = getSpan
+
+mkTokenSpan :: Token -> Span
+mkTokenSpan = gp
+{-# LINE 1 "templates\GenericTemplate.hs" #-}
+{-# LINE 1 "templates\\GenericTemplate.hs" #-}
+{-# LINE 1 "<built-in>" #-}
+{-# LINE 1 "<command-line>" #-}
+{-# LINE 9 "<command-line>" #-}
+{-# LINE 1 "C:\\dev\\ghc-7.10.2\\lib/include\\ghcversion.h" #-}
 
 
 
diff --git a/src/Language/Clafer.hs b/src/Language/Clafer.hs
--- a/src/Language/Clafer.hs
+++ b/src/Language/Clafer.hs
@@ -172,7 +172,7 @@
   cth (Right r)  _ = return r
   fragments model = map unlines $ fragments' $ lines model
   fragments' []                  = []
-  fragments' ("//# FRAGMENT":xs) = fragments' xs
+  fragments' ("//# FRAGMENT":xs) = fragments' $ " " : xs
   fragments' model               = takeWhile (/= "//# FRAGMENT") model : fragments' (dropWhile (/= "//# FRAGMENT") model)
 --  htmlCatch :: Either ClaferErr CompilerResult -> ClaferArgs -> String -> IO(CompilerResult)
   htmlCatch (Right r) _ _ = return r
@@ -341,55 +341,26 @@
 parse =
   do
     env <- getEnv
-    astsErr <- mapM (parseFrag $ args env) $ modelFrags env
-    asts <- liftParseErrs astsErr
+    let completeModel = concat $ modelFrags env
 
-    -- We need to somehow combine all the ASTS together into a complete AST
-    -- However, the source positions inside the ASTs are relative to their
-    -- fragments.
-    --
-    -- For example
-    --   Frag1: "A\nB\n"
-    --   Frag2: "C\n"
-    -- The "C" clafer in Frag2 has position (1, 1) because it is at the start of the fragment.
-    -- However, it should have position (3, 1) since that is its position in the complete model.
-    --
-    -- We can
-    --   1. Traverse the model and update the positions so that they are relative to model rather
-    --      than the fragment.
-    --   2. Reparse the model as a complete model rather in fragments.
-    --
-    -- The second one is easier so that's we'll do for now. There shouldn't be any errors since
-    -- each individual fragment already passed.
-    ast <- case asts of
-      -- Special case: if there is only one fragment, then the complete model is contained within it.
-      -- Don't need to reparse. This is the common case.
-      [oneFrag] -> return oneFrag
-      _ -> do
-        -- Combine all the fragment syntaxes
-        let completeModel = concat $ modelFrags env
-        completeAst <- (parseFrag $ args env) completeModel
-        liftParseErr completeAst
+    (astErr, otherTokens') <- (parseFrag $ args env) completeModel
+    ast <- liftParseErr astErr
 
-    putEnv env{ cAst = Just ast, astModuleTrace = traceAstModule ast }
+    putEnv env{ cAst = Just ast, astModuleTrace = traceAstModule ast, otherTokens = otherTokens' }
   where
-  parseFrag :: (Monad m) => ClaferArgs -> String -> ClaferT m (Err Module)
-  parseFrag args' =
-    (>>= (return . pModule)) .
-    (if not
-      ((new_layout args') ||
-      (no_layout args'))
-    then
-       resolveLayout
-    else
-       return)
-    . myLexer .
-    (if (not $ no_layout args') &&
-        (new_layout args')
-     then
-       resLayout
-     else
-       id)
+  parseFrag :: (Monad m) => ClaferArgs -> String    -> ClaferT m (Err Module, [Token])
+  parseFrag                 args'         inputModel = do
+    let model' = if (not $ no_layout args') && (new_layout args') then resLayout inputModel else inputModel
+    let allTokens = myLexer model'
+    let (parseableTokens, otherTokens') = partition isParseable allTokens
+    tokens2 <- if not ((new_layout args') || (no_layout args')) then resolveLayout parseableTokens else return parseableTokens
+    return (pModule tokens2, otherTokens')
+    where
+      isParseable (PT _ (T_PosLineComment _))  = False
+      isParseable (PT _ (T_PosBlockComment _)) = False
+      isParseable (PT _ (T_PosAlloy _))        = False
+      isParseable (PT _ (T_PosChoco _))        = False
+      isParseable _                            = True
 
 desugar :: Monad m => Maybe URL -> ClaferT m IModule
 desugar mURL = do
@@ -435,13 +406,13 @@
     genFragments :: [Declaration] -> [Pos] -> Map.Map Span [Ir] -> [(Span, String)] -> [String]
     genFragments []           _            _     comments = printComments comments
     genFragments (decl:decls') []           irMap comments = let (comments', c) = printPreComment (getSpan decl) comments in
-                                                                   [c] ++ (cleanOutput $ revertLayout $ printDeclaration decl 0 irMap True $ inDecl decl comments') : (genFragments decls' [] irMap $ afterDecl decl comments)
+                                                                   [c] ++ (cleanOutput $ revertLayout $ printDeclaration decl 0 irMap True $ inDecl decl comments') : (genFragments decls' [] irMap $ afterDecl decl comments')
     genFragments (decl:decls') (frg:frgs) irMap comments = if lne decl < frg
                                                                  then let (comments', c) = printPreComment (getSpan decl) comments in
-                                                                   [c] ++ (cleanOutput $ revertLayout $ printDeclaration decl 0 irMap True $ inDecl decl comments') : (genFragments decls' (frg:frgs) irMap $ afterDecl decl comments)
+                                                                   [c] ++ (cleanOutput $ revertLayout $ printDeclaration decl 0 irMap True $ inDecl decl comments') : (genFragments decls' (frg:frgs) irMap $ afterDecl decl comments')
                                                                  else "<!-- # FRAGMENT /-->" : genFragments (decl:decls') frgs irMap comments
     inDecl :: Declaration -> [(Span, String)] -> [(Span, String)]
-    inDecl decl comments = let s = getSpan decl in dropWhile (\x -> fst x < s) comments
+    inDecl decl comments = let s = getSpan decl in dropWhile (\x -> fst x <= s) comments
     afterDecl :: Declaration -> [(Span, String)] -> [(Span, String)]
     afterDecl decl comments = let (Span _ (Pos line' _)) = getSpan decl in dropWhile (\(x, _) -> let (Span _ (Pos line'' _)) = x in line'' <= line') comments
     printComments [] = []
@@ -479,6 +450,7 @@
       (hasNoRealLiterals, hasNoProductOperator) = iExpBasedChecks iModule
       hasNoReferenceToReal = iClaferBasedChecks iModule
       cargs = args env
+      otherTokens' = otherTokens env
       modes = mode cargs
       stats = showStats au $ statsModule iModule
       scopes = getScopeStrategy (scope_strategy cargs) iModule
@@ -490,7 +462,7 @@
                 then
                    let
                       (imod,strMap) = astrModule iModule
-                      alloyCode = genModule cargs{mode = [Alloy]} (imod, genv) scopes
+                      alloyCode = genModule cargs{mode = [Alloy]} (imod, genv) scopes otherTokens'
                       addCommentStats = if no_stats cargs then const else addStats
                    in
                       [ (Alloy,
@@ -507,9 +479,9 @@
                 else [ (Alloy,
                         NoCompilerResult {
                          reason = "Alloy output unavailable because the model contains: "
-                                ++ (if hasNoRealLiterals then "" else " | a real number literal")
-                                ++ (if hasNoReferenceToReal then "" else " | a reference to a real")
-                                ++ (if hasNoProductOperator then "" else " | the product operator")
+                                ++ (if hasNoRealLiterals then "" else " * a real number literal")
+                                ++ (if hasNoReferenceToReal then "" else " * a reference to a real")
+                                ++ (if hasNoProductOperator then "" else " * the product operator")
                                 ++ "."
                         })
                      ]
@@ -610,7 +582,7 @@
           then [ (Choco,
                   CompilerResult {
                     extension = "js",
-                    outputCode = genCModule (iModule, genv) scopes,
+                    outputCode = genCModule (iModule, genv) scopes otherTokens',
                     statistics = stats,
                     claferEnv  = env,
                     mappingToAlloy = [],
diff --git a/src/Language/Clafer/Common.hs b/src/Language/Clafer/Common.hs
--- a/src/Language/Clafer/Common.hs
+++ b/src/Language/Clafer/Common.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DeriveDataTypeable, RankNTypes, KindSignatures, FlexibleContexts #-}
 {-
- Copyright (C) 2012-2015 Kacper Bak, Jimmy Liang <http://gsd.uwaterloo.ca>
+ Copyright (C) 2012-2015 Kacper Bak, Jimmy Liang, Michal Antkiewicz <http://gsd.uwaterloo.ca>
 
  Permission is hereby granted, free of charge, to any person obtaining a copy of
  this software and associated documentation files (the "Software"), to deal in
@@ -42,6 +42,7 @@
 type Result = String
 
 transIdent :: PosIdent -> String
+transIdent (PosIdent (_, "ref")) = "dref"
 transIdent (PosIdent (_, str)) = str
 
 mkIdent :: String -> PosIdent
@@ -75,27 +76,22 @@
 getRefIds :: PExp -> [String]
 getRefIds (PExp _ _ _ (IClaferId{ _sident = s})) = [s]
 getRefIds (PExp _ _ _ (IFunExp{_op=".", _exps = [_, rightExp]})) = getRefIds rightExp
-getRefIds (PExp _ _ _ (IFunExp{_op="ifthenelse", _exps = [_, leftExp, rightExp]})) = getRefIds leftExp ++ getRefIds rightExp
 getRefIds (PExp _ _ _ (IFunExp{_op="++", _exps = [leftExp, rightExp]})) = getRefIds leftExp ++ getRefIds rightExp
 getRefIds (PExp _ _ _ (IFunExp{_op=",",  _exps = [leftExp, rightExp]})) = getRefIds leftExp ++ getRefIds rightExp
 getRefIds (PExp _ _ _ (IFunExp{_op="--", _exps = [leftExp, rightExp]})) = getRefIds leftExp ++ getRefIds rightExp
 getRefIds (PExp _ _ _ (IFunExp{_op="**", _exps = [leftExp, rightExp]})) = getRefIds leftExp ++ getRefIds rightExp
-getRefIds (PExp _ _ _ (IFunExp{_op="<:", _exps = [_, rightExp]})) = getRefIds rightExp
-getRefIds (PExp _ _ _ (IFunExp{_op=":>", _exps = [leftExp, _]})) = getRefIds leftExp
 getRefIds (PExp _ _ _ (IInt _)) = [integerType]
 getRefIds (PExp _ _ _ (IDouble _)) = [doubleType]
 getRefIds (PExp _ _ _ (IReal _)) = [realType]
 getRefIds (PExp _ _ _ (IStr _)) = [stringType]
+getRefIds (PExp _ _ _ (IDeclPExp{_quant = ISome})) = []
 getRefIds pexp' = error $ "[Bug] Commmon.getRefIds called on unexpected argument '" ++ show pexp' ++ "'"
 
 isEqClaferId :: String -> IClafer -> Bool
 isEqClaferId    uid'      claf'    = _uid claf' == uid'
 
-mkPLClaferId :: CName -> Bool -> ClaferBinding -> PExp
-mkPLClaferId id' isTop' bind' = pExpDefPidPos $ IClaferId "" id' isTop' bind'
-
-pExpDefPidPos :: IExp -> PExp
-pExpDefPidPos = pExpDefPid noSpan
+mkPLClaferId :: Span -> CName -> Bool -> ClaferBinding -> PExp
+mkPLClaferId pos' id' isTop' bind' = pExpDefPid pos' $ IClaferId "" id' isTop' bind'
 
 pExpDefPid :: Span -> IExp -> PExp
 pExpDefPid = pExpDef ""
@@ -150,10 +146,10 @@
     allClafers :: [ IClafer ]
     allClafers = universeOn biplate iModule
     rootClafer = IClafer noSpan False (Just $ IGCard False (0, -1)) rootIdent rootIdent "" Nothing Nothing (Just (1,1)) (1, 1) (_mDecls iModule)
-    integerClafer = IClafer noSpan False (Just $ IGCard False (0, -1)) integerType integerType "" (Just $ pExpDefPidPos $ IClaferId "" doubleType True $ Just doubleType) Nothing (Just (1,1)) (1, 1) []
-    intClafer = IClafer noSpan False (Just $ IGCard False (0, -1)) "int" "int" "" (Just $ pExpDefPidPos $ IClaferId "" doubleType True $ Just doubleType) Nothing (Just (1,1)) (1, 1) []
+    integerClafer = IClafer noSpan False (Just $ IGCard False (0, -1)) integerType integerType "" (Just $ pExpDefPid noSpan $ IClaferId "" doubleType True $ Just doubleType) Nothing (Just (1,1)) (1, 1) []
+    intClafer = IClafer noSpan False (Just $ IGCard False (0, -1)) "int" "int" "" (Just $ pExpDefPid noSpan $ IClaferId "" doubleType True $ Just doubleType) Nothing (Just (1,1)) (1, 1) []
     stringClafer = IClafer noSpan False (Just $ IGCard False (0, -1)) stringType stringType "" Nothing Nothing (Just (1,1)) (1, 1) []
-    doubleClafer = IClafer noSpan False (Just $ IGCard False (0, -1)) doubleType doubleType "" (Just $ pExpDefPidPos $ IClaferId "" realType True $ Just realType) Nothing (Just (1,1)) (1, 1) []
+    doubleClafer = IClafer noSpan False (Just $ IGCard False (0, -1)) doubleType doubleType "" (Just $ pExpDefPid noSpan $ IClaferId "" realType True $ Just realType) Nothing (Just (1,1)) (1, 1) []
     realClafer = IClafer noSpan False (Just $ IGCard False (0, -1)) realType realType "" Nothing Nothing (Just (1,1)) (1, 1) []
     booleanClafer = IClafer noSpan False (Just $ IGCard False (0, -1)) booleanType booleanType "" Nothing Nothing (Just (1,1)) (1, 1) []
     clafer = IClafer noSpan False (Just $ IGCard False (0, -1)) baseClafer baseClafer "" Nothing Nothing (Just (1,1)) (1, 1) []
@@ -488,9 +484,9 @@
 iIfThenElse :: String
 iIfThenElse   = "ifthenelse"
 
-mkIFunExp :: String -> [IExp] -> IExp
-mkIFunExp _ (x:[]) = x
-mkIFunExp op' xs = foldl1 (\x y -> IFunExp op' $ map (PExp Nothing "" noSpan) [x,y]) xs
+mkIFunExp :: Span -> String -> [IExp] -> IExp
+mkIFunExp _ _ (x:[]) = x
+mkIFunExp pos' op' xs = foldl1 (\x y -> IFunExp op' $ map (PExp Nothing "" pos') [x,y]) xs
 
 toLowerS :: String -> String
 toLowerS "" = ""
@@ -511,14 +507,14 @@
 parentIdent :: String
 parentIdent = "parent"
 
-refIdent :: String
-refIdent = "ref"
+drefIdent :: String
+drefIdent = "dref"
 
 childrenIdent :: String
 childrenIdent = "children"
 
 specialNames :: [String]
-specialNames = [thisIdent, parentIdent, refIdent, rootIdent, childrenIdent]
+specialNames = [thisIdent, parentIdent, drefIdent, rootIdent, childrenIdent]
 
 isSpecial :: String -> Bool
 isSpecial = flip elem specialNames
diff --git a/src/Language/Clafer/Css.hs b/src/Language/Clafer/Css.hs
--- a/src/Language/Clafer/Css.hs
+++ b/src/Language/Clafer/Css.hs
@@ -34,6 +34,7 @@
   ".standalonecomment { color: green; font-style:italic }",
   ".inlinecomment { color: green; padding-left:20px; font-style:italic }",
   ".error{background-color: yellow; color: red }",
+  ".deprecated{color: orange }",
   ".indent{padding-left:20px}",
   "a[href$='Lookup failed'] {color: red}",
   "a[href$='Uid not found'] {color: red}",
diff --git a/src/Language/Clafer/Front/AbsClafer.hs b/src/Language/Clafer/Front/AbsClafer.hs
--- a/src/Language/Clafer/Front/AbsClafer.hs
+++ b/src/Language/Clafer/Front/AbsClafer.hs
@@ -38,6 +38,14 @@
   deriving (Eq, Ord, Show, Read, Data, Typeable, Generic)
 newtype PosIdent = PosIdent ((Int,Int),String)
   deriving (Eq, Ord, Show, Read, Data, Typeable, Generic)
+newtype PosLineComment = PosLineComment ((Int,Int),String)
+  deriving (Eq, Ord, Show, Read, Data, Typeable, Generic)
+newtype PosBlockComment = PosBlockComment ((Int,Int),String)
+  deriving (Eq, Ord, Show, Read, Data, Typeable, Generic)
+newtype PosAlloy = PosAlloy ((Int,Int),String)
+  deriving (Eq, Ord, Show, Read, Data, Typeable, Generic)
+newtype PosChoco = PosChoco ((Int,Int),String)
+  deriving (Eq, Ord, Show, Read, Data, Typeable, Generic)
 instance Spannable PosInteger where
   getSpan (PosInteger ((c, l), lex')) = 
     Span (Pos c' l') (Pos c' $ l' + len lex')
@@ -68,6 +76,30 @@
     where
       c' = toInteger c
       l' = toInteger l
+instance Spannable PosLineComment where
+  getSpan (PosLineComment ((c, l), lex')) = 
+    Span (Pos c' l') (Pos c' $ l' + len lex')
+    where
+      c' = toInteger c
+      l' = toInteger l
+instance Spannable PosBlockComment where
+  getSpan (PosBlockComment ((c, l), lex')) = 
+    Span (Pos c' l') (Pos c' $ l' + len lex')
+    where
+      c' = toInteger c
+      l' = toInteger l
+instance Spannable PosAlloy where
+  getSpan (PosAlloy ((c, l), lex')) = 
+    Span (Pos c' l') (Pos c' $ l' + len lex')
+    where
+      c' = toInteger c
+      l' = toInteger l
+instance Spannable PosChoco where
+  getSpan (PosChoco ((c, l), lex')) = 
+    Span (Pos c' l') (Pos c' $ l' + len lex')
+    where
+      c' = toInteger c
+      l' = toInteger l
 data Module = Module Span [Declaration]
   deriving (Eq, Ord, Show, Read, Data, Typeable, Generic)
 
@@ -241,6 +273,7 @@
     | EUnionCom Span Exp Exp
     | EDifference Span Exp Exp
     | EIntersection Span Exp Exp
+    | EIntersectionDeprecated Span Exp Exp
     | EJoin Span Exp Exp
     | ClaferId Span Name
     | EInt Span PosInteger
@@ -287,6 +320,7 @@
     getSpan (EUnionCom s _ _ ) = s
     getSpan (EDifference s _ _ ) = s
     getSpan (EIntersection s _ _ ) = s
+    getSpan (EIntersectionDeprecated s _ _ ) = s
     getSpan (EJoin s _ _ ) = s
     getSpan (ClaferId s _ ) = s
     getSpan (EInt s _ ) = s
diff --git a/src/Language/Clafer/Front/LexClafer.x b/src/Language/Clafer/Front/LexClafer.x
--- a/src/Language/Clafer/Front/LexClafer.x
+++ b/src/Language/Clafer/Front/LexClafer.x
@@ -20,11 +20,9 @@
 $u = [\0-\255]          -- universal: any character
 
 @rsyms =    -- symbols and non-identifier-like reserved words
-   \= | \[ | \] | \< \< | \> \> | \{ | \} | \` | \: | \- \> | \- \> \> | \: \= | \? | \+ | \* | \. \. | \| | \< \= \> | \= \> | \| \| | \& \& | \! | \< | \> | \< \= | \> \= | \! \= | \- | \/ | \% | \# | \< \: | \: \> | \+ \+ | \, | \- \- | \* \* | \. | \; | \\ | \( | \)
+   \= | \[ | \] | \< \< | \> \> | \{ | \} | \` | \: | \- \> | \- \> \> | \: \= | \? | \+ | \* | \. \. | \| | \< \= \> | \= \> | \| \| | \& \& | \! | \< | \> | \< \= | \> \= | \! \= | \- | \/ | \% | \# | \< \: | \: \> | \+ \+ | \, | \- \- | \* \* | \& | \. | \; | \\ | \( | \)
 
 :-
-"//" [.]* ; -- Toss single line comments
-"/*" ([$u # \*] | \*+ [$u # [\* \/]])* ("*")+ "/" ;
 
 $white+ ;
 @rsyms { tok (\p s -> PT p (eitherResIdent (TV . share) s)) }
@@ -33,6 +31,10 @@
 $d + \. $d + { tok (\p s -> PT p (eitherResIdent (T_PosReal . share) s)) }
 \" ($u # [\" \\]| \\ [\" \\ n t]) * \" { tok (\p s -> PT p (eitherResIdent (T_PosString . share) s)) }
 $l ($l | $d | \_ | \')* { tok (\p s -> PT p (eitherResIdent (T_PosIdent . share) s)) }
+\/ \/ ($u # \n)* { tok (\p s -> PT p (eitherResIdent (T_PosLineComment . share) s)) }
+\/ \* ($u # \* | \* + ($u # [\* \/]))* \* + \/ { tok (\p s -> PT p (eitherResIdent (T_PosBlockComment . share) s)) }
+\[ a l l o y \| ($u # \| | \| + ($u # \])) * (\| \]) { tok (\p s -> PT p (eitherResIdent (T_PosAlloy . share) s)) }
+\[ c h o c o \| ($u # \| | \| + ($u # \])) * (\| \]) { tok (\p s -> PT p (eitherResIdent (T_PosChoco . share) s)) }
 
 $l $i*   { tok (\p s -> PT p (eitherResIdent (TV . share) s)) }
 
@@ -60,6 +62,10 @@
  | T_PosReal !String
  | T_PosString !String
  | T_PosIdent !String
+ | T_PosLineComment !String
+ | T_PosBlockComment !String
+ | T_PosAlloy !String
+ | T_PosChoco !String
 
  deriving (Eq,Show,Ord)
 
@@ -99,6 +105,10 @@
   PT _ (T_PosReal s) -> s
   PT _ (T_PosString s) -> s
   PT _ (T_PosIdent s) -> s
+  PT _ (T_PosLineComment s) -> s
+  PT _ (T_PosBlockComment s) -> s
+  PT _ (T_PosAlloy s) -> s
+  PT _ (T_PosChoco s) -> s
 
 
 data BTree = N | B String Tok BTree BTree deriving (Show)
@@ -112,7 +122,7 @@
                               | s == a = t
 
 resWords :: BTree
-resWords = b ">>" 33 (b "." 17 (b "**" 9 (b "&&" 5 (b "#" 3 (b "!=" 2 (b "!" 1 N N) N) (b "%" 4 N N)) (b ")" 7 (b "(" 6 N N) (b "*" 8 N N))) (b "-" 13 (b "++" 11 (b "+" 10 N N) (b "," 12 N N)) (b "->" 15 (b "--" 14 N N) (b "->>" 16 N N)))) (b "<:" 25 (b ":=" 21 (b "/" 19 (b ".." 18 N N) (b ":" 20 N N)) (b ";" 23 (b ":>" 22 N N) (b "<" 24 N N))) (b "=" 29 (b "<=" 27 (b "<<" 26 N N) (b "<=>" 28 N N)) (b ">" 31 (b "=>" 30 N N) (b ">=" 32 N N))))) (b "min" 49 (b "assert" 41 (b "]" 37 (b "[" 35 (b "?" 34 N N) (b "\\" 36 N N)) (b "abstract" 39 (b "`" 38 N N) (b "all" 40 N N))) (b "if" 45 (b "else" 43 (b "disj" 42 N N) (b "enum" 44 N N)) (b "lone" 47 (b "in" 46 N N) (b "max" 48 N N)))) (b "some" 57 (b "one" 53 (b "no" 51 (b "mux" 50 N N) (b "not" 52 N N)) (b "or" 55 (b "opt" 54 N N) (b "product" 56 N N))) (b "{" 61 (b "then" 59 (b "sum" 58 N N) (b "xor" 60 N N)) (b "||" 63 (b "|" 62 N N) (b "}" 64 N N)))))
+resWords = b ">=" 33 (b "->>" 17 (b "*" 9 (b "&" 5 (b "#" 3 (b "!=" 2 (b "!" 1 N N) N) (b "%" 4 N N)) (b "(" 7 (b "&&" 6 N N) (b ")" 8 N N))) (b "," 13 (b "+" 11 (b "**" 10 N N) (b "++" 12 N N)) (b "--" 15 (b "-" 14 N N) (b "->" 16 N N)))) (b "<" 25 (b ":" 21 (b ".." 19 (b "." 18 N N) (b "/" 20 N N)) (b ":>" 23 (b ":=" 22 N N) (b ";" 24 N N))) (b "<=>" 29 (b "<<" 27 (b "<:" 26 N N) (b "<=" 28 N N)) (b "=>" 31 (b "=" 30 N N) (b ">" 32 N N))))) (b "min" 50 (b "assert" 42 (b "]" 38 (b "[" 36 (b "?" 35 (b ">>" 34 N N) N) (b "\\" 37 N N)) (b "abstract" 40 (b "`" 39 N N) (b "all" 41 N N))) (b "if" 46 (b "else" 44 (b "disj" 43 N N) (b "enum" 45 N N)) (b "lone" 48 (b "in" 47 N N) (b "max" 49 N N)))) (b "some" 58 (b "one" 54 (b "no" 52 (b "mux" 51 N N) (b "not" 53 N N)) (b "or" 56 (b "opt" 55 N N) (b "product" 57 N N))) (b "{" 62 (b "then" 60 (b "sum" 59 N N) (b "xor" 61 N N)) (b "||" 64 (b "|" 63 N N) (b "}" 65 N N)))))
    where b s n = let bs = id s
                   in B bs (TS bs n)
 
diff --git a/src/Language/Clafer/Front/ParClafer.y b/src/Language/Clafer/Front/ParClafer.y
--- a/src/Language/Clafer/Front/ParClafer.y
+++ b/src/Language/Clafer/Front/ParClafer.y
@@ -21,72 +21,77 @@
   '!=' { 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 _ 21) }
-  ':>' { PT _ (TS _ 22) }
-  ';' { PT _ (TS _ 23) }
-  '<' { PT _ (TS _ 24) }
-  '<:' { PT _ (TS _ 25) }
-  '<<' { PT _ (TS _ 26) }
-  '<=' { PT _ (TS _ 27) }
-  '<=>' { PT _ (TS _ 28) }
-  '=' { PT _ (TS _ 29) }
-  '=>' { PT _ (TS _ 30) }
-  '>' { PT _ (TS _ 31) }
-  '>=' { PT _ (TS _ 32) }
-  '>>' { PT _ (TS _ 33) }
-  '?' { PT _ (TS _ 34) }
-  '[' { PT _ (TS _ 35) }
-  '\\' { PT _ (TS _ 36) }
-  ']' { PT _ (TS _ 37) }
-  '`' { PT _ (TS _ 38) }
-  'abstract' { PT _ (TS _ 39) }
-  'all' { PT _ (TS _ 40) }
-  'assert' { PT _ (TS _ 41) }
-  'disj' { PT _ (TS _ 42) }
-  'else' { PT _ (TS _ 43) }
-  'enum' { PT _ (TS _ 44) }
-  'if' { PT _ (TS _ 45) }
-  'in' { PT _ (TS _ 46) }
-  'lone' { PT _ (TS _ 47) }
-  'max' { PT _ (TS _ 48) }
-  'min' { PT _ (TS _ 49) }
-  'mux' { PT _ (TS _ 50) }
-  'no' { PT _ (TS _ 51) }
-  'not' { PT _ (TS _ 52) }
-  'one' { PT _ (TS _ 53) }
-  'opt' { PT _ (TS _ 54) }
-  'or' { PT _ (TS _ 55) }
-  'product' { PT _ (TS _ 56) }
-  'some' { PT _ (TS _ 57) }
-  'sum' { PT _ (TS _ 58) }
-  'then' { PT _ (TS _ 59) }
-  'xor' { PT _ (TS _ 60) }
-  '{' { PT _ (TS _ 61) }
-  '|' { PT _ (TS _ 62) }
-  '||' { PT _ (TS _ 63) }
-  '}' { PT _ (TS _ 64) }
+  '&' { 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) }
+  ':=' { PT _ (TS _ 22) }
+  ':>' { PT _ (TS _ 23) }
+  ';' { PT _ (TS _ 24) }
+  '<' { PT _ (TS _ 25) }
+  '<:' { PT _ (TS _ 26) }
+  '<<' { PT _ (TS _ 27) }
+  '<=' { PT _ (TS _ 28) }
+  '<=>' { PT _ (TS _ 29) }
+  '=' { PT _ (TS _ 30) }
+  '=>' { PT _ (TS _ 31) }
+  '>' { PT _ (TS _ 32) }
+  '>=' { PT _ (TS _ 33) }
+  '>>' { PT _ (TS _ 34) }
+  '?' { PT _ (TS _ 35) }
+  '[' { PT _ (TS _ 36) }
+  '\\' { PT _ (TS _ 37) }
+  ']' { PT _ (TS _ 38) }
+  '`' { PT _ (TS _ 39) }
+  'abstract' { PT _ (TS _ 40) }
+  'all' { PT _ (TS _ 41) }
+  'assert' { PT _ (TS _ 42) }
+  'disj' { PT _ (TS _ 43) }
+  'else' { PT _ (TS _ 44) }
+  'enum' { PT _ (TS _ 45) }
+  'if' { PT _ (TS _ 46) }
+  'in' { PT _ (TS _ 47) }
+  'lone' { PT _ (TS _ 48) }
+  'max' { PT _ (TS _ 49) }
+  'min' { PT _ (TS _ 50) }
+  'mux' { PT _ (TS _ 51) }
+  'no' { PT _ (TS _ 52) }
+  'not' { PT _ (TS _ 53) }
+  'one' { PT _ (TS _ 54) }
+  'opt' { PT _ (TS _ 55) }
+  'or' { PT _ (TS _ 56) }
+  'product' { PT _ (TS _ 57) }
+  'some' { PT _ (TS _ 58) }
+  'sum' { PT _ (TS _ 59) }
+  'then' { PT _ (TS _ 60) }
+  'xor' { PT _ (TS _ 61) }
+  '{' { PT _ (TS _ 62) }
+  '|' { PT _ (TS _ 63) }
+  '||' { PT _ (TS _ 64) }
+  '}' { PT _ (TS _ 65) }
 
 L_PosInteger { PT _ (T_PosInteger _) }
 L_PosDouble { PT _ (T_PosDouble _) }
 L_PosReal { PT _ (T_PosReal _) }
 L_PosString { PT _ (T_PosString _) }
 L_PosIdent { PT _ (T_PosIdent _) }
+L_PosLineComment { PT _ (T_PosLineComment _) }
+L_PosBlockComment { PT _ (T_PosBlockComment _) }
+L_PosAlloy { PT _ (T_PosAlloy _) }
+L_PosChoco { PT _ (T_PosChoco _) }
 
 
 %%
@@ -96,163 +101,168 @@
 PosReal    :: { PosReal} : L_PosReal { PosReal (mkPosToken $1)}
 PosString    :: { PosString} : L_PosString { PosString (mkPosToken $1)}
 PosIdent    :: { PosIdent} : L_PosIdent { PosIdent (mkPosToken $1)}
+PosLineComment    :: { PosLineComment} : L_PosLineComment { PosLineComment (mkPosToken $1)}
+PosBlockComment    :: { PosBlockComment} : L_PosBlockComment { PosBlockComment (mkPosToken $1)}
+PosAlloy    :: { PosAlloy} : L_PosAlloy { PosAlloy (mkPosToken $1)}
+PosChoco    :: { PosChoco} : L_PosChoco { PosChoco (mkPosToken $1)}
 
 Module :: { Module }
-Module : ListDeclaration { Module ((mkCatSpan $1)) (reverse $1) }
+Module : ListDeclaration { Language.Clafer.Front.AbsClafer.Module ((mkCatSpan $1)) (reverse $1) }
 Declaration :: { Declaration }
-Declaration : 'enum' PosIdent '=' ListEnumId { EnumDecl ((mkTokenSpan $1) >- (mkCatSpan $2) >- (mkTokenSpan $3) >- (mkCatSpan $4)) $2 $4 }
-            | Element { ElementDecl ((mkCatSpan $1)) $1 }
+Declaration : 'enum' PosIdent '=' ListEnumId { Language.Clafer.Front.AbsClafer.EnumDecl ((mkTokenSpan $1) >- (mkCatSpan $2) >- (mkTokenSpan $3) >- (mkCatSpan $4)) $2 $4 }
+            | Element { Language.Clafer.Front.AbsClafer.ElementDecl ((mkCatSpan $1)) $1 }
 Clafer :: { Clafer }
-Clafer : Abstract GCard PosIdent Super Reference Card Init Elements { Clafer ((mkCatSpan $1) >- (mkCatSpan $2) >- (mkCatSpan $3) >- (mkCatSpan $4) >- (mkCatSpan $5) >- (mkCatSpan $6) >- (mkCatSpan $7) >- (mkCatSpan $8)) $1 $2 $3 $4 $5 $6 $7 $8 }
+Clafer : Abstract GCard PosIdent Super Reference Card Init Elements { Language.Clafer.Front.AbsClafer.Clafer ((mkCatSpan $1) >- (mkCatSpan $2) >- (mkCatSpan $3) >- (mkCatSpan $4) >- (mkCatSpan $5) >- (mkCatSpan $6) >- (mkCatSpan $7) >- (mkCatSpan $8)) $1 $2 $3 $4 $5 $6 $7 $8 }
 Constraint :: { Constraint }
-Constraint : '[' ListExp ']' { Constraint ((mkTokenSpan $1) >- (mkCatSpan $2) >- (mkTokenSpan $3)) (reverse $2) }
+Constraint : '[' ListExp ']' { Language.Clafer.Front.AbsClafer.Constraint ((mkTokenSpan $1) >- (mkCatSpan $2) >- (mkTokenSpan $3)) (reverse $2) }
 Assertion :: { Assertion }
-Assertion : 'assert' '[' ListExp ']' { Assertion ((mkTokenSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3) >- (mkTokenSpan $4)) (reverse $3) }
+Assertion : 'assert' '[' ListExp ']' { Language.Clafer.Front.AbsClafer.Assertion ((mkTokenSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3) >- (mkTokenSpan $4)) (reverse $3) }
 Goal :: { Goal }
-Goal : '<<' ListExp '>>' { Goal ((mkTokenSpan $1) >- (mkCatSpan $2) >- (mkTokenSpan $3)) (reverse $2) }
+Goal : '<<' ListExp '>>' { Language.Clafer.Front.AbsClafer.Goal ((mkTokenSpan $1) >- (mkCatSpan $2) >- (mkTokenSpan $3)) (reverse $2) }
 Abstract :: { Abstract }
-Abstract : {- empty -} { AbstractEmpty noSpan }
-         | 'abstract' { Abstract ((mkTokenSpan $1)) }
+Abstract : {- empty -} { Language.Clafer.Front.AbsClafer.AbstractEmpty noSpan }
+         | 'abstract' { Language.Clafer.Front.AbsClafer.Abstract ((mkTokenSpan $1)) }
 Elements :: { Elements }
-Elements : {- empty -} { ElementsEmpty noSpan }
-         | '{' ListElement '}' { ElementsList ((mkTokenSpan $1) >- (mkCatSpan $2) >- (mkTokenSpan $3)) (reverse $2) }
+Elements : {- empty -} { Language.Clafer.Front.AbsClafer.ElementsEmpty noSpan }
+         | '{' ListElement '}' { Language.Clafer.Front.AbsClafer.ElementsList ((mkTokenSpan $1) >- (mkCatSpan $2) >- (mkTokenSpan $3)) (reverse $2) }
 Element :: { Element }
-Element : Clafer { Subclafer ((mkCatSpan $1)) $1 }
-        | '`' Name Card Elements { ClaferUse ((mkTokenSpan $1) >- (mkCatSpan $2) >- (mkCatSpan $3) >- (mkCatSpan $4)) $2 $3 $4 }
-        | Constraint { Subconstraint ((mkCatSpan $1)) $1 }
-        | Goal { Subgoal ((mkCatSpan $1)) $1 }
-        | Assertion { SubAssertion ((mkCatSpan $1)) $1 }
+Element : Clafer { Language.Clafer.Front.AbsClafer.Subclafer ((mkCatSpan $1)) $1 }
+        | '`' Name Card Elements { Language.Clafer.Front.AbsClafer.ClaferUse ((mkTokenSpan $1) >- (mkCatSpan $2) >- (mkCatSpan $3) >- (mkCatSpan $4)) $2 $3 $4 }
+        | Constraint { Language.Clafer.Front.AbsClafer.Subconstraint ((mkCatSpan $1)) $1 }
+        | Goal { Language.Clafer.Front.AbsClafer.Subgoal ((mkCatSpan $1)) $1 }
+        | Assertion { Language.Clafer.Front.AbsClafer.SubAssertion ((mkCatSpan $1)) $1 }
 Super :: { Super }
-Super : {- empty -} { SuperEmpty noSpan }
-      | ':' Exp18 { SuperSome ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
+Super : {- empty -} { Language.Clafer.Front.AbsClafer.SuperEmpty noSpan }
+      | ':' Exp18 { Language.Clafer.Front.AbsClafer.SuperSome ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
 Reference :: { Reference }
-Reference : {- empty -} { ReferenceEmpty noSpan }
-          | '->' Exp15 { ReferenceSet ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
-          | '->>' Exp15 { ReferenceBag ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
+Reference : {- empty -} { Language.Clafer.Front.AbsClafer.ReferenceEmpty noSpan }
+          | '->' Exp15 { Language.Clafer.Front.AbsClafer.ReferenceSet ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
+          | '->>' Exp15 { Language.Clafer.Front.AbsClafer.ReferenceBag ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
 Init :: { Init }
-Init : {- empty -} { InitEmpty noSpan }
-     | InitHow Exp { InitSome ((mkCatSpan $1) >- (mkCatSpan $2)) $1 $2 }
+Init : {- empty -} { Language.Clafer.Front.AbsClafer.InitEmpty noSpan }
+     | InitHow Exp { Language.Clafer.Front.AbsClafer.InitSome ((mkCatSpan $1) >- (mkCatSpan $2)) $1 $2 }
 InitHow :: { InitHow }
-InitHow : '=' { InitConstant ((mkTokenSpan $1)) }
-        | ':=' { InitDefault ((mkTokenSpan $1)) }
+InitHow : '=' { Language.Clafer.Front.AbsClafer.InitConstant ((mkTokenSpan $1)) }
+        | ':=' { Language.Clafer.Front.AbsClafer.InitDefault ((mkTokenSpan $1)) }
 GCard :: { GCard }
-GCard : {- empty -} { GCardEmpty noSpan }
-      | 'xor' { GCardXor ((mkTokenSpan $1)) }
-      | 'or' { GCardOr ((mkTokenSpan $1)) }
-      | 'mux' { GCardMux ((mkTokenSpan $1)) }
-      | 'opt' { GCardOpt ((mkTokenSpan $1)) }
-      | NCard { GCardInterval ((mkCatSpan $1)) $1 }
+GCard : {- empty -} { Language.Clafer.Front.AbsClafer.GCardEmpty noSpan }
+      | 'xor' { Language.Clafer.Front.AbsClafer.GCardXor ((mkTokenSpan $1)) }
+      | 'or' { Language.Clafer.Front.AbsClafer.GCardOr ((mkTokenSpan $1)) }
+      | 'mux' { Language.Clafer.Front.AbsClafer.GCardMux ((mkTokenSpan $1)) }
+      | 'opt' { Language.Clafer.Front.AbsClafer.GCardOpt ((mkTokenSpan $1)) }
+      | NCard { Language.Clafer.Front.AbsClafer.GCardInterval ((mkCatSpan $1)) $1 }
 Card :: { Card }
-Card : {- empty -} { CardEmpty noSpan }
-     | '?' { CardLone ((mkTokenSpan $1)) }
-     | '+' { CardSome ((mkTokenSpan $1)) }
-     | '*' { CardAny ((mkTokenSpan $1)) }
-     | PosInteger { CardNum ((mkCatSpan $1)) $1 }
-     | NCard { CardInterval ((mkCatSpan $1)) $1 }
+Card : {- empty -} { Language.Clafer.Front.AbsClafer.CardEmpty noSpan }
+     | '?' { Language.Clafer.Front.AbsClafer.CardLone ((mkTokenSpan $1)) }
+     | '+' { Language.Clafer.Front.AbsClafer.CardSome ((mkTokenSpan $1)) }
+     | '*' { Language.Clafer.Front.AbsClafer.CardAny ((mkTokenSpan $1)) }
+     | PosInteger { Language.Clafer.Front.AbsClafer.CardNum ((mkCatSpan $1)) $1 }
+     | NCard { Language.Clafer.Front.AbsClafer.CardInterval ((mkCatSpan $1)) $1 }
 NCard :: { NCard }
-NCard : PosInteger '..' ExInteger { NCard ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+NCard : PosInteger '..' ExInteger { Language.Clafer.Front.AbsClafer.NCard ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
 ExInteger :: { ExInteger }
-ExInteger : '*' { ExIntegerAst ((mkTokenSpan $1)) }
-          | PosInteger { ExIntegerNum ((mkCatSpan $1)) $1 }
+ExInteger : '*' { Language.Clafer.Front.AbsClafer.ExIntegerAst ((mkTokenSpan $1)) }
+          | PosInteger { Language.Clafer.Front.AbsClafer.ExIntegerNum ((mkCatSpan $1)) $1 }
 Name :: { Name }
-Name : ListModId { Path ((mkCatSpan $1)) $1 }
+Name : ListModId { Language.Clafer.Front.AbsClafer.Path ((mkCatSpan $1)) $1 }
 Exp :: { Exp }
-Exp : 'all' 'disj' Decl '|' Exp { EDeclAllDisj ((mkTokenSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3) >- (mkTokenSpan $4) >- (mkCatSpan $5)) $3 $5 }
-    | 'all' Decl '|' Exp { EDeclAll ((mkTokenSpan $1) >- (mkCatSpan $2) >- (mkTokenSpan $3) >- (mkCatSpan $4)) $2 $4 }
-    | Quant 'disj' Decl '|' Exp { EDeclQuantDisj ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3) >- (mkTokenSpan $4) >- (mkCatSpan $5)) $1 $3 $5 }
-    | Quant Decl '|' Exp { EDeclQuant ((mkCatSpan $1) >- (mkCatSpan $2) >- (mkTokenSpan $3) >- (mkCatSpan $4)) $1 $2 $4 }
+Exp : 'all' 'disj' Decl '|' Exp { Language.Clafer.Front.AbsClafer.EDeclAllDisj ((mkTokenSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3) >- (mkTokenSpan $4) >- (mkCatSpan $5)) $3 $5 }
+    | 'all' Decl '|' Exp { Language.Clafer.Front.AbsClafer.EDeclAll ((mkTokenSpan $1) >- (mkCatSpan $2) >- (mkTokenSpan $3) >- (mkCatSpan $4)) $2 $4 }
+    | Quant 'disj' Decl '|' Exp { Language.Clafer.Front.AbsClafer.EDeclQuantDisj ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3) >- (mkTokenSpan $4) >- (mkCatSpan $5)) $1 $3 $5 }
+    | Quant Decl '|' Exp { Language.Clafer.Front.AbsClafer.EDeclQuant ((mkCatSpan $1) >- (mkCatSpan $2) >- (mkTokenSpan $3) >- (mkCatSpan $4)) $1 $2 $4 }
     | Exp1 {  $1 }
 Exp1 :: { Exp }
-Exp1 : 'max' Exp2 { EGMax ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
-     | 'min' Exp2 { EGMin ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
-     | Exp1 '<=>' Exp2 { EIff ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+Exp1 : 'max' Exp2 { Language.Clafer.Front.AbsClafer.EGMax ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
+     | 'min' Exp2 { Language.Clafer.Front.AbsClafer.EGMin ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
+     | Exp1 '<=>' Exp2 { Language.Clafer.Front.AbsClafer.EIff ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
      | Exp2 {  $1 }
 Exp2 :: { Exp }
-Exp2 : Exp2 '=>' Exp3 { EImplies ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+Exp2 : Exp2 '=>' Exp3 { Language.Clafer.Front.AbsClafer.EImplies ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
      | Exp3 {  $1 }
 Exp3 :: { Exp }
-Exp3 : Exp3 '||' Exp4 { EOr ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+Exp3 : Exp3 '||' Exp4 { Language.Clafer.Front.AbsClafer.EOr ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
      | Exp4 {  $1 }
 Exp4 :: { Exp }
-Exp4 : Exp4 'xor' Exp5 { EXor ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+Exp4 : Exp4 'xor' Exp5 { Language.Clafer.Front.AbsClafer.EXor ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
      | Exp5 {  $1 }
 Exp5 :: { Exp }
-Exp5 : Exp5 '&&' Exp6 { EAnd ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+Exp5 : Exp5 '&&' Exp6 { Language.Clafer.Front.AbsClafer.EAnd ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
      | Exp6 {  $1 }
 Exp6 :: { Exp }
-Exp6 : '!' Exp7 { ENeg ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
+Exp6 : '!' Exp7 { Language.Clafer.Front.AbsClafer.ENeg ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
      | Exp7 {  $1 }
 Exp7 :: { Exp }
-Exp7 : Exp7 '<' Exp8 { ELt ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
-     | Exp7 '>' Exp8 { EGt ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
-     | Exp7 '=' Exp8 { EEq ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
-     | Exp7 '<=' Exp8 { ELte ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
-     | Exp7 '>=' Exp8 { EGte ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
-     | Exp7 '!=' Exp8 { ENeq ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
-     | Exp7 'in' Exp8 { EIn ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
-     | Exp7 'not' 'in' Exp8 { ENin ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkTokenSpan $3) >- (mkCatSpan $4)) $1 $4 }
+Exp7 : Exp7 '<' Exp8 { Language.Clafer.Front.AbsClafer.ELt ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+     | Exp7 '>' Exp8 { Language.Clafer.Front.AbsClafer.EGt ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+     | Exp7 '=' Exp8 { Language.Clafer.Front.AbsClafer.EEq ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+     | Exp7 '<=' Exp8 { Language.Clafer.Front.AbsClafer.ELte ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+     | Exp7 '>=' Exp8 { Language.Clafer.Front.AbsClafer.EGte ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+     | Exp7 '!=' Exp8 { Language.Clafer.Front.AbsClafer.ENeq ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+     | Exp7 'in' Exp8 { Language.Clafer.Front.AbsClafer.EIn ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+     | Exp7 'not' 'in' Exp8 { Language.Clafer.Front.AbsClafer.ENin ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkTokenSpan $3) >- (mkCatSpan $4)) $1 $4 }
      | Exp8 {  $1 }
 Exp8 :: { Exp }
-Exp8 : Quant Exp12 { EQuantExp ((mkCatSpan $1) >- (mkCatSpan $2)) $1 $2 }
+Exp8 : Quant Exp12 { Language.Clafer.Front.AbsClafer.EQuantExp ((mkCatSpan $1) >- (mkCatSpan $2)) $1 $2 }
      | Exp9 {  $1 }
 Exp9 :: { Exp }
-Exp9 : Exp9 '+' Exp10 { EAdd ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
-     | Exp9 '-' Exp10 { ESub ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+Exp9 : Exp9 '+' Exp10 { Language.Clafer.Front.AbsClafer.EAdd ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+     | Exp9 '-' Exp10 { Language.Clafer.Front.AbsClafer.ESub ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
      | Exp10 {  $1 }
 Exp10 :: { Exp }
-Exp10 : Exp10 '*' Exp11 { EMul ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
-      | Exp10 '/' Exp11 { EDiv ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
-      | Exp10 '%' Exp11 { ERem ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+Exp10 : Exp10 '*' Exp11 { Language.Clafer.Front.AbsClafer.EMul ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+      | Exp10 '/' Exp11 { Language.Clafer.Front.AbsClafer.EDiv ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+      | Exp10 '%' Exp11 { Language.Clafer.Front.AbsClafer.ERem ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
       | Exp11 {  $1 }
 Exp11 :: { Exp }
-Exp11 : 'sum' Exp12 { ESum ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
-      | 'product' Exp12 { EProd ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
-      | '#' Exp12 { ECard ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
-      | '-' Exp12 { EMinExp ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
+Exp11 : 'sum' Exp12 { Language.Clafer.Front.AbsClafer.ESum ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
+      | 'product' Exp12 { Language.Clafer.Front.AbsClafer.EProd ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
+      | '#' Exp12 { Language.Clafer.Front.AbsClafer.ECard ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
+      | '-' Exp12 { Language.Clafer.Front.AbsClafer.EMinExp ((mkTokenSpan $1) >- (mkCatSpan $2)) $2 }
       | Exp12 {  $1 }
 Exp12 :: { Exp }
-Exp12 : 'if' Exp12 'then' Exp12 'else' Exp13 { EImpliesElse ((mkTokenSpan $1) >- (mkCatSpan $2) >- (mkTokenSpan $3) >- (mkCatSpan $4) >- (mkTokenSpan $5) >- (mkCatSpan $6)) $2 $4 $6 }
+Exp12 : 'if' Exp12 'then' Exp12 'else' Exp13 { Language.Clafer.Front.AbsClafer.EImpliesElse ((mkTokenSpan $1) >- (mkCatSpan $2) >- (mkTokenSpan $3) >- (mkCatSpan $4) >- (mkTokenSpan $5) >- (mkCatSpan $6)) $2 $4 $6 }
       | Exp13 {  $1 }
 Exp13 :: { Exp }
-Exp13 : Exp13 '<:' Exp14 { EDomain ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+Exp13 : Exp13 '<:' Exp14 { Language.Clafer.Front.AbsClafer.EDomain ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
       | Exp14 {  $1 }
 Exp14 :: { Exp }
-Exp14 : Exp14 ':>' Exp15 { ERange ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+Exp14 : Exp14 ':>' Exp15 { Language.Clafer.Front.AbsClafer.ERange ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
       | Exp15 {  $1 }
 Exp15 :: { Exp }
-Exp15 : Exp15 '++' Exp16 { EUnion ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
-      | Exp15 ',' Exp16 { EUnionCom ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+Exp15 : Exp15 '++' Exp16 { Language.Clafer.Front.AbsClafer.EUnion ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+      | Exp15 ',' Exp16 { Language.Clafer.Front.AbsClafer.EUnionCom ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
       | Exp16 {  $1 }
 Exp16 :: { Exp }
-Exp16 : Exp16 '--' Exp17 { EDifference ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+Exp16 : Exp16 '--' Exp17 { Language.Clafer.Front.AbsClafer.EDifference ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
       | Exp17 {  $1 }
 Exp17 :: { Exp }
-Exp17 : Exp17 '**' Exp18 { EIntersection ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+Exp17 : Exp17 '**' Exp18 { Language.Clafer.Front.AbsClafer.EIntersection ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+      | Exp17 '&' Exp18 { Language.Clafer.Front.AbsClafer.EIntersectionDeprecated ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
       | Exp18 {  $1 }
 Exp18 :: { Exp }
-Exp18 : Exp18 '.' Exp19 { EJoin ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+Exp18 : Exp18 '.' Exp19 { Language.Clafer.Front.AbsClafer.EJoin ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
       | Exp19 {  $1 }
 Exp19 :: { Exp }
-Exp19 : Name { ClaferId ((mkCatSpan $1)) $1 }
-      | PosInteger { EInt ((mkCatSpan $1)) $1 }
-      | PosDouble { EDouble ((mkCatSpan $1)) $1 }
-      | PosReal { EReal ((mkCatSpan $1)) $1 }
-      | PosString { EStr ((mkCatSpan $1)) $1 }
+Exp19 : Name { Language.Clafer.Front.AbsClafer.ClaferId ((mkCatSpan $1)) $1 }
+      | PosInteger { Language.Clafer.Front.AbsClafer.EInt ((mkCatSpan $1)) $1 }
+      | PosDouble { Language.Clafer.Front.AbsClafer.EDouble ((mkCatSpan $1)) $1 }
+      | PosReal { Language.Clafer.Front.AbsClafer.EReal ((mkCatSpan $1)) $1 }
+      | PosString { Language.Clafer.Front.AbsClafer.EStr ((mkCatSpan $1)) $1 }
       | '(' Exp ')' {  $2 }
 Decl :: { Decl }
-Decl : ListLocId ':' Exp13 { Decl ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
+Decl : ListLocId ':' Exp15 { Language.Clafer.Front.AbsClafer.Decl ((mkCatSpan $1) >- (mkTokenSpan $2) >- (mkCatSpan $3)) $1 $3 }
 Quant :: { Quant }
-Quant : 'no' { QuantNo ((mkTokenSpan $1)) }
-      | 'not' { QuantNot ((mkTokenSpan $1)) }
-      | 'lone' { QuantLone ((mkTokenSpan $1)) }
-      | 'one' { QuantOne ((mkTokenSpan $1)) }
-      | 'some' { QuantSome ((mkTokenSpan $1)) }
+Quant : 'no' { Language.Clafer.Front.AbsClafer.QuantNo ((mkTokenSpan $1)) }
+      | 'not' { Language.Clafer.Front.AbsClafer.QuantNot ((mkTokenSpan $1)) }
+      | 'lone' { Language.Clafer.Front.AbsClafer.QuantLone ((mkTokenSpan $1)) }
+      | 'one' { Language.Clafer.Front.AbsClafer.QuantOne ((mkTokenSpan $1)) }
+      | 'some' { Language.Clafer.Front.AbsClafer.QuantSome ((mkTokenSpan $1)) }
 EnumId :: { EnumId }
-EnumId : PosIdent { EnumIdIdent ((mkCatSpan $1)) $1 }
+EnumId : PosIdent { Language.Clafer.Front.AbsClafer.EnumIdIdent ((mkCatSpan $1)) $1 }
 ModId :: { ModId }
-ModId : PosIdent { ModIdIdent ((mkCatSpan $1)) $1 }
+ModId : PosIdent { Language.Clafer.Front.AbsClafer.ModIdIdent ((mkCatSpan $1)) $1 }
 LocId :: { LocId }
-LocId : PosIdent { LocIdIdent ((mkCatSpan $1)) $1 }
+LocId : PosIdent { Language.Clafer.Front.AbsClafer.LocIdIdent ((mkCatSpan $1)) $1 }
 ListDeclaration :: { [Declaration] }
 ListDeclaration : {- empty -} { []  }
                 | ListDeclaration Declaration { flip (:)  $1 $2 }
diff --git a/src/Language/Clafer/Front/PrintClafer.hs b/src/Language/Clafer/Front/PrintClafer.hs
--- a/src/Language/Clafer/Front/PrintClafer.hs
+++ b/src/Language/Clafer/Front/PrintClafer.hs
@@ -48,15 +48,15 @@
 -- the printer class does the job
 class Print a where
   prt :: Int -> a -> Doc
-  prtList :: [a] -> Doc
-  prtList = concatD . map (prt 0)
+  prtList :: Int -> [a] -> Doc
+  prtList i = concatD . map (prt i)
 
 instance Print a => Print [a] where
-  prt _ = prtList
+  prt = prtList
 
 instance Print Char where
   prt _ s = doc (showChar '\'' . mkEsc '\'' s . showChar '\'')
-  prtList s = doc (showChar '"' . concatS (map (mkEsc '"') s) . showChar '"')
+  prtList _ s = doc (showChar '"' . concatS (map (mkEsc '"') s) . showChar '"')
 
 mkEsc :: Char -> Char -> ShowS
 mkEsc q s = case s of
@@ -99,7 +99,23 @@
   prt _ (PosIdent (_,i)) = doc (showString ( i))
 
 
+instance Print PosLineComment where
+  prt _ (PosLineComment (_,i)) = doc (showString ( i))
 
+
+instance Print PosBlockComment where
+  prt _ (PosBlockComment (_,i)) = doc (showString ( i))
+
+
+instance Print PosAlloy where
+  prt _ (PosAlloy (_,i)) = doc (showString ( i))
+
+
+instance Print PosChoco where
+  prt _ (PosChoco (_,i)) = doc (showString ( i))
+
+
+
 instance Print Module where
   prt i e = case e of
     Module _ declarations -> prPrec i 0 (concatD [prt 0 declarations])
@@ -108,10 +124,8 @@
   prt i e = case e of
     EnumDecl _ posident enumids -> prPrec i 0 (concatD [doc (showString "enum"), prt 0 posident, doc (showString "="), prt 0 enumids])
     ElementDecl _ element -> prPrec i 0 (concatD [prt 0 element])
-  prtList es = case es of
-   [] -> (concatD [])
-   x:xs -> (concatD [prt 0 x, prt 0 xs])
-
+  prtList _ [] = (concatD [])
+  prtList _ (x:xs) = (concatD [prt 0 x, prt 0 xs])
 instance Print Clafer where
   prt i e = case e of
     Clafer _ abstract gcard posident super reference card init elements -> prPrec i 0 (concatD [prt 0 abstract, prt 0 gcard, prt 0 posident, prt 0 super, prt 0 reference, prt 0 card, prt 0 init, prt 0 elements])
@@ -145,20 +159,18 @@
     Subconstraint _ constraint -> prPrec i 0 (concatD [prt 0 constraint])
     Subgoal _ goal -> prPrec i 0 (concatD [prt 0 goal])
     SubAssertion _ assertion -> prPrec i 0 (concatD [prt 0 assertion])
-  prtList es = case es of
-   [] -> (concatD [])
-   x:xs -> (concatD [prt 0 x, prt 0 xs])
-
+  prtList _ [] = (concatD [])
+  prtList _ (x:xs) = (concatD [prt 0 x, prt 0 xs])
 instance Print Super where
   prt i e = case e of
     SuperEmpty _ -> prPrec i 0 (concatD [])
-    SuperSome _ exp18 -> prPrec i 0 (concatD [doc (showString ":"), prt 18 exp18])
+    SuperSome _ exp -> prPrec i 0 (concatD [doc (showString ":"), prt 18 exp])
 
 instance Print Reference where
   prt i e = case e of
     ReferenceEmpty _ -> prPrec i 0 (concatD [])
-    ReferenceSet _ exp15 -> prPrec i 0 (concatD [doc (showString "->"), prt 15 exp15])
-    ReferenceBag _ exp15 -> prPrec i 0 (concatD [doc (showString "->>"), prt 15 exp15])
+    ReferenceSet _ exp -> prPrec i 0 (concatD [doc (showString "->"), prt 15 exp])
+    ReferenceBag _ exp -> prPrec i 0 (concatD [doc (showString "->>"), prt 15 exp])
 
 instance Print Init where
   prt i e = case e of
@@ -207,52 +219,51 @@
     EDeclAll _ decl exp -> prPrec i 0 (concatD [doc (showString "all"), prt 0 decl, doc (showString "|"), prt 0 exp])
     EDeclQuantDisj _ quant decl exp -> prPrec i 0 (concatD [prt 0 quant, doc (showString "disj"), prt 0 decl, doc (showString "|"), prt 0 exp])
     EDeclQuant _ quant decl exp -> prPrec i 0 (concatD [prt 0 quant, prt 0 decl, doc (showString "|"), prt 0 exp])
-    EGMax _ exp2 -> prPrec i 1 (concatD [doc (showString "max"), prt 2 exp2])
-    EGMin _ exp2 -> prPrec i 1 (concatD [doc (showString "min"), prt 2 exp2])
+    EGMax _ exp -> prPrec i 1 (concatD [doc (showString "max"), prt 2 exp])
+    EGMin _ exp -> prPrec i 1 (concatD [doc (showString "min"), prt 2 exp])
     EIff _ exp1 exp2 -> prPrec i 1 (concatD [prt 1 exp1, doc (showString "<=>"), prt 2 exp2])
-    EImplies _ exp2 exp3 -> prPrec i 2 (concatD [prt 2 exp2, doc (showString "=>"), prt 3 exp3])
-    EOr _ exp3 exp4 -> prPrec i 3 (concatD [prt 3 exp3, doc (showString "||"), prt 4 exp4])
-    EXor _ exp4 exp5 -> prPrec i 4 (concatD [prt 4 exp4, doc (showString "xor"), prt 5 exp5])
-    EAnd _ exp5 exp6 -> prPrec i 5 (concatD [prt 5 exp5, doc (showString "&&"), prt 6 exp6])
-    ENeg _ exp7 -> prPrec i 6 (concatD [doc (showString "!"), prt 7 exp7])
-    ELt _ exp7 exp8 -> prPrec i 7 (concatD [prt 7 exp7, doc (showString "<"), prt 8 exp8])
-    EGt _ exp7 exp8 -> prPrec i 7 (concatD [prt 7 exp7, doc (showString ">"), prt 8 exp8])
-    EEq _ exp7 exp8 -> prPrec i 7 (concatD [prt 7 exp7, doc (showString "="), prt 8 exp8])
-    ELte _ exp7 exp8 -> prPrec i 7 (concatD [prt 7 exp7, doc (showString "<="), prt 8 exp8])
-    EGte _ exp7 exp8 -> prPrec i 7 (concatD [prt 7 exp7, doc (showString ">="), prt 8 exp8])
-    ENeq _ exp7 exp8 -> prPrec i 7 (concatD [prt 7 exp7, doc (showString "!="), prt 8 exp8])
-    EIn _ exp7 exp8 -> prPrec i 7 (concatD [prt 7 exp7, doc (showString "in"), prt 8 exp8])
-    ENin _ exp7 exp8 -> prPrec i 7 (concatD [prt 7 exp7, doc (showString "not"), doc (showString "in"), prt 8 exp8])
-    EQuantExp _ quant exp12 -> prPrec i 8 (concatD [prt 0 quant, prt 12 exp12])
-    EAdd _ exp9 exp10 -> prPrec i 9 (concatD [prt 9 exp9, doc (showString "+"), prt 10 exp10])
-    ESub _ exp9 exp10 -> prPrec i 9 (concatD [prt 9 exp9, doc (showString "-"), prt 10 exp10])
-    EMul _ exp10 exp11 -> prPrec i 10 (concatD [prt 10 exp10, doc (showString "*"), prt 11 exp11])
-    EDiv _ exp10 exp11 -> prPrec i 10 (concatD [prt 10 exp10, doc (showString "/"), prt 11 exp11])
-    ERem _ exp10 exp11 -> prPrec i 10 (concatD [prt 10 exp10, doc (showString "%"), prt 11 exp11])
-    ESum _ exp12 -> prPrec i 11 (concatD [doc (showString "sum"), prt 12 exp12])
-    EProd _ exp12 -> prPrec i 11 (concatD [doc (showString "product"), prt 12 exp12])
-    ECard _ exp12 -> prPrec i 11 (concatD [doc (showString "#"), prt 12 exp12])
-    EMinExp _ exp12 -> prPrec i 11 (concatD [doc (showString "-"), prt 12 exp12])
-    EImpliesElse _ exp120 exp12 exp13 -> prPrec i 12 (concatD [doc (showString "if"), prt 12 exp120, doc (showString "then"), prt 12 exp12, doc (showString "else"), prt 13 exp13])
-    EDomain _ exp13 exp14 -> prPrec i 13 (concatD [prt 13 exp13, doc (showString "<:"), prt 14 exp14])
-    ERange _ exp14 exp15 -> prPrec i 14 (concatD [prt 14 exp14, doc (showString ":>"), prt 15 exp15])
-    EUnion _ exp15 exp16 -> prPrec i 15 (concatD [prt 15 exp15, doc (showString "++"), prt 16 exp16])
-    EUnionCom _ exp15 exp16 -> prPrec i 15 (concatD [prt 15 exp15, doc (showString ","), prt 16 exp16])
-    EDifference _ exp16 exp17 -> prPrec i 16 (concatD [prt 16 exp16, doc (showString "--"), prt 17 exp17])
-    EIntersection _ exp17 exp18 -> prPrec i 17 (concatD [prt 17 exp17, doc (showString "**"), prt 18 exp18])
-    EJoin _ exp18 exp19 -> prPrec i 18 (concatD [prt 18 exp18, doc (showString "."), prt 19 exp19])
+    EImplies _ exp1 exp2 -> prPrec i 2 (concatD [prt 2 exp1, doc (showString "=>"), prt 3 exp2])
+    EOr _ exp1 exp2 -> prPrec i 3 (concatD [prt 3 exp1, doc (showString "||"), prt 4 exp2])
+    EXor _ exp1 exp2 -> prPrec i 4 (concatD [prt 4 exp1, doc (showString "xor"), prt 5 exp2])
+    EAnd _ exp1 exp2 -> prPrec i 5 (concatD [prt 5 exp1, doc (showString "&&"), prt 6 exp2])
+    ENeg _ exp -> prPrec i 6 (concatD [doc (showString "!"), prt 7 exp])
+    ELt _ exp1 exp2 -> prPrec i 7 (concatD [prt 7 exp1, doc (showString "<"), prt 8 exp2])
+    EGt _ exp1 exp2 -> prPrec i 7 (concatD [prt 7 exp1, doc (showString ">"), prt 8 exp2])
+    EEq _ exp1 exp2 -> prPrec i 7 (concatD [prt 7 exp1, doc (showString "="), prt 8 exp2])
+    ELte _ exp1 exp2 -> prPrec i 7 (concatD [prt 7 exp1, doc (showString "<="), prt 8 exp2])
+    EGte _ exp1 exp2 -> prPrec i 7 (concatD [prt 7 exp1, doc (showString ">="), prt 8 exp2])
+    ENeq _ exp1 exp2 -> prPrec i 7 (concatD [prt 7 exp1, doc (showString "!="), prt 8 exp2])
+    EIn _ exp1 exp2 -> prPrec i 7 (concatD [prt 7 exp1, doc (showString "in"), prt 8 exp2])
+    ENin _ exp1 exp2 -> prPrec i 7 (concatD [prt 7 exp1, doc (showString "not"), doc (showString "in"), prt 8 exp2])
+    EQuantExp _ quant exp -> prPrec i 8 (concatD [prt 0 quant, prt 12 exp])
+    EAdd _ exp1 exp2 -> prPrec i 9 (concatD [prt 9 exp1, doc (showString "+"), prt 10 exp2])
+    ESub _ exp1 exp2 -> prPrec i 9 (concatD [prt 9 exp1, doc (showString "-"), prt 10 exp2])
+    EMul _ exp1 exp2 -> prPrec i 10 (concatD [prt 10 exp1, doc (showString "*"), prt 11 exp2])
+    EDiv _ exp1 exp2 -> prPrec i 10 (concatD [prt 10 exp1, doc (showString "/"), prt 11 exp2])
+    ERem _ exp1 exp2 -> prPrec i 10 (concatD [prt 10 exp1, doc (showString "%"), prt 11 exp2])
+    ESum _ exp -> prPrec i 11 (concatD [doc (showString "sum"), prt 12 exp])
+    EProd _ exp -> prPrec i 11 (concatD [doc (showString "product"), prt 12 exp])
+    ECard _ exp -> prPrec i 11 (concatD [doc (showString "#"), prt 12 exp])
+    EMinExp _ exp -> prPrec i 11 (concatD [doc (showString "-"), prt 12 exp])
+    EImpliesElse _ exp1 exp2 exp3 -> prPrec i 12 (concatD [doc (showString "if"), prt 12 exp1, doc (showString "then"), prt 12 exp2, doc (showString "else"), prt 13 exp3])
+    EDomain _ exp1 exp2 -> prPrec i 13 (concatD [prt 13 exp1, doc (showString "<:"), prt 14 exp2])
+    ERange _ exp1 exp2 -> prPrec i 14 (concatD [prt 14 exp1, doc (showString ":>"), prt 15 exp2])
+    EUnion _ exp1 exp2 -> prPrec i 15 (concatD [prt 15 exp1, doc (showString "++"), prt 16 exp2])
+    EUnionCom _ exp1 exp2 -> prPrec i 15 (concatD [prt 15 exp1, doc (showString ","), prt 16 exp2])
+    EDifference _ exp1 exp2 -> prPrec i 16 (concatD [prt 16 exp1, doc (showString "--"), prt 17 exp2])
+    EIntersection _ exp1 exp2 -> prPrec i 17 (concatD [prt 17 exp1, doc (showString "**"), prt 18 exp2])
+    EIntersectionDeprecated _ exp1 exp2 -> prPrec i 17 (concatD [prt 17 exp1, doc (showString "&"), prt 18 exp2])
+    EJoin _ exp1 exp2 -> prPrec i 18 (concatD [prt 18 exp1, doc (showString "."), prt 19 exp2])
     ClaferId _ name -> prPrec i 19 (concatD [prt 0 name])
     EInt _ posinteger -> prPrec i 19 (concatD [prt 0 posinteger])
     EDouble _ posdouble -> prPrec i 19 (concatD [prt 0 posdouble])
     EReal _ posreal -> prPrec i 19 (concatD [prt 0 posreal])
     EStr _ posstring -> prPrec i 19 (concatD [prt 0 posstring])
-  prtList es = case es of
-   [] -> (concatD [])
-   x:xs -> (concatD [prt 0 x, prt 0 xs])
-
+  prtList _ [] = (concatD [])
+  prtList _ (x:xs) = (concatD [prt 0 x, prt 0 xs])
 instance Print Decl where
   prt i e = case e of
-    Decl _ locids exp13 -> prPrec i 0 (concatD [prt 0 locids, doc (showString ":"), prt 13 exp13])
+    Decl _ locids exp -> prPrec i 0 (concatD [prt 0 locids, doc (showString ":"), prt 15 exp])
 
 instance Print Quant where
   prt i e = case e of
@@ -265,20 +276,15 @@
 instance Print EnumId where
   prt i e = case e of
     EnumIdIdent _ posident -> prPrec i 0 (concatD [prt 0 posident])
-  prtList es = case es of
-   [x] -> (concatD [prt 0 x])
-   x:xs -> (concatD [prt 0 x, doc (showString "|"), prt 0 xs])
-
+  prtList _ [x] = (concatD [prt 0 x])
+  prtList _ (x:xs) = (concatD [prt 0 x, doc (showString "|"), prt 0 xs])
 instance Print ModId where
   prt i e = case e of
     ModIdIdent _ posident -> prPrec i 0 (concatD [prt 0 posident])
-  prtList es = case es of
-   [x] -> (concatD [prt 0 x])
-   x:xs -> (concatD [prt 0 x, doc (showString "\\"), prt 0 xs])
-
+  prtList _ [x] = (concatD [prt 0 x])
+  prtList _ (x:xs) = (concatD [prt 0 x, doc (showString "\\"), prt 0 xs])
 instance Print LocId where
   prt i e = case e of
     LocIdIdent _ posident -> prPrec i 0 (concatD [prt 0 posident])
-  prtList es = case es of
-   [x] -> (concatD [prt 0 x])
-   x:xs -> (concatD [prt 0 x, doc (showString ";"), prt 0 xs])
+  prtList _ [x] = (concatD [prt 0 x])
+  prtList _ (x:xs) = (concatD [prt 0 x, doc (showString ";"), prt 0 xs])
diff --git a/src/Language/Clafer/Generator/Alloy.hs b/src/Language/Clafer/Generator/Alloy.hs
--- a/src/Language/Clafer/Generator/Alloy.hs
+++ b/src/Language/Clafer/Generator/Alloy.hs
@@ -32,6 +32,7 @@
 import Language.Clafer.Common
 import Language.Clafer.ClaferArgs
 import Language.Clafer.Front.AbsClafer
+import Language.Clafer.Front.LexClafer
 import Language.Clafer.Generator.Concat
 import Language.Clafer.Intermediate.Intclafer hiding (exp)
 
@@ -44,8 +45,8 @@
 
 
 -- | Alloy code generation
-genModule :: ClaferArgs -> (IModule, GEnv) -> [(UID, Integer)] -> (Result, [(Span, IrTrace)])
-genModule    claferargs'   (imodule, genv)    scopes            = (flatten output, filter ((/= NoTrace) . snd) $ mapLineCol output)
+genModule :: ClaferArgs -> (IModule, GEnv) -> [(UID, Integer)] -> [Token]     -> (Result, [(Span, IrTrace)])
+genModule    claferargs'   (imodule, genv)    scopes              otherTokens' = (flatten output, filter ((/= NoTrace) . snd) $ mapLineCol output)
   where
 
   genScopes :: [(UID, Integer)] -> String
@@ -54,17 +55,27 @@
 
   forScopes' = "for 1" ++ genScopes scopes
   genEnv = GenEnv claferargs' (uidClaferMap genv) forScopes'
-  output = header genEnv +++ (cconcat $ map (genDeclaration genEnv) (_mDecls imodule))
+  output = header genEnv otherTokens' +++ (cconcat $ map (genDeclaration genEnv) (_mDecls imodule))
 
-header :: GenEnv -> Concat
-header    genEnv  = CString $ unlines
+header :: GenEnv -> [Token]     -> Concat
+header    genEnv    otherTokens' = CString $ unlines
     [ "open util/integer"
-    , "pred show {}"
+    , genAlloyEscapes otherTokens' ++ "pred show {}"
     , if (validate $ claferargs genEnv)
       then ""
       else "run show " ++ forScopes genEnv
     , ""]
 
+genAlloyEscapes :: [Token]  -> String
+genAlloyEscapes otherTokens' = concat $ map printAlloyEscape otherTokens'
+    where
+      printAlloyEscape (PT _ (T_PosAlloy code)) =  let
+          code' = fromJust $ stripPrefix "[alloy|" code
+        in
+          (take ((length code') - 2) code') ++ "\n"
+
+      printAlloyEscape _                        = ""
+
 -- 07th Mayo 2012 Rafael Olaechea
 genDeclaration :: GenEnv -> IElement -> Concat
 genDeclaration genEnv x = case x of
@@ -425,7 +436,7 @@
   IClaferId _ "integer" _ _ -> CString "Int"
   IClaferId _ "int" _ _ -> CString "Int"
   IClaferId _ "string" _ _ -> CString "Int"
-  IClaferId _ "ref" _ _ -> CString $ "@"  ++ getTClaferUID iType' ++ "_ref"
+  IClaferId _ "dref" _ _ -> CString $ "@"  ++ getTClaferUID iType' ++ "_ref"
     where
       getTClaferUID (Just TMap{_so = TClafer{_hi = [u]}}) = u
       getTClaferUID (Just TMap{_so = TClafer{_hi = (u:_)}}) = u
diff --git a/src/Language/Clafer/Generator/Choco.hs b/src/Language/Clafer/Generator/Choco.hs
--- a/src/Language/Clafer/Generator/Choco.hs
+++ b/src/Language/Clafer/Generator/Choco.hs
@@ -14,10 +14,12 @@
 import Prelude hiding (exp)
 import Language.Clafer.Common
 import Language.Clafer.Intermediate.Intclafer
+import Language.Clafer.Front.LexClafer
 
+
 -- | Choco 3 code generation
-genCModule :: (IModule, GEnv) -> [(UID, Integer)] -> Result
-genCModule (imodule@IModule{_mDecls}, genv') scopes =
+genCModule :: (IModule, GEnv) -> [(UID, Integer)] -> [Token]     -> Result
+genCModule (imodule@IModule{_mDecls}, genv') scopes  otherTokens' =
     genScopes
     ++ "\n"
     ++ (genAbstractClafer =<< abstractClafers)
@@ -26,6 +28,7 @@
     ++ (genTopConstraint =<< _mDecls)
     ++ (genConstraint =<< clafers)
     ++ (genGoal =<< _mDecls)
+    ++ genChocoEscapes
     where
     uidIClaferMap' = uidClaferMap genv'
     root :: IClafer
@@ -82,6 +85,16 @@
             largestPositiveInt :: Integer
             largestPositiveInt = 2 ^ (bitwidth - 1)
             scopeMap = [uid' ++ ":" ++ show scope | (uid', scope) <- scopes, uid' /= "int"]
+
+    genChocoEscapes :: String
+    genChocoEscapes = concat $ map printChocoEscape otherTokens'
+        where
+            printChocoEscape (PT _ (T_PosChoco code)) =  let
+                code' = fromJust $ stripPrefix "[choco|" code
+              in
+                take ((length code') - 2) code'
+            printChocoEscape _                        = ""
+
     exprs :: [IExp]
     exprs = universeOn biplate imodule
 
@@ -170,7 +183,7 @@
             genLocal local =
                 local ++ " = local(\"" ++ local ++ "\")"
 
-    genConstraintExp (IFunExp "." [e1, PExp{_exp = IClaferId{_sident = "ref"}}]) =
+    genConstraintExp (IFunExp "." [e1, PExp{_exp = IClaferId{_sident = "dref"}}]) =
         "joinRef(" ++ genConstraintPExp e1 ++ ")"
     genConstraintExp (IFunExp "." [e1, PExp{_exp = IClaferId{_sident = "parent"}}]) =
         "joinParent(" ++ genConstraintPExp e1 ++ ")"
@@ -183,13 +196,13 @@
     genConstraintExp (IFunExp "-" [arg1, arg2]) =
         "sub(" ++ genConstraintPExp arg1 ++ ", " ++ genConstraintPExp arg2 ++ ")"
     genConstraintExp (IFunExp "sum" args')
-        | [arg] <- args', PExp{_exp = IFunExp{_exps = [a, PExp{_exp = IClaferId{_sident = "ref"}}]}} <- rewrite arg =
+        | [arg] <- args', PExp{_exp = IFunExp{_exps = [a, PExp{_exp = IClaferId{_sident = "dref"}}]}} <- rewrite arg =
             "sum(" ++ genConstraintPExp a ++ ")"
         | [arg] <- args' =
             "sum(" ++ genConstraintPExp arg ++ ")"
         | otherwise = error $ "[bug] Choco.genConstraintExp: Unexpected sum argument: " ++ show args'
     genConstraintExp (IFunExp "product" args')
-        | [arg] <- args', PExp{_exp = IFunExp{_exps = [a, PExp{_exp = IClaferId{_sident = "ref"}}]}} <- rewrite arg =
+        | [arg] <- args', PExp{_exp = IFunExp{_exps = [a, PExp{_exp = IClaferId{_sident = "dref"}}]}} <- rewrite arg =
             "product(" ++ genConstraintPExp a ++ ")"
         | otherwise = error "Choco: Unexpected product argument."
     genConstraintExp (IFunExp "+" args') =
diff --git a/src/Language/Clafer/Generator/Html.hs b/src/Language/Clafer/Generator/Html.hs
--- a/src/Language/Clafer/Generator/Html.hs
+++ b/src/Language/Clafer/Generator/Html.hs
@@ -20,21 +20,23 @@
  SOFTWARE.
 -}
 -- | Generates HTML and plain text rendering of a Clafer model.
-module Language.Clafer.Generator.Html (genHtml,
-                                       genText,
-                                       genTooltip,
-                                       printModule,
-                                       printDeclaration,
-                                       printDecl,
-                                       traceAstModule,
-                                       traceIrModule,
-                                       cleanOutput,
-                                       revertLayout,
-                                       printComment,
-                                       printPreComment,
-                                       printStandaloneComment,
-                                       printInlineComment,
-                                       highlightErrors) where
+module Language.Clafer.Generator.Html
+  ( genHtml
+  , genText
+  , genTooltip
+  , printModule
+  , printDeclaration
+  , printDecl
+  , traceAstModule
+  , traceIrModule
+  , cleanOutput
+  , revertLayout
+  , printComment
+  , printPreComment
+  , printStandaloneComment
+  , printInlineComment
+  , highlightErrors
+  ) where
 
 import Language.ClaferT
 import Language.Clafer.Front.AbsClafer
@@ -62,7 +64,7 @@
                                   then findAll row (cs', concat [comments, printStandaloneComment comment ++ "\n"])
                                   else findAll row (cs', concat [comments, printInlineComment comment ++ "\n"])
                 '/':'*':_:[]   -> findAll row (cs', concat [comments, printStandaloneComment comment ++ "\n"])
-                _      -> (cs', "Improper form of comment.")-- Should not happen. Bug.
+                _      -> (cs', "")
             | otherwise  = ((c':cs'), comments)
 printComment :: Span -> [(Span, String)] -> ([(Span, String)], String)
 printComment _ [] = ([],[])
@@ -73,7 +75,7 @@
                           then (cs, printStandaloneComment comment ++ "\n")
                           else (cs, printInlineComment comment ++ "\n")
         '/':'*':_:[]   -> (cs, printStandaloneComment comment ++ "\n")
-        _      -> (cs, "Improper form of comment.")-- Should not happen. Bug.
+        _      -> (cs, "")
   | otherwise = (c:cs, "")
   where trim' = let f = reverse. dropWhile isSpace in f . f
 printStandaloneComment :: String -> String
@@ -88,6 +90,11 @@
 printInlineComment :: String -> String
 printInlineComment comment = "<span class=\"inlinecomment\">" ++ comment ++ "</span>"
 
+printDeprecated :: String -> String -> Bool -> String
+printDeprecated    s         m         html = (while html $ "<span class=\"deprecated\" title=\"" ++ "Deprecated. " ++ m ++ "\">")
+                                              ++ s
+                                              ++ (while html "</span>")
+
 -- | Generate the model as HTML document
 genHtml :: Module -> IModule -> String
 genHtml x ir = cleanOutput $ revertLayout $ printModule x (traceIrModule ir) True
@@ -108,13 +115,13 @@
     printIndentId 0 html ++
     (while html "<span class=\"keyword\">") ++ "enum" ++ (while html "</span>") ++
     " " ++
-    (printPosIdent posIdent (Just uid') html) ++
+    (printPosIdent posIdent mUid' html) ++
     " = " ++
     (concat $ intersperse " | " (map (\x -> printEnumId x indent irMap html comments) enumIds)) ++
     comment ++
     printIndentEnd html
   where
-    uid' = getUid posIdent irMap;
+    mUid' = getUid posIdent irMap;
     (comments', preComments) = printPreComment s comments;
     (_, comment) = printComment s comments'
 printDeclaration (ElementDecl _ element) indent irMap html comments = printElement element indent irMap html comments
@@ -239,9 +246,23 @@
 printPosIdent (PosIdent (_, id')) (Just uid') html = (while html $ "<span class=\"claferDecl\" id=\"" ++ uid' ++ "\">") ++ id' ++ (while html "</span>")
 
 printPosIdentRef :: PosIdent -> Map.Map Span [Ir] -> Bool -> String
-printPosIdentRef (PosIdent (p, id')) irMap html
-  = (while html ("<a href=\"#" ++ uid' ++ "\"><span class=\"reference\">")) ++ id' ++ (while html "</span></a>")
-      where uid' = getUid (PosIdent (p, id')) irMap
+printPosIdentRef (PosIdent (_, "dref")) _ html
+  = (while html "<span class=\"keyword\">") ++ "dref" ++ (while html "</span>")
+printPosIdentRef (PosIdent (_, "this")) _ html
+  = (while html "<span class=\"keyword\">") ++ "this" ++ (while html "</span>")
+printPosIdentRef (PosIdent (_, "parent")) _ html
+  = (while html "<span class=\"keyword\">") ++ "parent" ++ (while html "</span>")
+printPosIdentRef (PosIdent (_, "root")) _ html
+  = (while html "<span class=\"keyword\">") ++ "root" ++ (while html "</span>")
+printPosIdentRef (PosIdent (_, "ref")) _ html
+  = printDeprecated "ref" "Use `dref` instead." html
+printPosIdentRef (PosIdent (_, id')) _     False = id'
+printPosIdentRef (PosIdent (p, id')) irMap True
+  = case mUid' of
+      Just uid' -> "<a href=\"#" ++ uid' ++ "\"><span class=\"reference\">" ++ id' ++ "</span></a>"
+      Nothing   -> id'
+  where
+    mUid' = getUid (PosIdent (p, id')) irMap
 
 printSuper :: Super -> Int -> Map.Map Span [Ir] -> Bool -> [(Span, String)] -> String
 printSuper (SuperEmpty _) _ _ _ _ = ""
@@ -334,7 +355,8 @@
 printExp (EUnion _ set1 set2) indent irMap html comments = (printExp set1 indent irMap html comments) ++ "++" ++ (printExp set2 indent irMap html comments)
 printExp (EUnionCom _ set1 set2) indent irMap html comments = (printExp set1 indent irMap html comments) ++ ", " ++ (printExp set2 indent irMap html comments)
 printExp (EDifference _ set1 set2) indent irMap html comments = (printExp set1 indent irMap html comments) ++ "--" ++ (printExp set2 indent irMap html comments)
-printExp (EIntersection _ set1 set2) indent irMap html comments = (printExp set1 indent irMap html comments) ++ "&" ++ (printExp set2 indent irMap html comments)
+printExp (EIntersection _ set1 set2) indent irMap html comments = (printExp set1 indent irMap html comments) ++ "**" ++ (printExp set2 indent irMap html comments)
+printExp (EIntersectionDeprecated _ set1 set2) indent irMap html comments = (printExp set1 indent irMap html comments) ++ printDeprecated "&amp;" "Use `**` instead." html ++ (printExp set2 indent irMap html comments)
 printExp (EDomain _ set1 set2) indent irMap html comments = (printExp set1 indent irMap html comments) ++ "<:" ++ (printExp set2 indent irMap html comments)
 printExp (ERange _ set1 set2) indent irMap html comments = (printExp set1 indent irMap html comments) ++ ":>" ++ (printExp set2 indent irMap html comments)
 printExp (EJoin _ set1 set2) indent irMap html comments = (printExp set1 indent irMap html comments) ++ "." ++ (printExp set2 indent irMap html comments)
@@ -352,9 +374,9 @@
   (QuantSome _)     -> (while html "<span class=\"keyword\">") ++ "some" ++ (while html "</span>") ++ " "
 
 printEnumId :: EnumId -> Int -> Map.Map Span [Ir] -> Bool -> [(Span, String)] -> String
-printEnumId (EnumIdIdent _ posident) _ irMap html _ = printPosIdent posident (Just uid') html
+printEnumId (EnumIdIdent _ posident) _ irMap html _ = printPosIdent posident mUid' html
   where
-    uid' = getUid posident irMap
+    mUid' = getUid posident irMap
 
 printIndent :: Int -> Bool -> String
 printIndent 0 html = (while html "<div>") ++ "\n"
@@ -381,22 +403,22 @@
 rest [] = []
 rest (_:xs) = xs
 
-getUid :: PosIdent -> Map.Map Span [Ir] -> String
+getUid :: PosIdent -> Map.Map Span [Ir] -> Maybe String
 getUid posIdent@(PosIdent (_, id')) irMap =
-    if Map.lookup (getSpan posIdent) irMap == Nothing
-    then "Lookup failed"
-    else let wrappedResult = head $ fromJust $ Map.lookup (getSpan posIdent) irMap in
-      findUid id' $ unwrap wrappedResult
-      where {unwrap (IRPExp pexp')       = getIdentPExp pexp';
-             unwrap (IRClafer iClafer') = [ _uid iClafer' ];
-             unwrap x = error $ "Html:getUid:unwrap called on: " ++ show x;
-             getIdentPExp (PExp _ _ _ exp') = getIdentIExp exp';
-             getIdentIExp (IFunExp _ exps') = concatMap getIdentPExp exps';
-             getIdentIExp (IClaferId _ id'' _ _) = [id''];
-             getIdentIExp (IDeclPExp _ _ pexp) = getIdentPExp pexp;
-             getIdentIExp _ = [];
-             findUid name (x:xs) = if name == dropUid x then x else findUid name xs;
-             findUid _ []     = "Uid not found"}
+  case Map.lookup (getSpan posIdent) irMap of
+    Nothing -> Nothing
+    Just wrappedResultList -> listToMaybe $ catMaybes $ map (findUid id') $ map unwrap wrappedResultList 
+  where
+    unwrap (IRPExp pexp')       = getIdentPExp pexp'
+    unwrap (IRClafer iClafer') = [ _uid iClafer' ]
+    unwrap x = error $ "Html:getUid:unwrap called on: " ++ show x
+    getIdentPExp (PExp _ _ _ exp') = getIdentIExp exp'
+    getIdentIExp (IFunExp _ exps') = concatMap getIdentPExp exps'
+    getIdentIExp (IClaferId _ id'' _ _) = [id'']
+    getIdentIExp (IDeclPExp _ _ pexp) = getIdentPExp pexp
+    getIdentIExp _ = []
+    findUid name (x:xs) = if name == dropUid x then Just x else findUid name xs
+    findUid _    []     = Nothing
 
 getDivId :: Span -> Map.Map Span [Ir] -> String
 getDivId s irMap = if Map.lookup s irMap == Nothing
diff --git a/src/Language/Clafer/Generator/Python.hs b/src/Language/Clafer/Generator/Python.hs
--- a/src/Language/Clafer/Generator/Python.hs
+++ b/src/Language/Clafer/Generator/Python.hs
@@ -172,7 +172,7 @@
             genLocal local =
                 local ++ " = local(\"" ++ local ++ "\")"
 
-    genConstraintExp (IFunExp "." [e1, PExp{_exp = IClaferId{_sident = "ref"}}]) =
+    genConstraintExp (IFunExp "." [e1, PExp{_exp = IClaferId{_sident = "dref"}}]) =
         "joinRef(" ++ genConstraintPExp e1 ++ ")"
     genConstraintExp (IFunExp "." [e1, PExp{_exp = IClaferId{_sident = "parent"}}]) =
         "joinParent(" ++ genConstraintPExp e1 ++ ")"
@@ -185,13 +185,13 @@
     genConstraintExp (IFunExp "-" [arg1, arg2]) =
         "sub(" ++ genConstraintPExp arg1 ++ ", " ++ genConstraintPExp arg2 ++ ")"
     genConstraintExp (IFunExp "sum" args')
-        | [arg] <- args', PExp{_exp = IFunExp{_exps = [a, PExp{_exp = IClaferId{_sident = "ref"}}]}} <- rewrite arg =
+        | [arg] <- args', PExp{_exp = IFunExp{_exps = [a, PExp{_exp = IClaferId{_sident = "dref"}}]}} <- rewrite arg =
             "sum(" ++ genConstraintPExp a ++ ")"
         | [arg] <- args' =
             "sum(" ++ genConstraintPExp arg ++ ")"
         | otherwise = error $ "[bug] Python.genConstraintExp: Unexpected sum argument: " ++ show args'
     genConstraintExp (IFunExp "product" args')
-        | [arg] <- args', PExp{_exp = IFunExp{_exps = [a, PExp{_exp = IClaferId{_sident = "ref"}}]}} <- rewrite arg =
+        | [arg] <- args', PExp{_exp = IFunExp{_exps = [a, PExp{_exp = IClaferId{_sident = "dref"}}]}} <- rewrite arg =
             "product(" ++ genConstraintPExp a ++ ")"
         | otherwise = error "Python: Unexpected product argument."
     genConstraintExp (IFunExp "+" args') =
diff --git a/src/Language/Clafer/Intermediate/Desugarer.hs b/src/Language/Clafer/Intermediate/Desugarer.hs
--- a/src/Language/Clafer/Intermediate/Desugarer.hs
+++ b/src/Language/Clafer/Intermediate/Desugarer.hs
@@ -96,7 +96,7 @@
             (desugarElements elements'')) : (desugarInit id'' init'')
 
 getPExpClaferIdent :: Exp -> String
-getPExpClaferIdent (ClaferId _ (Path _ [ (ModIdIdent _ (PosIdent (_, ident'))) ] )) = ident'
+getPExpClaferIdent (ClaferId _ (Path _ [ (ModIdIdent _ pident') ] )) = transIdent pident'
 getPExpClaferIdent (EJoin _ _ e2) = getPExpClaferIdent e2
 getPExpClaferIdent _ = error "Desugarer:getPExpClaferIdent not given a ClaferId PExp"
 
@@ -121,7 +121,7 @@
 desugarInit id' (InitSome s inithow exp') = [ IEConstraint (desugarInitHow inithow) (pExpDefPid s implIExp) ]
   where
     cId :: PExp
-    cId = mkPLClaferId (snd $ getIdent id') False Nothing
+    cId = mkPLClaferId (getSpan id') (snd $ getIdent id') False Nothing
     -- <id> = <exp'>
     assignIExp :: IExp
     assignIExp = (IFunExp "=" [cId, desugarExp exp'])
@@ -316,6 +316,7 @@
   EUnionCom _ exp0 exp'     -> dop iUnion        [exp0, exp']
   EDifference _ exp0 exp'   -> dop iDifference   [exp0, exp']
   EIntersection _ exp0 exp' -> dop iIntersection [exp0, exp']
+  EIntersectionDeprecated _ exp0 exp' -> dop iIntersection [exp0, exp']
   EDomain _ exp0 exp'       -> dop iDomain       [exp0, exp']
   ERange _ exp0 exp'        -> dop iRange        [exp0, exp']
   EJoin _ exp0 exp'         -> dop iJoin         [exp0, exp']
diff --git a/src/Language/Clafer/Intermediate/ResolverName.hs b/src/Language/Clafer/Intermediate/ResolverName.hs
--- a/src/Language/Clafer/Intermediate/ResolverName.hs
+++ b/src/Language/Clafer/Intermediate/ResolverName.hs
@@ -36,7 +36,6 @@
 import Language.ClaferT
 import Language.Clafer.Common
 import Language.Clafer.Intermediate.Intclafer
-import qualified Language.Clafer.Intermediate.Intclafer as I
 
 -- | this environment is created for each clafer
 data SEnv
@@ -54,7 +53,7 @@
 
 -- | How a given name was resolved
 data HowResolved
-  = Special     -- ^ "this", "parent", "ref", "root", and "children"
+  = Special     -- ^ "this", "parent", "dref", "root", and "children"
   | TypeSpecial -- ^ primitive type: "integer", "string"
   | Binding     -- ^ local variable (in constraints)
   | Subclafers  -- ^ clafer's descendant
@@ -140,27 +139,22 @@
   IEConstraint isHard' pexp  -> IEConstraint isHard' <$> resolvePExp env pexp
   IEGoal isMaximize' pexp  -> IEGoal isMaximize' <$> resolvePExp env pexp
 
-
-resolvePExp :: SEnv -> PExp -> Resolve PExp
-resolvePExp env pexp =
-  do
-    exp' <- resolveIExp (_inPos pexp) env $ _exp pexp
-    return $ pexp {_exp = exp'}
-
-resolveIExp :: Span -> SEnv -> IExp -> Resolve IExp
-resolveIExp pos' env x = case x of
-  IDeclPExp quant' decls' pexp -> do
+resolvePExp :: SEnv -> PExp                          -> Resolve PExp
+resolvePExp    env     pexp@PExp{_exp=x} = case x of
+  IDeclPExp quant' decls' pexp2 -> do
     let (decls'', env') = runState (runExceptT $ (mapM (ExceptT . processDecl) decls')) env
-    IDeclPExp quant' <$> decls'' <*> resolvePExp env' pexp
+    exp' <- IDeclPExp quant' <$> decls'' <*> resolvePExp env' pexp2
+    return pexp{_exp=exp'}
 
-  IFunExp op' exps' -> if op' == iJoin then resNav else IFunExp op' <$> mapM (resolvePExp env) exps'
-  IInt _ -> return x
-  IDouble _ -> return x
-  IReal _ -> return x
-  IStr _ -> return x
-  IClaferId _ _ _ _ -> resNav
-  where
-  resNav = fst <$> resolveNav pos' env x True
+  IFunExp "." _ -> fst <$> resolveNav env pexp True
+  IFunExp op' exps' -> do
+                         exp' <- IFunExp op' <$> mapM (resolvePExp env) exps'
+                         return $ pexp {_exp = exp'}
+  IInt _ -> return pexp
+  IDouble _ -> return pexp
+  IReal _ -> return pexp
+  IStr _ -> return pexp
+  IClaferId{} -> fst <$> resolveNav env pexp True
 
 liftError :: Monad m => Either e a -> ExceptT e m a
 liftError = ExceptT . return
@@ -168,45 +162,56 @@
 processDecl :: MonadState SEnv m => IDecl -> m (Resolve IDecl)
 processDecl decl = runExceptT $ do
   env <- lift $ get
-  (body', path) <- liftError $ resolveNav (_inPos $ _body decl) env (I._exp $ _body decl) True
+  (body', path) <- liftError $ resolveNav env (_body decl) True
   lift $ modify (\e -> e { bindings = (_decls decl, path) : bindings e })
-  return $ decl {_body = pExpDefPidPos body'}
+  return $ decl {_body = body'}
 
-resolveNav :: Span -> SEnv -> IExp -> Bool -> Resolve (IExp, [IClafer])
-resolveNav pos' env x isFirst = case x of
-  IFunExp _ (pexp0:pexp:_) -> do
-    (exp0', path) <- resolveNav (_inPos pexp0) env (I._exp pexp0) True
-    (exp', path') <- resolveNav (_inPos pexp) env {context = listToMaybe path, resPath = path}
-                     (I._exp pexp) False
-    return (IFunExp iJoin [pexp0{I._exp=exp0'}, pexp{I._exp=exp'}], path')
-  IClaferId modName' id' _ _ -> out
-    where
-    out
-      | isFirst   = mkPath env <$> resolveName pos' env id'
-      | otherwise = mkPath' modName' <$> resolveImmName pos' env id'
+resolveNav :: SEnv -> PExp                         -> Bool   -> Resolve (PExp, [IClafer])
+resolveNav    env     pexp0@PExp{_inPos=pos', _exp=x} isFirst = case x of
+  IFunExp "." [pexp1,pexp2] -> do
+    (pexp1', path1) <- resolveNav env                                               pexp1 True
+    (pexp2', path2) <- resolveNav env{context = listToMaybe path1, resPath = path1} pexp2 False
+    -- if `dref` was added to the RHS we need to left rotate the tree
+    case pexp2' of
+      PExp{_exp=IFunExp "." [pexp2'l, pexp2'r]} -> (case pexp2'l of
+        PExp{_exp=IClaferId{_sident="dref"}} ->
+          let -- move the `dref` to the LHS
+            pexp0' = pexp0{_exp=IFunExp iJoin [pexp1', pexp2'l]}
+          in -- keep the RHS as is
+            return (pexp2{_exp=IFunExp iJoin [pexp0', pexp2'r]}, path2)
+        _ -> return (pexp0{_exp=IFunExp iJoin [pexp1', pexp2']}, path2)
+        )
+      _ -> return (pexp0{_exp=IFunExp iJoin [pexp1', pexp2']}, path2)
+  IClaferId modName' id' _ _ -> if isFirst
+    then do
+           (exp', path') <- mkPath pos' env <$> resolveName pos' env id'
+           return (pexp0{_exp=exp'}, path')
+    else do
+           (exp', path') <- mkPath' pos' modName' <$> resolveImmName pos' env id'
+           return (pexp0{_exp=exp'}, path')
   y -> throwError $ SemanticErr pos' $ "Cannot resolve nav of " ++ show y
 
 -- | Depending on how resolved construct a navigation path from 'context env'
-mkPath :: SEnv -> (HowResolved, String, [IClafer]) -> (IExp, [IClafer])
-mkPath    env     (howResolved, id',    path)       = case howResolved of
+mkPath :: Span -> SEnv -> (HowResolved, String, [IClafer]) -> (IExp, [IClafer])
+mkPath    pos'    env     (howResolved, id',    path)       = case howResolved of
   Binding -> (IClaferId "" id' True Nothing, path)
   Special -> (specIExp id', path)
   TypeSpecial -> (IClaferId "" id' True (Just id'), path)
   Subclafers -> (toNav $ tail $ reverse $ map toTuple path, path)
-  Ancestor -> (toNav' $ adjustAncestor (fromJust $ context env)
+  Ancestor -> (toNav' pos' $ adjustAncestor (fromJust $ context env)
                                        (reverse $ map toTuple $ resPath env)
                                        (reverse $ map toTuple path), path)
-  Reference -> (toNav' $ reverse $ map toTuple path, path)
-  AbsClafer -> (toNav' $ reverse $ map toTuple path, path)
-  TopClafer -> (toNav' $ reverse $ map toTuple path, path)
+  Reference -> (toNav' pos' $ reverse $ map toTuple path, path)
+  AbsClafer -> (toNav' pos' $ reverse $ map toTuple path, path)
+  TopClafer -> (toNav' pos' $ reverse $ map toTuple path, path)
   where
   toNav tuplePath = foldl'
-          (\exp' (id'', cbind) -> IFunExp iJoin [pExpDefPidPos exp', mkPLClaferId id'' (fromMaybe False $ isTopLevel <$> cbind) $ _uid <$> cbind])
+          (\exp' (id'', cbind) -> IFunExp iJoin [pExpDefPid pos' exp', mkPLClaferId pos' id'' (fromMaybe False $ isTopLevel <$> cbind) $ _uid <$> cbind])
           (IClaferId "" thisIdent True (_uid <$> context env))
           tuplePath
   specIExp "this"     = IClaferId "" thisIdent True (_uid <$> context env)
   specIExp "parent"   = toNav [("parent", Just $ head path)]
-  specIExp "ref"      = toNav [("ref", Just $ head path)]
+  specIExp "dref"     = toNav [("dref", Just $ head path)]
   specIExp "root"     = IClaferId "" rootIdent True (Just rootIdent)
   specIExp "children" = toNav [(id', Just $ head path)]
   specIExp i          = error $ "[BUG] ResolverName.specIExp: Unknown special id: " ++ i
@@ -214,8 +219,9 @@
 toTuple :: IClafer->(String, Maybe IClafer)
 toTuple c = (_uid c, Just c)
 
-toNav' :: [(String, Maybe IClafer)] -> IExp
-toNav' tuplePath = (mkIFunExp iJoin $ map (\(id', cbind) -> IClaferId "" id' (fromMaybe False $ isTopLevel <$> cbind) (_uid <$> cbind)) tuplePath) :: IExp
+toNav' :: Span -> [(String, Maybe IClafer)] -> IExp
+toNav'    pos'    tuplePath                  =
+  (mkIFunExp pos' iJoin $ map (\(id', cbind) -> IClaferId "" id' (fromMaybe False $ isTopLevel <$> cbind) (_uid <$> cbind)) tuplePath) :: IExp
 
 adjustAncestor :: IClafer -> [(String, Maybe IClafer)] -> [(String, Maybe IClafer)] -> [(String, Maybe IClafer)]
 adjustAncestor ctx cPath rPath = (thisIdent, Just ctx) : parents ++ (fromJust $ stripPrefix prefix rPath)
@@ -225,9 +231,9 @@
   eqIds a b = (fst a) == (fst b)
 
 
-mkPath' :: String -> (HowResolved, String, [IClafer]) -> (IExp, [IClafer])
-mkPath' modName' (howResolved, id', path) = case howResolved of
-  Reference -> (toNav' (zip ["ref", id'] (map Just path)), path)
+mkPath' :: Span -> String -> (HowResolved, String, [IClafer]) -> (IExp, [IClafer])
+mkPath'    pos' modName'  (howResolved, id', path)          = case howResolved of
+  Reference -> (toNav' pos' (zip ["dref", id'] (map Just path)), path)
   _ -> (IClaferId modName' id' False (_uid <$> bind), path)
   where
   bind = case path of
diff --git a/src/Language/Clafer/Intermediate/ResolverType.hs b/src/Language/Clafer/Intermediate/ResolverType.hs
--- a/src/Language/Clafer/Intermediate/ResolverType.hs
+++ b/src/Language/Clafer/Intermediate/ResolverType.hs
@@ -40,14 +40,14 @@
 import Data.Maybe
 import Prelude hiding (exp)
 
-
 type TypeDecls = [(String, IType)]
 data TypeInfo = TypeInfo {iTypeDecls::TypeDecls, iUIDIClaferMap::UIDIClaferMap, iCurThis::IClafer, iCurPath::Maybe IType}
 
 newtype TypeAnalysis a = TypeAnalysis (ReaderT TypeInfo (Either ClaferSErr) a)
   deriving (MonadError ClaferSErr, Monad, Functor, MonadReader TypeInfo, Applicative)
 
-typeOfUid :: MonadTypeAnalysis m => String -> m IType
+-- return the type of a UID but give preference to local declarations in quantified expressions, which shadow global names
+typeOfUid :: MonadTypeAnalysis m => UID -> m IType
 typeOfUid uid = (fromMaybe (TClafer [uid]) . lookup uid) <$> typeDecls
 
 class (Functor m, Monad m) => MonadTypeAnalysis m where
@@ -105,12 +105,12 @@
 claferWithUid :: (Monad m) => UIDIClaferMap -> String -> m IClafer
 claferWithUid uidIClaferMap' u = case findIClafer uidIClaferMap' u of
   Just c -> return c
-  Nothing -> fail $ "Analysis.claferWithUid: " ++ u ++ " not found!"
+  Nothing -> fail $ "ResolverType.claferWithUid: " ++ u ++ " not found!"
 
 parentOf :: (Monad m) => UIDIClaferMap -> UID -> m UID
 parentOf uidIClaferMap' c = case _parentUID <$> findIClafer uidIClaferMap' c of
   Just u -> return u
-  Nothing -> fail $ "Analysis.parentOf: " ++ c ++ " not found!"
+  Nothing -> fail $ "ResolverType.parentOf: " ++ c ++ " not found!"
 
 {-
  - C is an direct child of B.
@@ -141,32 +141,9 @@
     [t'] -> t'
     ts   -> "[" ++ intercalate "," ts ++ "]"
 
--- | This function is similar to 'intersection', but takes into account more ancestors to be able to combine
--- clafers of different types, but with a common ancestor:
--- Inputs:
--- t1 is of type B
--- t2 is of type C
--- B : A
--- C : A
--- Outputs:
--- the resulting type is: A, and the type combination is valid
-getIfThenElseType :: Monad m => UIDIClaferMap -> IType -> IType -> m (Maybe IType)
-getIfThenElseType uidIClaferMap' t1 t2 = do
-  h1 <- mapM (hierarchyMap uidIClaferMap' _uid) $ unionType t1
-  h2 <- mapM (hierarchyMap uidIClaferMap' _uid) $ unionType t2
-  let ut = catMaybes [commonHierarchy u1 u2 | u1 <- h1, u2 <- h2]
-  return $ fromUnionType ut
-  where
-  commonHierarchy :: [UID] -> [UID] -> Maybe UID
-  commonHierarchy h1 h2 = commonHierarchy' (reverse h1) (reverse h2) Nothing
-  commonHierarchy' (x:xs) (y:ys) accumulator =
-    if (x == y)
-      then
-        if (null xs || null ys)
-          then Just x
-          else commonHierarchy' xs ys $ Just x
-      else accumulator
-  commonHierarchy' _ _ _ = error "ResolverType.commonHierarchy' expects two non empty lists but was given at least one empty list!" -- Should never happen
+showType :: PExp                   -> String
+showType    PExp{ _iType=Nothing }  = "unknown type"
+showType    PExp{ _iType=(Just t) } = show t
 
 data TAMode
   = TAReferences    -- | Phase one: only process references
@@ -194,10 +171,18 @@
         refs' <- resolveTPExp $ _ref originalReference
         case refs' of
           []     -> return Nothing
-          [ref'] -> return $ Just $ originalReference{_ref=(ref' & iType.traversed %~ (addHierarchy uidIClaferMap'))}
-          (ref':_) -> return $ Just $ originalReference{_ref=(ref' & iType.traversed %~ (addHierarchy uidIClaferMap'))}
+          [ref'] -> return $ refWithNewType uidIClaferMap' originalReference ref'
+          (ref':_) -> return $ refWithNewType uidIClaferMap' originalReference ref'
     elements' <- mapM (resolveTElement TAReferences (_uid iclafer)) (_elements iclafer)
     return $ IEClafer iclafer{_elements = elements', _reference=reference'}
+  where
+    refWithNewType uMap oRef r = let
+        r' = r & iType.traversed %~ (addHierarchy uMap)
+      in case _iType r' of
+        Nothing -> Nothing
+        Just t -> if isTBoolean t
+                  then Nothing
+                  else Just $ oRef{_ref=r'}
 resolveTElement    TAReferences  _         iec@(IEConstraint{}) = return iec
 resolveTElement    TAReferences  _         ieg@(IEGoal{}) = return ieg
 
@@ -211,8 +196,8 @@
   where
   testBoolean pexp' =
     do
-      unless (typeOf pexp' == TBoolean) $
-        throwError $ SemanticErr (_inPos pexp') ("Cannot construct constraint on type '" ++ str (typeOf pexp') ++ "'")
+      unless (isTBoolean $ typeOf pexp') $
+        throwError $ SemanticErr (_inPos pexp') ("Cannot construct constraint on type '" ++ showType pexp' ++ "'")
       return pexp'
 resolveTElement    TAExpressions parent' (IEGoal isMaximize' pexp') =
   IEGoal isMaximize' <$> resolveTConstraint parent' pexp'
@@ -235,7 +220,7 @@
       (_,   xs) -> return xs                          -- Case 3: At least one success.
 
 resolveTPExp' :: PExp -> TypeAnalysis [Either ClaferSErr PExp]
-resolveTPExp' p@PExp{_inPos, _exp = IClaferId{_sident = "ref"}} = do
+resolveTPExp' p@PExp{_inPos, _exp = IClaferId{_sident = "dref"}} = do
   uidIClaferMap' <- asks iUIDIClaferMap
   runListT $ runExceptT $ do
     curPath' <- curPath
@@ -256,16 +241,21 @@
         when (isNothing parent') $
           throwError $ SemanticErr _inPos "Cannot parent from root"
         let result = p `withType` fromJust parent'
-        return result -- Case 1: Use the sident
-          <++>
-          addRef result -- Case 2: Dereference the sident 1..* times
+        return result
       Nothing -> throwError $ SemanticErr _inPos "Cannot parent at the start of a path"
 resolveTPExp' p@PExp{_exp = IClaferId{_sident = "integer"}} = runListT $ runExceptT $ return $ p `withType` TInteger
 resolveTPExp' p@PExp{_exp = IClaferId{_sident = "int"}} = runListT $ runExceptT $ return $ p `withType` TInteger
 resolveTPExp' p@PExp{_exp = IClaferId{_sident = "string"}} = runListT $ runExceptT $ return $ p `withType` TString
 resolveTPExp' p@PExp{_exp = IClaferId{_sident = "double"}} = runListT $ runExceptT $ return $ p `withType` TDouble
 resolveTPExp' p@PExp{_exp = IClaferId{_sident = "real"}} = runListT $ runExceptT $ return $ p `withType` TReal
-resolveTPExp' p@PExp{_inPos, _exp = IClaferId{_sident}} = do
+resolveTPExp' p@PExp{_inPos, _exp = IClaferId{_sident="this"}} = do
+  runListT $ runExceptT $ do
+    sident' <- _uid <$> curThis
+    result <- (p `withType`) <$> typeOfUid sident'
+    return result
+      <++>
+      addDref result -- Case 2: Dereference the sident 1..* times
+resolveTPExp' p@PExp{_inPos, _exp = IClaferId{_sident, _isTop}} = do
   uidIClaferMap' <- asks iUIDIClaferMap
   runListT $ runExceptT $ do
     curPath' <- curPath
@@ -274,15 +264,35 @@
       c <- mapM (isChild uidIClaferMap' sident') $ unionType $ fromJust curPath'
       unless (or c) $ throwError $ SemanticErr _inPos ("'" ++ sident' ++ "' is not a child of type '" ++ str (fromJust curPath') ++ "'")
     result <- (p `withType`) <$> typeOfUid sident'
-    return result -- Case 1: Use the sident
-      <++>
-      addRef result -- Case 2: Dereference the sident 1..* times
+    if _isTop
+    then return result -- Case 1: Use the sident
+          <++>
+          addDref result -- Case 2: Dereference the sident 1..* times
+          <++>
+          addSome result
+    else return result -- all not top-level identifiers must be in a path
 
 
 resolveTPExp' p@PExp{_inPos, _exp} =
-  runListT $ runExceptT $ do
-    (iType', exp') <- ExceptT $ ListT $ resolveTExp _exp
-    return p{_iType = Just iType', _exp = exp'}
+  runListT $ runExceptT $ (case _exp of
+    e@IFunExp {_op = ".", _exps = [arg1, arg2]} -> do
+        (iType', exp') <-  do
+            arg1' <- lift $ ListT $ resolveTPExp arg1
+            localCurPath (typeOf arg1') $ do
+                arg2' <- liftError $ lift $ ListT $ resolveTPExp arg2
+                (case _iType arg2' of
+                    Just (t'@TClafer{}) -> return (t', e{_exps = [arg1', arg2']})
+                    Just (TMap{_ta=t'}) -> return (t', e{_exps = [arg1', arg2']})
+                    _ -> fail $ "Function '.' cannot be performed on " ++ showType arg1' ++ "\n.\n " ++ showType arg2')
+        let result = p{_iType = Just iType', _exp = exp'}
+        return result -- Case 1: Use the sident
+          <++>
+          addDref result -- Case 2: Dereference the sident 1..* times
+          <++>
+          addSome result
+    _ -> do
+      (iType', exp') <- ExceptT $ ListT $ resolveTExp _exp
+      return p{_iType = Just iType', _exp = exp'})
   where
   resolveTExp :: IExp -> TypeAnalysis [Either ClaferSErr (IType, IExp)]
   resolveTExp e@(IInt _)    = runListT $ runExceptT $ return (TInteger, e)
@@ -297,9 +307,9 @@
       let
           test c =
             unless c $
-              throwError $ SemanticErr _inPos ("Function '" ++ _op ++ "' cannot be performed on " ++ _op ++ " '" ++ str t ++ "'")
+              throwError $ SemanticErr _inPos ("Function '" ++ _op ++ "' cannot be performed on " ++ _op ++ " '" ++ showType arg' ++ "'")
       let result
-            | _op == iNot = test (t == TBoolean) >> return TBoolean
+            | _op == iNot = test (isTBoolean t) >> return TBoolean
             | _op == iCSet = return TInteger
             | _op == iSumSet = test (isTInteger t) >> return TInteger
             | _op == iProdSet = test (isTInteger t) >> return TInteger
@@ -308,20 +318,14 @@
       result' <- result
       return (result', e{_exps = [arg']})
 
-  resolveTExp e@IFunExp {_op = ".", _exps = [arg1, arg2]} =
-    do
-      runListT $ runExceptT $ do
-        arg1' <- lift $ ListT $ resolveTPExp arg1
-        localCurPath (typeOf arg1') $ do
-            arg2' <- liftError $ lift $ ListT $ resolveTPExp arg2
-            return (fromJust $ _iType arg2', e{_exps = [arg1', arg2']})
-
   resolveTExp e@IFunExp {_op = "++", _exps = [arg1, arg2]} =
     do
       arg1s' <- resolveTPExp arg1
       arg2s' <- resolveTPExp arg2
       let union' a b = typeOf a +++ typeOf b
-      return $ [return (union' arg1' arg2', e{_exps = [arg1', arg2']}) | (arg1', arg2') <- sortBy (comparing $ length . unionType . uncurry union') $ liftM2 (,) arg1s' arg2s']
+      return $ [ return (union' arg1' arg2', e{_exps = [arg1', arg2']})
+               | (arg1', arg2') <- sortBy (comparing $ length . unionType . uncurry union') $ liftM2 (,) arg1s' arg2s'
+               , (not $ isTBoolean $ typeOf arg1') && (not $ isTBoolean $ typeOf arg2') ]
   resolveTExp e@IFunExp {_op, _exps = [arg1, arg2]} = do
     uidIClaferMap' <- asks iUIDIClaferMap
     runListT $ runExceptT $ do
@@ -333,16 +337,18 @@
             do
               it <- intersection uidIClaferMap' e1 e2
               case it of
-                Just it' -> return it'
-                Nothing  -> throwError $ SemanticErr _inPos ("Function '" ++ _op ++ "' cannot be performed on '" ++ str t1 ++ "' " ++ _op ++ " '" ++ str t2 ++ "'")
+                Just it' -> if isTBoolean it'
+                            then throwError $ SemanticErr _inPos ("Function '" ++ _op ++ "' cannot be performed on\n" ++ showType arg1' ++ "\n" ++ _op ++ "\n" ++ showType arg2')
+                            else return it'
+                Nothing  -> throwError $ SemanticErr _inPos ("Function '" ++ _op ++ "' cannot be performed on\n" ++ showType arg1' ++ "\n" ++ _op ++ "\n" ++ showType arg2')
       let testNotSame e1 e2 =
             when (e1 `sameAs` e2) $
               throwError $ SemanticErr _inPos ("Function '" ++ _op ++ "' is redundant because the two subexpressions are always equivalent")
       let test c =
             unless c $
-              throwError $ SemanticErr _inPos ("Function '" ++ _op ++ "' cannot be performed on '" ++ str t1 ++ "' " ++ _op ++ " '" ++ str t2 ++ "'")
+              throwError $ SemanticErr _inPos ("Function '" ++ _op ++ "' cannot be performed on\n" ++ showType arg1' ++ "\n" ++ _op ++ "\n" ++ showType arg2')
       let result
-            | _op `elem` logBinOps = test (t1 == TBoolean && t2 == TBoolean) >> return TBoolean
+            | _op `elem` logBinOps = test (isTBoolean t1 && isTBoolean t2) >> return TBoolean
             | _op `elem` [iLt, iGt, iLte, iGte] = test (numeric t1 && numeric t2) >> return TBoolean
             | _op `elem` [iEq, iNeq] = testNotSame arg1' arg2' >> testIntersect t1 t2 >> return TBoolean
             | _op == iDifference = testNotSame arg1' arg2' >> testIntersect t1 t2 >> return t1
@@ -367,42 +373,66 @@
       let t1 = typeOf arg1'
       let t2 = typeOf arg2'
       let t3 = typeOf arg3'
---      unless (False) $
---        throwError $ SemanticErr inPos ("The types are: '" ++ str t2 ++ "' and '" ++ str t3 ++ "'")
 
-      unless (t1 == TBoolean) $
-        throwError $ SemanticErr _inPos ("The type of condition in 'if/then/else' must be 'TBoolean', insted it is " ++ str t1)
+      unless (isTBoolean t1) $
+        throwError $ SemanticErr _inPos ("The type of condition in 'if/then/else' must be 'TBoolean', insted it is " ++ showType arg1')
 
       it <- getIfThenElseType uidIClaferMap' t2 t3
       t <- case it of
         Just it' -> return it'
-        Nothing  -> throwError $ SemanticErr _inPos ("Function 'if/then/else' cannot be performed on if '" ++ str t1 ++ "' then '" ++ str t2 ++ "' else '" ++ str t3 ++ "'")
+        Nothing  -> throwError $ SemanticErr _inPos ("Function 'if/then/else' cannot be performed on \nif\n" ++ showType arg1' ++ "\nthen\n" ++ showType arg2' ++ "\nelse\n" ++ showType arg3')
 
       return (t, e{_exps = [arg1', arg2', arg3']})
-
+  -- some P, no P, one P
+  -- P must not be TBoolean
+  resolveTExp e@IDeclPExp{_oDecls=[], _bpexp} =
+    runListT $ runExceptT $ do
+      bpexp' <- liftError $ lift $ ListT $ resolveTPExp _bpexp
+      case _iType bpexp' of
+          Nothing -> fail $ "resolveTExp@IDeclPExp: No type computed for body\n" ++ show bpexp'
+          Just t' -> if  isTBoolean t'
+                     then throwError $ SemanticErr _inPos "The type of body of a quantified expression without local declarations must not be 'TBoolean'"
+                     else return $ (TBoolean, e{_bpexp = bpexp'})
+  -- some x : X | P, no x : X | P, one x : X | P
+  -- X must not be TBoolean, P must be TBoolean
   resolveTExp e@IDeclPExp{_oDecls, _bpexp} =
     runListT $ runExceptT $ do
       oDecls' <- mapM resolveTDecl _oDecls
       let extraDecls = [(decl, typeOf $ _body oDecl) | oDecl <- oDecls', decl <- _decls oDecl]
       localDecls extraDecls $ do
         bpexp' <- liftError $ lift $ ListT $ resolveTPExp _bpexp
-        return $ (TBoolean, e{_oDecls = oDecls', _bpexp = bpexp'})
+        case _iType bpexp' of
+            Nothing -> fail $ "resolveTExp@IDeclPExp: No type computed for body\n" ++ show bpexp'
+            Just t' -> if  isTBoolean t'
+                       then return $ (TBoolean, e{_oDecls = oDecls', _bpexp = bpexp'})
+                       else throwError $ SemanticErr _inPos $ "The type of body of a quantified expression with local declarations must be 'TBoolean', instead it is\n" ++ showType bpexp'
     where
     resolveTDecl d@IDecl{_body} =
       do
         body' <- lift $ ListT $ resolveTPExp _body
-        return $ d{_body = body'}
-
+        case _iType body' of
+            Nothing -> fail $ "resolveTExp@IDeclPExp: No type computed for local declaration\n" ++ show body'
+            Just t' -> if  isTBoolean t'
+                       then throwError $ SemanticErr _inPos "The type of declaration of a quantified expression must not be 'TBoolean'"
+                       else return $ d{_body = body'}
   resolveTExp e = error $ "Unknown iexp: " ++ show e
 
--- Adds "refs" at the end, effectively dereferencing Clafers when needed.
-addRef :: PExp -> ExceptT ClaferSErr (ListT TypeAnalysis) PExp
-addRef pexp =
+-- Adds "dref"s at the end, effectively dereferencing Clafers when needed.
+addDref :: PExp -> ExceptT ClaferSErr (ListT TypeAnalysis) PExp
+addDref pexp =
   do
     localCurPath (typeOf pexp) $ do
-      deref <- (ExceptT $ ListT $ resolveTPExp' $ newPExp $ IClaferId "" "ref" False Nothing) `catchError` const (lift mzero)
+      deref <- (ExceptT $ ListT $ resolveTPExp' $ newPExp $ IClaferId "" "dref" False Nothing) `catchError` const (lift mzero)
       let result = (newPExp $ IFunExp "." [pexp, deref]) `withType` typeOf deref
-      return result <++> addRef result
+      return result <++> addDref result
+  where
+  newPExp = PExp Nothing "" $ _inPos pexp
+
+-- Adds a quantifier "some" at the beginning, effectively turning an identifier into a TBoolean expression
+addSome :: PExp -> ExceptT ClaferSErr (ListT TypeAnalysis) PExp
+addSome pexp =
+  do
+    localCurPath (typeOf pexp) $ return $ (newPExp $ IDeclPExp ISome [] pexp) `withType` TBoolean
   where
   newPExp = PExp Nothing "" $ _inPos pexp
 
diff --git a/src/Language/Clafer/Intermediate/StringAnalyzer.hs b/src/Language/Clafer/Intermediate/StringAnalyzer.hs
--- a/src/Language/Clafer/Intermediate/StringAnalyzer.hs
+++ b/src/Language/Clafer/Intermediate/StringAnalyzer.hs
@@ -22,9 +22,11 @@
 -}
 module Language.Clafer.Intermediate.StringAnalyzer where
 
+import Control.Applicative
+import Control.Monad.State
 import Data.Tuple
 import qualified Data.Map as Map
-import Control.Monad.State
+import Prelude
 
 import Language.Clafer.Intermediate.Intclafer
 
@@ -40,24 +42,24 @@
     flipMap = Map.fromList . map swap . Map.toList
 
 
-astrClafer :: MonadState (Map.Map String Int) m => IClafer -> m IClafer
+astrClafer :: Functor m => MonadState (Map.Map String Int) m => IClafer -> m IClafer
 astrClafer (IClafer s isAbstract' gcrd' ident' uid' puid' super' reference' crd' gCard elements') = do
     reference'' <- astrReference reference'
     elements'' <- astrElement `mapM` elements'
     return $ IClafer s isAbstract' gcrd' ident' uid' puid' super' reference'' crd' gCard elements''
 
-astrReference :: MonadState (Map.Map String Int) m => Maybe IReference -> m (Maybe IReference)
+astrReference :: Functor m => MonadState (Map.Map String Int) m => Maybe IReference -> m (Maybe IReference)
 astrReference Nothing = return Nothing
 astrReference (Just (IReference isSet' ref')) = Just <$> IReference isSet' `liftM` astrPExp ref'
 
 -- astrs single subclafer
-astrElement :: MonadState (Map.Map String Int) m => IElement -> m IElement
+astrElement :: Functor m => MonadState (Map.Map String Int) m => IElement -> m IElement
 astrElement x = case x of
   IEClafer clafer -> IEClafer `liftM` astrClafer clafer
   IEConstraint isHard' pexp -> IEConstraint isHard' `liftM` astrPExp pexp
   IEGoal isMaximize' pexp -> IEGoal isMaximize' `liftM` astrPExp pexp
 
-astrPExp :: MonadState (Map.Map String Int) m => PExp -> m PExp
+astrPExp :: Functor m => MonadState (Map.Map String Int) m => PExp -> m PExp
 astrPExp (PExp (Just TString) pid' pos' exp') =
     PExp (Just TInteger) pid' pos' `liftM` astrIExp exp'
 astrPExp (PExp t pid' pos' (IFunExp op' exps')) = PExp t pid' pos' `liftM`
@@ -66,7 +68,7 @@
                               (IDeclPExp quant' oDecls' `liftM` (astrPExp bpexp'))
 astrPExp x = return x
 
-astrIExp :: MonadState (Map.Map String Int) m => IExp -> m IExp
+astrIExp :: Functor m => MonadState (Map.Map String Int) m => IExp -> m IExp
 astrIExp x = case x of
   IFunExp op' exps' -> IFunExp op' `liftM` mapM astrPExp exps'
   IStr str -> do
diff --git a/src/Language/Clafer/Intermediate/Tracing.hs b/src/Language/Clafer/Intermediate/Tracing.hs
--- a/src/Language/Clafer/Intermediate/Tracing.hs
+++ b/src/Language/Clafer/Intermediate/Tracing.hs
@@ -214,6 +214,7 @@
     EUnionCom _ s1 s2 -> traverseExp s1 ++ traverseExp s2
     EDifference _ s1 s2 -> traverseExp s1 ++ traverseExp s2
     EIntersection _ s1 s2 -> traverseExp s1 ++ traverseExp s2
+    EIntersectionDeprecated _ s1 s2 -> traverseExp s1 ++ traverseExp s2
     EDomain _ s1 s2 -> traverseExp s1 ++ traverseExp s2
     ERange _ s1 s2 -> traverseExp s1 ++ traverseExp s2
     EJoin _ s1 s2 -> traverseExp s1 ++ traverseExp s2
diff --git a/src/Language/Clafer/Intermediate/TypeSystem.hs b/src/Language/Clafer/Intermediate/TypeSystem.hs
--- a/src/Language/Clafer/Intermediate/TypeSystem.hs
+++ b/src/Language/Clafer/Intermediate/TypeSystem.hs
@@ -25,6 +25,7 @@
 import Language.Clafer.Common
 import Language.Clafer.Intermediate.Intclafer hiding (uid)
 
+import Control.Applicative
 import Control.Lens ((&), (<&>), (%~))
 import Control.Monad (mplus, liftM)
 import Data.List (nub)
@@ -43,14 +44,14 @@
     EmplID -> integer
 
 Alice : Student
-    [ this.DOB.ref = 1990 ]
-    [ this.StudentID.ref = "123Alice" ]
+    [ this.DOB.dref = 1990 ]
+    [ this.StudentID.dref = "123Alice" ]
 
 Bob : Employee
-    [ this.EmplID.ref = 345 ]
+    [ this.EmplID.dref = 345 ]
 
 AliceAndBob -> Person
-[ root.AliceAndBob.ref = Alice, Bob ]
+[ root.AliceAndBob.dref = Alice, Bob ]
 
 AliceAndBob2 -> Alice ++ Bob
 -}
@@ -117,6 +118,11 @@
 isTString (TUnion un') = any isTString un'
 isTString _            = False
 
+isTBoolean :: IType    -> Bool
+isTBoolean TBoolean      = True
+isTBoolean (TMap _ ta') = isTBoolean ta'
+isTBoolean (TUnion un') = any isTBoolean un'
+isTBoolean _            = False
 
 -- | Get TClafer for a given Clafer
 -- can only be called after inheritance resolver
@@ -132,8 +138,8 @@
 -- can only be called after inheritance resolver
 getTClaferByUID :: UIDIClaferMap -> UID -> Maybe IType
 getTClaferByUID    uidIClaferMap'   uid' = case uid' of
-  "root"   -> Just $ rootTClafer
-  "clafer" -> Just $ claferTClafer
+  "root"   -> Just rootTClafer
+  "clafer" -> Just claferTClafer
   _        -> findIClafer uidIClaferMap' uid' <&> getTClafer
 
 -- | Get TClafer for a given Clafer by its UID
@@ -164,14 +170,14 @@
 
 
 hierarchy :: (Monad m) => UIDIClaferMap -> UID -> m [IClafer]
-hierarchy uidIClaferMap' uid' = (case findIClafer uidIClaferMap' uid' of
+hierarchy uidIClaferMap' uid' = case findIClafer uidIClaferMap' uid' of
       Nothing -> fail $ "TypeSystem.hierarchy: clafer " ++ uid' ++ "not found!"
-      Just clafer -> return $ findHierarchy getSuper uidIClaferMap' clafer)
+      Just clafer -> return $ findHierarchy getSuper uidIClaferMap' clafer
 
 hierarchyMap :: (Monad m) => UIDIClaferMap -> (IClafer -> a) -> UID -> m [a]
-hierarchyMap uidIClaferMap' f c = (case findIClafer uidIClaferMap' c of
+hierarchyMap uidIClaferMap' f c = case findIClafer uidIClaferMap' c of
       Nothing -> fail $ "TypeSystem.hierarchyMap: clafer " ++ c ++ "not found!"
-      Just clafer -> return $ mapHierarchy f getSuper uidIClaferMap' clafer)
+      Just clafer -> return $ mapHierarchy f getSuper uidIClaferMap' clafer
 
 
 {- ---------------------------------------
@@ -190,7 +196,7 @@
 
 fromUnionType :: [String] -> Maybe IType
 fromUnionType u =
-    case nub $ u of
+    case nub u of
         ["string"]  -> Just TString
         ["integer"] -> Just TInteger
         ["int"]     -> Just TInteger
@@ -230,6 +236,7 @@
 TClafer {_hi = ["Alice","Student","Person"]}
 -}
 (+++) :: IType -> IType -> IType
+TBoolean        +++ TBoolean        = TBoolean
 TString         +++ TString         = TString
 TReal           +++ TReal           = TReal
 TDouble         +++ TDouble         = TDouble
@@ -237,7 +244,7 @@
 t1@(TClafer u1) +++ t2@(TClafer u2) = if t1 == t2
                                       then t1
                                       else (TClafer $ nub $ u1 ++ u2)  -- should be TUnion [t1,t2]
-(TMap so1 ta1)  +++ (TMap so2 ta2)  = (TMap (so1 +++ so2) (ta1 +++ ta2))
+(TMap so1 ta1)  +++ (TMap so2 ta2)  = TMap (so1 +++ so2) (ta1 +++ ta2)
 (TUnion un1)    +++ (TUnion un2)    = collapseUnion (TUnion $ nub $ un1 ++ un2)
 (TUnion un1)    +++ t2              = collapseUnion (TUnion $ nub $ un1 ++ [t2])
 t1              +++ (TUnion un2)    = collapseUnion (TUnion $ nub $ t1:un2)
@@ -312,11 +319,11 @@
 intersection uidIClaferMap' (TMap _ ta1) ot2          = do
   coercedType <- intersection uidIClaferMap' ta1 ot2
   -- that means ot2 was coerced to ta1, so it's safe
-  return $ if (Just ta1) == coercedType then coercedType else Nothing
+  return $ if Just ta1 == coercedType then coercedType else Nothing
 intersection uidIClaferMap' ot1          (TMap _ ta2) = do
   coercedType <- intersection uidIClaferMap' ot1 ta2
   -- that means ot2 was coerced to ta1, so it's safe
-  return $ if (Just ta2) == coercedType then coercedType else Nothing
+  return $ if Just ta2 == coercedType then coercedType else Nothing
 intersection _              _            _            = do
   -- traceM $ "(DEBUG) TypeSystem.intersection: cannot intersect incompatible types: '"
   --      ++ show t1
@@ -334,6 +341,58 @@
 --   where
 --   contains i is = if i `elem` is then Just i else Nothing
 
+-- | This function is similar to 'intersection', but takes into account more ancestors to be able to combine
+-- clafers of different types, but with a common ancestor:
+-- Inputs:
+-- t1 is of type B
+-- t2 is of type C
+-- B : A
+-- C : A
+-- Outputs:
+-- the resulting type is: A, and the type combination is valid
+getIfThenElseType :: Monad m => UIDIClaferMap -> IType -> IType -> m (Maybe IType)
+getIfThenElseType _              TBoolean        TBoolean      = return $ Just TBoolean
+getIfThenElseType _              TString         TString       = return $ Just TString
+getIfThenElseType _              TReal           TReal         = return $ Just TReal
+getIfThenElseType _              TReal           TDouble       = return $ Just TReal
+getIfThenElseType _              TDouble         TReal         = return $ Just TReal
+getIfThenElseType _              TReal           TInteger      = return $ Just TReal
+getIfThenElseType _              TInteger        TReal         = return $ Just TReal
+getIfThenElseType _              TDouble         TDouble       = return $ Just TDouble
+getIfThenElseType _              TDouble         TInteger      = return $ Just TDouble
+getIfThenElseType _              TInteger        TDouble       = return $ Just TDouble
+getIfThenElseType _              TInteger        TInteger      = return $ Just TInteger
+getIfThenElseType uidIClaferMap' (TUnion t1s)    t2@(TClafer _) = undefined {- o
+  t1s' <- mapM (getIfThenElseType uidIClaferMap' t2) t1s
+  return $ case catMaybes t1s' of
+    [] -> Nothing
+    [t] -> Just t
+    t1s'' -> Just $ TUnion t1s''  -}
+getIfThenElseType uidIClaferMap' t1@(TClafer _)  (TUnion t2s) = undefined {- do
+  t2s' <- mapM (getIfThenElseType uidIClaferMap' t1) t2s
+  return $ case catMaybes t2s' of
+    [] -> Nothing
+    [t] -> Just t
+    t2s'' -> Just $ TUnion t2s''  -}
+getIfThenElseType uidIClaferMap' t@(TClafer ut1) (TClafer ut2) = if ut1 == ut2
+  then return $ Just t
+  else do
+    h1 <- mapM (hierarchyMap uidIClaferMap' _uid) ut1
+    h2 <- mapM (hierarchyMap uidIClaferMap' _uid) ut2
+    let ut = catMaybes [commonHierarchy u1 u2 | u1 <- h1, u2 <- h2]
+    return $ fromUnionType ut
+    where
+    commonHierarchy :: [UID] -> [UID] -> Maybe UID
+    commonHierarchy h1 h2 = commonHierarchy' (reverse h1) (reverse h2) Nothing
+    commonHierarchy' (x:xs) (y:ys) accumulator =
+      if (x == y)
+        then
+          if (null xs || null ys)
+            then Just x
+            else commonHierarchy' xs ys $ Just x
+        else accumulator
+    commonHierarchy' _ _ _ = error "ResolverType.commonHierarchy' expects two non empty lists but was given at least one empty list!" -- Should never happen
+getIfThenElseType _ _ _ = return Nothing
 
 
 {- | Compute the type of sequential composition of two types
@@ -409,7 +468,14 @@
 getTClafers    _                _               = []
 
 
-{- Coersions -}
+{- Coersions
+>>> coerce tDrefMapDOB tDrefMapDOB
+TInteger
+>>> coerce tDrefMapDOB TInteger
+TInteger
+>>> coerce tDrefMapDOB tDrefMapDOB
+TInteger
+-}
 
 coerce :: IType -> IType -> IType
 -- basic coersions
@@ -423,8 +489,9 @@
 coerce TInteger TDouble  = TDouble
 coerce TInteger TInteger = TInteger
 -- reduce complex types to simple ones
-coerce (TMap s1 t1) t2           = TMap s1 $ coerce t1 t2
-coerce t1           (TMap s2 t2) = TMap s2 $ coerce t1 t2
+coerce (TMap _ t1) (TMap _ t2) = coerce t1 t2
+coerce (TMap _ t1) t2          = coerce t1 t2
+coerce t1          (TMap _ t2) = coerce t1 t2
 coerce x y = error $ "TypeSystem.coerce: Cannot coerce not numeric: " ++ show x ++ " and " ++ show y
 
 
diff --git a/src/Language/Clafer/Optimizer/Optimizer.hs b/src/Language/Clafer/Optimizer/Optimizer.hs
--- a/src/Language/Clafer/Optimizer/Optimizer.hs
+++ b/src/Language/Clafer/Optimizer/Optimizer.hs
@@ -33,6 +33,7 @@
 
 import Language.Clafer.Common
 import Language.Clafer.ClaferArgs
+import Language.Clafer.Front.AbsClafer (Span(..))
 import Language.Clafer.Intermediate.Intclafer
 import Language.ClaferT (ClaferErr, CErr(..))
 
@@ -123,36 +124,36 @@
   IEGoal isMaximize' goal -> IEGoal isMaximize' `liftM` expPExp goal
 
 expPExp :: MonadState GEnv m => PExp -> m PExp
-expPExp (PExp t pid' pos' exp') = PExp t pid' pos' `liftM` expIExp exp'
+expPExp (PExp t pid' pos' exp') = PExp t pid' pos' `liftM` expIExp pos' exp'
 
-expIExp :: MonadState GEnv m => IExp -> m IExp
-expIExp x = case x of
+expIExp :: MonadState GEnv m => Span -> IExp -> m IExp
+expIExp pos' x = case x of
   IDeclPExp quant' decls' pexp -> do
     decls'' <- mapM expDecl decls'
     pexp' <- expPExp pexp
     return $ IDeclPExp quant' decls'' pexp'
   IFunExp op' exps' -> if op' == iJoin
-                     then expNav x else IFunExp op' `liftM` mapM expPExp exps'
-  IClaferId _ _ _ _ -> expNav x
+                     then expNav pos' x else IFunExp op' `liftM` mapM expPExp exps'
+  IClaferId _ _ _ _ -> expNav pos' x
   _ -> return x
 
 expDecl :: MonadState GEnv m => IDecl -> m IDecl
 expDecl x = case x of
   IDecl disj locids pexp -> IDecl disj locids `liftM` expPExp pexp
 
-expNav :: MonadState GEnv m => IExp -> m IExp
-expNav x = do
+expNav :: MonadState GEnv m => Span -> IExp -> m IExp
+expNav pos' x = do
   xs <- split' x return
-  xs' <- mapM (expNav' "") xs
-  return $ mkIFunExp iUnion $ map fst xs'
+  xs' <- mapM (expNav' pos' "") xs
+  return $ mkIFunExp pos' iUnion $ map fst xs'
 
-expNav' :: MonadState GEnv m => String -> IExp -> m (IExp, String)
-expNav' context (IFunExp _ (p0:p:_)) = do
-  (exp0', context') <- expNav' context  $ _exp p0
-  (exp', context'') <- expNav' context' $ _exp p
+expNav' :: MonadState GEnv m => Span -> String -> IExp -> m (IExp, String)
+expNav' pos' context (IFunExp _ (p0:p:_)) = do
+  (exp0', context') <- expNav' pos' context  $ _exp p0
+  (exp', context'') <- expNav' pos' context' $ _exp p
   return (IFunExp iJoin [ p0 {_exp = exp0'}
                         , p  {_exp = exp'}], context'')
-expNav' context x@(IClaferId modName' id' isTop' bind' ) = do
+expNav' pos' context x@(IClaferId modName' id' isTop' bind' ) = do
   st <- gets stable
   if Map.member id' st
     then do
@@ -160,11 +161,11 @@
       let (impls', context') = maybe (impls, "")
            (\y -> ([[head y]], head y)) $
            find (\z -> context == (head.tail) z) impls
-      return (mkIFunExp iUnion $ map (\u -> IClaferId modName' u isTop' bind') $
+      return (mkIFunExp pos' iUnion $ map (\u -> IClaferId modName' u isTop' bind') $
               map head impls', context')
     else do
       return (x, id')
-expNav' _ _ = error "Function expNav' from Optimizer expects an argument of type ClaferId or IFunExp but was given another IExp"
+expNav' pos' _ _ = error $ "Function expNav' from Optimizer expects an argument of type ClaferId or IFunExp but was given another IExp, " ++ show pos'
 
 split' :: MonadState GEnv m => IExp -> (IExp -> m IExp) -> m [IExp]
 split'(IFunExp _ (p:pexp:_)) f =
diff --git a/src/Language/ClaferT.hs b/src/Language/ClaferT.hs
--- a/src/Language/ClaferT.hs
+++ b/src/Language/ClaferT.hs
@@ -65,6 +65,7 @@
 import           Language.Clafer.ClaferArgs
 import           Language.Clafer.Common
 import           Language.Clafer.Front.AbsClafer
+import           Language.Clafer.Front.LexClafer
 import           Language.Clafer.Intermediate.Intclafer
 import           Language.Clafer.Intermediate.Tracing
 
@@ -104,6 +105,7 @@
     , cIr            :: Maybe (IModule, GEnv, Bool)
     , frags          :: [Pos]    -- line numbers of fragment markers
     , astModuleTrace :: Map.Map Span [Ast]  -- can keep the Ast map since it never changes
+    , otherTokens    :: [Token]  -- non-parseable tokens: comments and escape blocks
     } deriving Show
 
 -- | This simulates a field in the ClaferEnv that will always recompute the map,
@@ -146,6 +148,7 @@
     , cIr = Nothing
     , frags = []
     , astModuleTrace = Map.empty
+    , otherTokens = []
     }
   where
     args'' = if (CVLGraph `elem` (mode args') ||
