language-c 0.6.1 → 0.10.2
raw patch · 36 files changed
Files
- ChangeLog +0/−100
- ChangeLog.md +210/−0
- README +0/−57
- README.md +46/−0
- Setup.hs +0/−5
- dist/build/Language/C/Parser/Lexer.hs +0/−652
- dist/build/Language/C/Parser/Parser.hs +0/−6676
- language-c.cabal +115/−111
- src/Language/C/Analysis/AstAnalysis.hs +4/−0
- src/Language/C/Analysis/ConstEval.hs +36/−8
- src/Language/C/Analysis/Debug.hs +1/−0
- src/Language/C/Analysis/DeclAnalysis.hs +23/−3
- src/Language/C/Analysis/DefTable.hs +3/−3
- src/Language/C/Analysis/Export.hs +73/−20
- src/Language/C/Analysis/MachineDescs.hs +119/−0
- src/Language/C/Analysis/SemError.hs +4/−5
- src/Language/C/Analysis/SemRep.hs +45/−37
- src/Language/C/Analysis/TravMonad.hs +58/−42
- src/Language/C/Analysis/TypeCheck.hs +87/−90
- src/Language/C/Data.hs +2/−1
- src/Language/C/Data/Error.hs +9/−8
- src/Language/C/Data/Ident.hs +9/−3
- src/Language/C/Data/InputStream.hs +1/−4
- src/Language/C/Data/Name.hs +7/−2
- src/Language/C/Data/Node.hs +6/−2
- src/Language/C/Data/Position.hs +37/−24
- src/Language/C/Parser/Builtin.hs +3/−1
- src/Language/C/Parser/Lexer.x +110/−30
- src/Language/C/Parser/Parser.y +244/−174
- src/Language/C/Parser/ParserMonad.hs +11/−2
- src/Language/C/Parser/Tokens.hs +33/−0
- src/Language/C/Pretty.hs +18/−2
- src/Language/C/Syntax/AST.hs +124/−29
- src/Language/C/Syntax/Constants.hs +22/−10
- src/Language/C/Syntax/Ops.hs +12/−4
- src/Language/C/System/GCC.hs +1/−1
− ChangeLog
@@ -1,100 +0,0 @@-Changes since 0.6.0-==========================================================================--Changes since 0.5.0-==========================================================================-Thu Feb 23 2017- * Make gccParseCPPArgs grab the arg to -MF -MT and -MQ-Wed Feb 15 2017- * In enums, allow multiple attribute specifiers per enumerator-Tue Feb 21 2017- * Allow typedef redefinition if it denotes the same type-Tue Feb 21 2017- * Change TypeDefRef to store Type, not Maybe Type-Tue Feb 14 2017- * Parse (and ignore) Clang __attribute__((availability(id=major.minor.rev)))-Sun Sep 11 2016- * Add __builtin_bswap32/64.-Wed Jun 22 2016- * Add '_Alignof' to Lexer.x (fixes #7)-Mon Jun 27 2016- * Updates for C11 (part 1)- * _Nullable and _Nonnull support as well as Warnings/lint fixes provided by Anthony Cowley (https://github.com/acowley)-Wed Mar 16 2016- * Consider storage specifier "ThreadSpec" for global and local declarations-Tue Mar 15 2016- * Support C11 _NoReturn, genearlize is_inline to FunSpecs (Syntax) / FunAttrs (SemRep)--Changes since 0.4.3-==========================================================================-Wed Mar 2 2016- * Add direct base type BaseInt128 (complements previous __int128 patch)- ryan.gl.scott@gmail.com-Sun Feb 28 2016- * Parse gcc-specific __int128 type-Thu Dec 4 2014- * Scott Kovach <dskovach@gmail.com>: added derived Eq,Ord instances to NodeInfo--Changes since 0.4.2-==========================================================================-Sat Jan 11 2014- * Allow unicode characters in string/char literals and filenames-Mon Oct 27 2014- * macos-attributes-Tue Aug 13 2013- * Do not derive Error instances for newtypes (type parameter has non-parametric role)-Mon Aug 12 2013- * Fix bug caused by applying posFile to nopos (reported by Mikhail Sosonkin)--Changes since 0.4.1-==========================================================================-Tue Mar 19 2013- * TypeCheck: Return Left str instead of fail str (do not rely on MonadError instance of Either)- * Improve printing of SUERefs and Ident-Thu Feb 28 2013- * Fix parsing and printing of octal character escapes.-Tue Jun 12 2012- * Export Annotated type class from AST module-Wed Aug 24 2012- * Patch for alex-3.0--Changes 0.3.1 - 0.4.1-==========================================================================-Tue Aug 16 2011:- * Port to ghc-7.2-Fr April 15 2011: Alexander Bernauer <bernauer@inf.ethz.ch>- * Show instances (popular request) for AST types, DumpAst demo--Changes 0.3 - 0.3.1-==========================================================================-Thu Aug 21 benedikt.huber@gmail.com- * add aliases for exposed parsers, in order to document them--Fri Aug 15 benedikt.huber@gmail.com- * Remove NameMap from Data.Name. We will do this right when neccessary.- * Parser public API: expose parsers and the Parser Monad- * ParserMonad: Return updated name supply when executing parser- * Parser: Expose expression, statement, declaration and file parsers- * Data: Add newNameSupply ~ (namesStartingFrom 0)--Thu Aug 14 17:13:29 CEST 2008 iavor.diatchki@gmail.com- * Add a utility function to create a "blank" set of cpp arguments.- * Make that analysis traversal monad abstract.- * Export the type synonym "Register" (and bump version)--Wed Aug 13 12:00:57 CEST 2008 benedikt.huber@gmail.com- * add Data.Position: internalIdentAt---Old Changes-==========================================================================--Mon Jun 9 23:12:46 CEST 2008 benedikt.huber@gmail.com- * License switched to 3-clause BSD- $-- In accordance with the original authors, Language.C is now licensed as BSD-3.- See:- http://haskell.org/pipermail/c2hs/2008-June/000833.html- http://haskell.org/pipermail/c2hs/2008-June/000834.html- http://haskell.org/pipermail/c2hs/2008-June/000835.html-
+ ChangeLog.md view
@@ -0,0 +1,210 @@+# Changelog++## 0.10.2++- Accept C23 `bool` keyword.++## 0.10.1++- Support `0.0f16` syntax.++## 0.10.0++- Support for half-precision floating point `__fp16`, `_Float16`, and `_Float16x`.+- Support for bfloat16 `__bf16`.+- Support alignment specifier `_Alignas` in struct declatations.++## 0.9.4++- Support `happy-2.1`.++## 0.9.3++- Add support for `__builtin_bit_cast` to support clang toolchain,+ enabling builds with GHC 9.4+ on Windows.++## 0.9.2++- Add support for 128 bit builtin integer types++## 0.9.1++- Support parsing an empty list of clobbers after a colon in `asm` statements++## 0.9.0.2++- Correct lower bound on GHC++## 0.9.0.1++- Scrap dependency on syb++Thanks to @vmchale++## 0.9++- Make `Trav` a monad transformer+- Add `runTravTWithTravState`+- Tests now use Cabal-3+- Implement alignment calculation and correct size calculation+- Add `Show` instance for `Type`+- Add machine descriptions for x86_64 and armv7l+- Small correction in output of prettyprinter+- Allow zeros as line numbers in preprocessed directives++Thanks to @aweinstock314, @ersran9, @expipiplus1, @jkoppel, @trofi and @visq++## Changes since 0.7.0++Wed May 23 07:08:02 2018 +0200+ * Support IEC 60559 types and literals. Closes #52.++Wed May 16 07:08:15 2018 +0200+ * introduce flag for optional IEC 60559 type support (see #43)++Wed May 16 06:36:04 2018 +0200+ * WIP: towards a complete Export (#51)++Thu Feb 22 13:22:50 2018 -0500+ * [syntax] GHC.Generics.Generic and Control.DeepSeq.NFData instances (#49)+ (.cabal) drop splitBase flag++Tue Feb 20 08:34:39 2018 +0300+ * Selectively hide Prelude.<>: GHC 8.4 compat (#45)++Tue Feb 20 00:09:16 2018 -0500+ * (Analysis) Minimal support for `__float128` (#47)++Sat Nov 25 08:59:59 2017 +0100+ * Consider builtin_convertvector from #34 for pretty printing++Sat Nov 25 00:46:33 2017 -0600+ * add support for `_Float128` (#41)++## Changes since 0.6.0++Mon Jul 31 2017+ * Improve TypeCheck output (#31)++Sun Jul 30 2017+ * Add `__float128` (fixes #33)++Mon Maz 22 2017+ * Support clang’s `__builtin_convertvector` (Fixes #34)++Wed Mar 8 2017+ * Move file and parent information to new datatype FilePosition for performance reasons++## Changes since 0.5.0++Thu Feb 23 2017+ * Make gccParseCPPArgs grab the arg to -MF -MT and -MQ++Wed Feb 15 2017+ * In enums, allow multiple attribute specifiers per enumerator++Tue Feb 21 2017+ * Allow typedef redefinition if it denotes the same type++Tue Feb 21 2017+ * Change TypeDefRef to store Type, not Maybe Type++Tue Feb 14 2017+ * Parse (and ignore) Clang __attribute__((availability(id=major.minor.rev)))++Sun Sep 11 2016+ * Add `__builtin_bswap32/64`.++Wed Jun 22 2016+ * Add `_Alignof` to Lexer.x (fixes #7)++Mon Jun 27 2016+ * Updates for C11 (part 1)+ * `_Nullable` and `_Nonnull` support as well as Warnings/lint fixes provided by Anthony Cowley (https://github.com/acowley)++Wed Mar 16 2016+ * Consider storage specifier "ThreadSpec" for global and local declarations++Tue Mar 15 2016+ * Support C11 `_NoReturn`, genearlize is_inline to FunSpecs (Syntax) / FunAttrs (SemRep)++## Changes since 0.4.3++Wed Mar 2 2016+ * Add direct base type BaseInt128 (complements previous `__int128` patch)+ ryan.gl.scott@gmail.com++Sun Feb 28 2016+ * Parse gcc-specific `__int128` type++Thu Dec 4 2014+ * Scott Kovach <dskovach@gmail.com>: added derived Eq,Ord instances to NodeInfo++## Changes since 0.4.2++Sat Jan 11 2014+ * Allow unicode characters in string/char literals and filenames++Mon Oct 27 2014+ * macos-attributes++Tue Aug 13 2013+ * Do not derive Error instances for newtypes (type parameter has non-parametric role)++Mon Aug 12 2013+ * Fix bug caused by applying posFile to nopos (reported by Mikhail Sosonkin)++## Changes since 0.4.1++Tue Mar 19 2013+ * TypeCheck: Return Left str instead of fail str (do not rely on MonadError instance of Either)+ * Improve printing of SUERefs and Ident++Thu Feb 28 2013+ * Fix parsing and printing of octal character escapes.++Tue Jun 12 2012+ * Export Annotated type class from AST module++Wed Aug 24 2012+ * Patch for alex-3.0++## Changes 0.3.1 - 0.4.1++Tue Aug 16 2011:+ * Port to ghc-7.2++Fri Apr 15 2011: Alexander Bernauer <bernauer@inf.ethz.ch>+ * Show instances (popular request) for AST types, DumpAst demo++## Changes 0.3 - 0.3.1++Thu Aug 21 benedikt.huber@gmail.com+ * add aliases for exposed parsers, in order to document them++Fri Aug 15 benedikt.huber@gmail.com+ * Remove NameMap from Data.Name. We will do this right when neccessary.+ * Parser public API: expose parsers and the Parser Monad+ * ParserMonad: Return updated name supply when executing parser+ * Parser: Expose expression, statement, declaration and file parsers+ * Data: Add newNameSupply ~ (namesStartingFrom 0)++Thu Aug 14 17:13:29 CEST 2008 iavor.diatchki@gmail.com+ * Add a utility function to create a "blank" set of cpp arguments.+ * Make that analysis traversal monad abstract.+ * Export the type synonym "Register" (and bump version)++Wed Aug 13 12:00:57 CEST 2008 benedikt.huber@gmail.com+ * add Data.Position: internalIdentAt++## Old Changes++Mon Jun 9 23:12:46 CEST 2008 benedikt.huber@gmail.com+ * License switched to 3-clause BSD+ $+- In accordance with the original authors, Language.C is now licensed as BSD-3.+ See:+ http://haskell.org/pipermail/c2hs/2008-June/000833.html+ http://haskell.org/pipermail/c2hs/2008-June/000834.html+ http://haskell.org/pipermail/c2hs/2008-June/000835.html+
− README
@@ -1,57 +0,0 @@-= Language.C =--Language.C is a parser and pretty-printer framework for C11 and the extensions of gcc.--See http://visq.github.io/language-c/--== Build and Install ==--cabal install---- or ----runhaskell Setup.hs configure FLAGS-runhaskell Setup.hs build-runhaskell Setup.hs install--Provide the set of flags passing- --flags="<flags-seperated-by-space>"-to configure.--== Compatibility ==--Tested with ghc-7.10.3 (Linux).-It is recommended to use the most recent platform release: http://hackage.haskell.org/platform/.--== C Language Compatibility ==--Currently unsupported C11 constructs:- - static assertion 6.7.10 (_Static_assert)- - generic selection 6.5.1.1 (_Generic)- - _Atomic, _Alignas, _Thread_local- - Universal character names--Currently unsupported GNU C extensions:- - __auto_type- - __float128- - __builtin_offsetof- char a[__builtin_offsetof (struct S, sa->f)- - _Decimal32- - Extended assembler- __asm__ __volatile__ ("" : : : );- __asm__ goto ("" : : : : label);--== Sources ==--see src/README--== Examples ==--A couple of small examples are available in /examples--== Testing ==--A couple of regression tests can be run via-> cd test/harness; make--For more tests, see test/README.
+ README.md view
@@ -0,0 +1,46 @@+# Language.C++Language.C is a parser and pretty-printer framework for C11 and the extensions of gcc.++See http://visq.github.io/language-c/++## C Language Compatibility++language-c has no comprehensive C23 support yet, but supports+ - the `bool` keyword++Currently unsupported C11 constructs:+ - static assertion 6.7.10 (`_Static_assert`)+ - generic selection 6.5.1.1 (`_Generic`)+ - `_Atomic`, `_Thread_local`+ - Universal character names++Currently unsupported GNU C extensions:+ - `__auto_type`+ - `__builtin_offsetof`+ `char a[__builtin_offsetof (struct S, sa->f)`+ - `_Decimal32`+ - Extended assembler+ `__asm__ __volatile__ ("" : : : )`;+ `__asm__ goto ("" : : : : label)`;+ - `__attribute__((packed))`: types featuring this attribute may have an+ incorrect size or alignment calculated.++### IEC 60559:++Since `language-c-0.8`, extended floating point types are supported (gcc 7 feature). Package maintainers may decide to disable these types (flag `iecFpExtension`) to work around the fact that the `_Float128` type is redefined by glibc >= 2.26 if gcc < 7 is used for preprocessing:++```+ /* The type _Float128 exists only since GCC 7.0. */+ # if !__GNUC_PREREQ (7, 0) || defined __cplusplus+ typedef __float128 _Float128;+ # endif+```++## Examples++A couple of small examples are available in `examples`.++## Testing++See `test/README`.
− Setup.hs
@@ -1,5 +0,0 @@-#!/usr/bin/env runhaskell--import Distribution.Simple--main = defaultMain
− dist/build/Language/C/Parser/Lexer.hs
@@ -1,652 +0,0 @@-{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-missing-signatures #-}-{-# LANGUAGE CPP,MagicHash #-}-{-# LINE 49 "src/Language/C/Parser/Lexer.x" #-}---module Language.C.Parser.Lexer (lexC, parseError) where--import Data.Char (chr, isDigit)-import Data.Word (Word8)-import Control.Monad (liftM, when)--import Language.C.Data.InputStream- (InputStream, inputStreamEmpty, takeByte, takeChar, takeChars)---- ( InputStream, readInputStream,inputStreamToString,inputStreamFromString,--- takeByte, takeChar, inputStreamEmpty, takeChars,--- countLines,--- )-import Language.C.Data.Position-import Language.C.Data.Ident (mkIdent)--import Language.C.Syntax.Constants--import Language.C.Parser.Tokens-import Language.C.Parser.ParserMonad--#if __GLASGOW_HASKELL__ >= 603-#include "ghcconfig.h"-#elif defined(__GLASGOW_HASKELL__)-#include "config.h"-#endif-#if __GLASGOW_HASKELL__ >= 503-import Data.Array-import Data.Array.Base (unsafeAt)-#else-import Array-#endif-#if __GLASGOW_HASKELL__ >= 503-import GHC.Exts-#else-import GlaExts-#endif-alex_tab_size :: Int-alex_tab_size = 8-alex_base :: AlexAddr-alex_base = AlexA# "\xf8\xff\xff\xff\x6d\x00\x00\x00\x63\x01\x00\x00\x59\x02\x00\x00\x4f\x03\x00\x00\x45\x04\x00\x00\x3b\x05\x00\x00\x31\x06\x00\x00\x27\x07\x00\x00\x1d\x08\x00\x00\x13\x09\x00\x00\xdf\xff\xff\xff\xe0\xff\xff\xff\x6f\x00\x00\x00\xa7\xff\xff\xff\x93\x09\x00\x00\x9c\xff\xff\xff\x13\x0a\x00\x00\x93\x0a\x00\x00\x13\x0b\x00\x00\x93\x0b\x00\x00\x13\x0c\x00\x00\x93\x0c\x00\x00\x13\x0d\x00\x00\x93\x0d\x00\x00\x13\x0e\x00\x00\x93\x0e\x00\x00\x13\x0f\x00\x00\x93\x0f\x00\x00\x13\x10\x00\x00\xa3\xff\xff\xff\x93\x10\x00\x00\xa6\xff\xff\xff\x13\x11\x00\x00\x93\x11\x00\x00\x13\x12\x00\x00\x93\x12\x00\x00\x13\x13\x00\x00\x93\x13\x00\x00\x13\x14\x00\x00\x93\x14\x00\x00\x13\x15\x00\x00\x93\x15\x00\x00\x13\x16\x00\x00\xab\xff\xff\xff\x4c\x01\x00\x00\x54\x16\x00\x00\x00\x00\x00\x00\xc5\x16\x00\x00\x00\x00\x00\x00\x45\x17\x00\x00\xc5\x17\x00\x00\x54\x00\x00\x00\x37\x02\x00\x00\xc5\x18\x00\x00\x6e\x02\x00\x00\x85\x18\x00\x00\x00\x00\x00\x00\x36\x03\x00\x00\x23\x04\x00\x00\x7b\x19\x00\x00\x49\x04\x00\x00\x19\x05\x00\x00\x50\x05\x00\x00\x0f\x06\x00\x00\x9b\xff\xff\xff\x46\x06\x00\x00\x0e\x07\x00\x00\xaa\xff\xff\xff\x00\x00\x00\x00\xec\x19\x00\x00\xfb\x07\x00\x00\x00\x00\x00\x00\x5d\x1a\x00\x00\x00\x00\x00\x00\xce\x1a\x00\x00\x21\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3f\x1b\x00\x00\xb0\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x1c\x00\x00\x92\x1c\x00\x00\x00\x00\x00\x00\x03\x1d\x00\x00\x00\x00\x00\x00\x74\x1d\x00\x00\x00\x00\x00\x00\xe5\x1d\x00\x00\x00\x00\x00\x00\x56\x1e\x00\x00\x00\x00\x00\x00\xc7\x1e\x00\x00\x00\x00\x00\x00\x38\x1f\x00\x00\x00\x00\x00\x00\x79\x1f\x00\x00\xf1\x08\x00\x00\x00\x00\x00\x00\xba\x1f\x00\x00\x00\x00\x00\x00\xfb\x1f\x00\x00\x17\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x20\x00\x00\x7d\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbe\x20\x00\x00\xff\x20\x00\x00\x00\x00\x00\x00\x40\x21\x00\x00\x00\x00\x00\x00\x81\x21\x00\x00\x00\x00\x00\x00\xc2\x21\x00\x00\x00\x00\x00\x00\x03\x22\x00\x00\xa1\xff\xff\xff\x00\x00\x00\x00\x44\x22\x00\x00\x00\x00\x00\x00\x85\x22\x00\x00\x85\x23\x00\x00\x59\x19\x00\x00\x81\x19\x00\x00\x45\x23\x00\x00\x00\x00\x00\x00\x45\x24\x00\x00\x95\x24\x00\x00\xad\x24\x00\x00\x66\x24\x00\x00\x00\x00\x00\x00\x66\x25\x00\x00\x26\x25\x00\x00\x00\x00\x00\x00\xf6\x25\x00\x00\x5d\x26\x00\x00\xdd\x26\x00\x00\x2d\x27\x00\x00\x44\x27\x00\x00\x7b\x27\x00\x00\x96\x27\x00\x00\x4f\x27\x00\x00\x8f\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x28\x00\x00\x0f\x29\x00\x00\x5f\x29\x00\x00\x76\x29\x00\x00\xad\x29\x00\x00\xc8\x29\x00\x00\x81\x29\x00\x00\xc1\x29\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x2a\x00\x00\x11\x2b\x00\x00\x29\x2b\x00\x00\xe2\x2a\x00\x00\x00\x00\x00\x00\xe2\x2b\x00\x00\x32\x2c\x00\x00\x4a\x2c\x00\x00\x03\x2c\x00\x00\x00\x00\x00\x00\x03\x2d\x00\x00\x53\x2d\x00\x00\x98\x2d\x00\x00\x8e\x2e\x00\x00\xce\x2e\x00\x00\x00\x00\x00\x00\xce\x2f\x00\x00\x6c\x2e\x00\x00\x44\x30\x00\x00\x3a\x31\x00\x00\x7a\x31\x00\x00\x00\x00\x00\x00\x7a\x32\x00\x00\x9d\xff\xff\xff\x3a\x32\x00\x00\x00\x00\x00\x00\x3a\x33\x00\x00\xfa\x32\x00\x00\x00\x00\x00\x00\xf0\x33\x00\x00\xe2\xff\xff\xff\xe6\x34\x00\x00\xdc\x35\x00\x00\xd2\x36\x00\x00\xc8\x37\x00\x00\xbe\x38\x00\x00\x92\x2e\x00\x00\x9a\x00\x00\x00\x79\x00\x00\x00\xb0\x00\x00\x00\x8b\x00\x00\x00\x76\x2d\x00\x00\x95\x01\x00\x00\x2b\x30\x00\x00\x18\x31\x00\x00\xb4\x39\x00\x00\xaa\x3a\x00\x00\x88\x02\x00\x00\x87\x04\x00\x00\x6a\x05\x00\x00\x60\x06\x00\x00\x08\x00\x00\x00\x72\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x33\x00\x00\xe2\x34\x00\x00\x26\x01\x00\x00\x67\x01\x00\x00\xe3\xff\xff\xff\x30\x01\x00\x00\x61\x02\x00\x00\x51\x03\x00\x00\x00\x00\x00\x00\xa8\xff\xff\xff\x55\x03\x00\x00\x5a\x01\x00\x00\x68\x01\x00\x00\x59\x03\x00\x00\x43\x05\x00\x00\xc7\xff\xff\xff\x47\x00\x00\x00\x3b\x31\x00\x00\xba\x35\x00\x00\x39\x06\x00\x00\x29\x07\x00\x00\x5f\x00\x00\x00\x32\x01\x00\x00\x2d\x07\x00\x00\x31\x07\x00\x00\x00\x00\x00\x00\xa9\xff\xff\xff\x1f\x08\x00\x00\x60\x01\x00\x00\x62\x02\x00\x00\x23\x08\x00\x00\x27\x08\x00\x00\xca\xff\xff\xff\x38\x01\x00\x00\xe5\x35\x00\x00\x15\x09\x00\x00\x19\x09\x00\x00\x34\x01\x00\x00\x66\x01\x00\x00\x1d\x09\x00\x00\x58\x19\x00\x00\x00\x00\x00\x00\xe8\xff\xff\xff\x7f\x19\x00\x00\x64\x01\x00\x00\x41\x03\x00\x00\x87\x24\x00\x00\x4a\x27\x00\x00\xcb\xff\xff\xff\x57\x01\x00\x00\xb4\x36\x00\x00\xb0\x37\x00\x00\x54\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x04\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x1b\x07\x00\x00\x9c\x38\x00\x00\xa6\x38\x00\x00\xdb\x36\x00\x00\x91\x39\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x39\x07\x00\x00\xd7\x37\x00\x00\xae\x39\x00\x00\x00\x00\x00\x00\xa0\x3b\x00\x00\x00\x00\x00\x00\x96\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x65\x04\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x00\x00\x61\x00\x00\x00\x53\x00\x00\x00\x5e\x00\x00\x00\x60\x00\x00\x00\xaf\x00\x00\x00\x89\x00\x00\x00\x99\x00\x00\x00\xae\x00\x00\x00\x00\x00\x00\x00\x37\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\x00\x00\x00\x3a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 :: AlexAddr-alex_table = AlexA# "\x00\x00\xd4\x00\xd4\x00\xd4\x00\xd4\x00\xd4\x00\x22\x01\x23\x01\xce\x00\x0e\x00\x10\x00\x79\x00\x1e\x00\x2c\x00\x20\x00\xb7\x00\x52\x01\xcd\x00\xd5\x00\xe0\x00\xe0\x00\xf1\x00\xf1\x00\x01\x01\xd4\x00\x2b\x01\xc2\x00\x0d\x00\xd8\x00\x33\x01\x34\x01\xb3\x00\x25\x01\x26\x01\x31\x01\x2f\x01\x4e\x01\x30\x01\x2a\x01\x32\x01\xea\x00\xfa\x00\xfa\x00\xfa\x00\xfa\x00\xfa\x00\xfa\x00\xfa\x00\xfa\x00\xfa\x00\x42\x01\x4f\x01\x37\x01\x43\x01\x39\x01\x41\x01\xe0\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd9\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\x27\x01\x01\x01\x28\x01\x3d\x01\xd8\x00\xe0\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\x50\x01\x3e\x01\x51\x01\x2c\x01\xff\xff\x0d\x00\x3c\x01\xff\xff\xd4\x00\xd4\x00\xd4\x00\xd4\x00\xd4\x00\x13\x01\x13\x01\x1a\x01\x1a\x01\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x2e\x01\x0d\x00\x46\x01\x00\x00\xd4\x00\xe7\x00\x0d\x01\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x47\x01\x00\x00\x48\x01\x45\x01\x29\x01\xd2\x00\xd2\x00\xd2\x00\xd2\x00\xd2\x00\xd2\x00\xd2\x00\xd2\x00\xd2\x00\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\xe1\x00\xf1\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x3a\x00\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\xc6\x00\x4c\x01\xc6\x00\x2d\x01\xa7\x00\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\xf1\x00\x3f\x01\x4d\x01\x00\x00\x44\x00\x4a\x01\x44\x01\xc8\x00\x3b\x01\xc8\x00\x00\x00\x41\x00\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x35\x01\x38\x01\x49\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa5\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa8\x00\x14\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x74\x00\x23\x00\x57\x00\x57\x00\x57\x00\x58\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\x3c\x00\x00\x00\xff\xff\x00\x00\x0c\x01\x3c\x00\x3a\x01\x36\x01\x00\x00\x4b\x01\x00\x00\x00\x00\x00\x00\xde\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\xf8\x00\xe0\x00\x00\x00\xf1\x00\x00\x00\x01\x01\x0d\x01\x3c\x00\x00\x00\x00\x00\x00\x00\xe0\x00\xe0\x00\x3c\x00\x0c\x01\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\x01\x00\xde\x00\xdc\x00\x00\x00\xed\x00\x00\x00\x00\x00\x34\x00\x00\x00\x08\x01\xf2\x00\xe0\x00\xdc\x00\xf1\x00\x3c\x00\x01\x01\x00\x00\x00\x00\xed\x00\x3c\x00\x3c\x00\xe0\x00\xfd\x00\x3c\x00\x3c\x00\x0c\x01\xe3\x00\xf1\x00\x40\x01\x00\x00\x00\x00\x01\x01\x3c\x00\x01\x01\xde\x00\xe8\x00\x3c\x00\xa7\x00\x3c\x00\x42\x00\x3c\x00\x02\x01\x37\x00\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\xe0\x00\xe0\x00\xe0\x00\xfd\x00\xda\x00\xdd\x00\xf1\x00\x00\x00\x00\x00\x00\x00\x01\x01\x00\x00\x01\x01\xde\x00\xe8\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\xa5\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa8\x00\x14\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x74\x00\x23\x00\x57\x00\x57\x00\x57\x00\x58\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\x00\x00\x00\x00\xff\xff\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x00\x00\x00\x00\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\x02\x00\xcf\x00\xd5\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x00\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3b\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x01\xf4\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\xa7\x00\x0c\x01\xf9\x00\x00\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\xe0\x00\x00\x00\x0c\x01\xee\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x3c\x00\x00\x00\x0c\x01\xf9\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\xa5\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa8\x00\x14\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x74\x00\x23\x00\x57\x00\x57\x00\x57\x00\x58\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\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0d\x01\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x00\x00\x00\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\x00\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x09\x01\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x3d\x00\x0c\x01\x00\x00\x00\x00\x0c\x01\xda\x00\x00\x00\x00\x00\x00\x00\xde\x00\x0c\x01\x00\x00\x00\x00\x0c\x01\xde\x00\xa7\x00\x00\x00\xfe\x00\x0c\x01\x00\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x09\x01\x00\x00\x00\x00\x00\x00\xe0\x00\xe0\x00\x00\x00\xde\x00\xe0\x00\xe0\x00\x0c\x01\x0c\x01\xe0\x00\xe0\x00\x00\x00\x0c\x01\x0c\x01\x00\x00\x00\x00\x0c\x01\xde\x00\x00\x00\x00\x00\x00\x00\x0c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa5\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa8\x00\x14\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x74\x00\x23\x00\x57\x00\x57\x00\x57\x00\x58\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\x00\x00\x00\x00\xff\xff\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x00\x00\x00\x00\x0e\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x11\x01\x00\x00\x00\x00\x3f\x00\x3f\x00\x3f\x00\x3f\x00\x3f\x00\x3f\x00\x3f\x00\x3f\x00\x3f\x00\x3f\x00\x00\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3e\x00\x3f\x00\x3f\x00\x3f\x00\x3f\x00\x3f\x00\x3f\x00\xd0\x00\xd5\x00\x00\x00\xbe\x00\xd3\x00\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x00\x00\x00\x00\xa2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x00\x00\x00\xbd\x00\x3f\x00\x3f\x00\x3f\x00\x3f\x00\x3f\x00\x3f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\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\xa0\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa3\x00\x15\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x72\x00\x24\x00\x55\x00\x55\x00\x55\x00\x56\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\x00\x00\x00\x00\xff\xff\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x00\x00\x00\x00\x0e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\x05\x00\xcf\x00\xd5\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x00\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x40\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe5\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\xa2\x00\x0c\x01\x00\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\x00\xe0\x00\x00\x00\xdf\x00\x00\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x42\x00\x00\x00\x0c\x01\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\xa0\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa3\x00\x15\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x72\x00\x24\x00\x55\x00\x55\x00\x55\x00\x56\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\x00\x00\x00\x00\xff\xff\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x00\x00\x00\x00\x0e\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\x06\x00\xd0\x00\xd5\x00\x00\x00\x00\x00\xd3\x00\x00\x00\x00\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x43\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\xd0\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\xa2\x00\xef\x00\x00\x00\xd2\x00\xd2\x00\xd2\x00\xd2\x00\xd2\x00\xd2\x00\xd2\x00\xd2\x00\xd2\x00\xd2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x00\xf1\x00\x00\x00\x0c\x01\x00\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x47\x00\x00\x00\xef\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\xa0\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa3\x00\x15\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x72\x00\x24\x00\x55\x00\x55\x00\x55\x00\x56\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\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x01\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x00\x00\x00\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x13\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x01\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x00\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x4c\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x0c\x01\xef\x00\x1a\x01\x00\x00\x13\x01\x0c\x01\xa2\x00\x00\x00\x1a\x01\x0c\x01\x13\x01\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x00\xf1\x00\x00\x00\xeb\x00\xf1\x00\xf1\x00\x00\x00\x0c\x01\xf1\x00\xf1\x00\x00\x00\xef\x00\xef\x00\x1a\x01\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x1a\x01\x0c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa0\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa3\x00\x15\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x72\x00\x24\x00\x55\x00\x55\x00\x55\x00\x56\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\x00\x00\x00\x00\xff\xff\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x00\x00\x00\x00\x0f\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x68\x00\x68\x00\x68\x00\x68\x00\x68\x00\x68\x00\x68\x00\x68\x00\x68\x00\x00\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x63\x00\x68\x00\x68\x00\x68\x00\x68\x00\x68\x00\x68\x00\x00\x00\x00\x00\x00\x00\xeb\x00\x00\x00\x00\x00\x00\x00\xef\x00\x00\x00\x00\x00\x00\x00\xf6\x00\xef\x00\x00\x00\x00\x00\x00\x00\x0c\x01\xa7\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x00\x68\x00\x68\x00\x68\x00\x68\x00\x68\x00\xf1\x00\xf1\x00\x00\x00\x0c\x01\xf1\x00\xf1\x00\x00\x00\x0c\x01\xf1\x00\xf1\x00\x00\x00\xf0\x00\xef\x00\x00\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x0c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa5\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa8\x00\x14\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x74\x00\x23\x00\x57\x00\x57\x00\x57\x00\x58\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\x00\x00\x00\x00\xff\xff\x84\x00\x84\x00\x84\x00\x84\x00\x84\x00\x84\x00\x84\x00\x84\x00\x84\x00\x84\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x84\x00\x84\x00\x84\x00\x84\x00\x84\x00\x00\x00\x00\x00\x10\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x8b\x00\x8b\x00\x8b\x00\x8b\x00\x8b\x00\x8b\x00\x8b\x00\x8b\x00\x8b\x00\x00\x00\x84\x00\x84\x00\x84\x00\x84\x00\x84\x00\x84\x00\x8b\x00\x8b\x00\x8b\x00\x8b\x00\x8b\x00\x8b\x00\x00\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x0c\x01\xff\x00\x00\x00\x00\x00\x00\x00\xff\x00\xa2\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8b\x00\x8b\x00\x8b\x00\x8b\x00\x8b\x00\x8b\x00\x01\x01\x01\x01\x00\x00\x0c\x01\x01\x01\x01\x01\x00\x00\xfb\x00\x01\x01\x01\x01\x00\x00\x0c\x01\xff\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x00\x00\x0c\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa0\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa3\x00\x15\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x72\x00\x24\x00\x55\x00\x55\x00\x55\x00\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xba\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xb6\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb0\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xaa\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xa5\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa9\x00\xa0\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\xa4\x00\x96\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x97\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x8c\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x8d\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x88\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x83\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x7e\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x0f\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x11\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x12\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x13\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x14\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x73\x00\x15\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x71\x00\x17\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x16\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x19\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x18\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x1a\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x1b\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x1c\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x38\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\x2e\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\x33\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x36\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xff\xff\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\x00\x00\x00\x00\xff\xff\xbd\x00\x0c\x01\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\x00\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\xbd\x00\x01\x01\x01\x01\x00\x00\xff\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfb\x00\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x00\xbd\x00\x00\x00\x00\x00\xbd\x00\xbd\x00\x01\x01\x01\x01\x00\x00\x0c\x01\x00\x00\x00\x00\x00\x00\xbd\x00\x00\x00\x00\x00\x00\x00\xbd\x00\xff\x00\xbd\x00\x00\x00\xbd\x00\x00\x00\x7f\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\x36\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x38\x00\x33\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x32\x00\x31\x00\x31\x00\x31\x00\x30\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x62\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x67\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\x6c\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\x6b\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\x70\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\x6f\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\x72\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\x74\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\x76\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\x78\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\x7b\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\x7d\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\x81\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\x86\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\x89\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\x92\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\x93\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\x9c\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\x9d\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\xa3\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\xa8\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\xae\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\xb4\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\xb8\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\xbb\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\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\x00\x00\x00\x00\x00\x00\xff\x00\xbf\x00\x00\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\x0c\x01\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\xbf\x00\x0c\x01\x00\x00\x00\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\xbf\x00\x0c\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x00\xbf\x00\x00\x00\x00\x00\xbf\x00\xbf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbf\x00\x00\x00\x00\x00\x00\x00\xbf\x00\x00\x00\xbf\x00\x42\x00\xbf\x00\x00\x00\x84\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\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\x00\x0b\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\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\x00\x00\x00\x00\x00\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\x00\x00\x00\x00\x06\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x0c\x01\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\xc0\x00\x01\x01\x01\x01\x00\x00\x00\x01\x00\x00\xc1\x00\x00\x00\xc0\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x0c\x01\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\xc1\x00\x00\x00\x00\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\xc1\x00\xc0\x00\xc0\x00\x00\x00\x00\x00\xc0\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\xc0\x00\x42\x00\xc0\x00\xc1\x00\x8e\x00\x00\x00\x00\x00\x00\x00\xc1\x00\xc1\x00\x00\x00\x00\x00\xc1\x00\xc1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\xc1\x00\x00\x00\xc1\x00\x00\x00\x8f\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\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\x00\x00\x00\x00\x00\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\xc2\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\xc3\x00\x00\x00\x00\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\xc3\x00\xc2\x00\xc2\x00\x00\x00\x00\x00\xc2\x00\xc2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\x00\x00\x00\x00\xc2\x00\x00\x00\xc2\x00\x42\x00\xc2\x00\xc3\x00\x98\x00\x00\x00\x00\x00\x00\x00\xc3\x00\xc3\x00\x00\x00\x00\x00\xc3\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\xc3\x00\x00\x00\xc3\x00\x00\x00\x99\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x0a\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x0a\x00\x00\x00\x0a\x00\x00\x00\xa1\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\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x00\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\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\x09\x00\x00\x00\x00\x00\x00\x00\x09\x00\x09\x00\x09\x00\x09\x00\x09\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\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x09\x00\x00\x00\x00\x00\x09\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x09\x00\x00\x00\x09\x00\x00\x00\xa6\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\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x16\x01\x00\x00\xc9\x00\xc9\x00\xc9\x00\xc9\x00\xc9\x00\xc9\x00\xc9\x00\xc9\x00\xc9\x00\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x08\x00\x05\x00\xc7\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x05\x00\x00\x00\x00\x00\x05\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x05\x00\x43\x00\x05\x00\x00\x00\xab\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\x88\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x89\x00\x1a\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x67\x00\x29\x00\x4a\x00\x4a\x00\x4a\x00\x4b\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\x00\x00\x00\x00\xff\xff\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x00\x00\x00\x00\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\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x00\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x04\x00\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xaa\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xaf\x00\xae\x00\x13\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x75\x00\x76\x00\x22\x00\x59\x00\x59\x00\x59\x00\x5a\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x00\x00\x00\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01\x00\x00\x00\x00\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x43\x00\x01\x00\x00\x00\xb1\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\x88\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x8a\x00\x89\x00\x1a\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x66\x00\x67\x00\x29\x00\x4a\x00\x4a\x00\x4a\x00\x4b\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\x00\x00\xc4\x00\xff\xff\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x16\x01\x00\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xc9\x00\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00\xe4\x00\xe4\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\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\xb0\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb5\x00\xb4\x00\x12\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x77\x00\x78\x00\x21\x00\x5b\x00\x5b\x00\x5b\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\xd8\x00\x00\x00\xcf\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x80\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\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\x7e\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x82\x00\x81\x00\x1c\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x61\x00\x62\x00\x2b\x00\x45\x00\x45\x00\x45\x00\x46\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\x00\x00\x00\x00\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\xc0\x00\x00\x00\xd8\x00\x00\x00\x24\x01\xad\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x00\x85\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\x00\xd8\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\x83\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x86\x00\x1b\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x65\x00\x2a\x00\x48\x00\x48\x00\x48\x00\x49\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\x00\x00\x16\x01\xff\xff\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xe9\x00\xc9\x00\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x21\x01\xc7\x00\x00\x00\x00\x00\x00\x00\xc1\x00\x00\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\x00\x00\xcb\x00\x16\x01\x00\x00\xfa\x00\xfa\x00\xfa\x00\xfa\x00\xfa\x00\xfa\x00\xfa\x00\xfa\x00\xfa\x00\xfa\x00\xc7\x00\x00\x00\x00\x00\x00\x00\xe4\x00\xe4\x00\x00\x00\xdb\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x00\xf3\x00\xcc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\xf7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x00\x00\x00\x00\x00\x00\xf5\x00\xf5\x00\x00\x00\xec\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf7\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\x8c\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x94\x00\x92\x00\x18\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6a\x00\x6b\x00\x28\x00\x4d\x00\x4d\x00\x4d\x00\x50\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\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x17\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x0a\x01\x00\x00\x00\x00\x05\x01\x05\x01\x00\x00\xfc\x00\x12\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x07\x01\x00\x00\x00\x00\x00\x00\x00\x00\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x00\x00\x14\x01\x14\x01\x00\x00\x12\x01\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\x8d\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x95\x00\x93\x00\x19\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x69\x00\x6c\x00\x27\x00\x4e\x00\x4e\x00\x4e\x00\x4f\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\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x01\x00\x00\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x1f\x01\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x01\x00\x00\x00\x00\x00\x00\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x01\x00\x00\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x1c\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x0b\x01\x00\x00\x00\x00\x05\x01\x05\x01\x00\x00\xfc\x00\x19\x01\x00\x00\x00\x00\xc5\x00\x00\x00\x00\x00\x19\x01\x9a\x00\x07\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x01\x00\x00\x00\x00\x1b\x01\x1b\x01\x00\x00\x19\x01\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\x96\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9e\x00\x9c\x00\x16\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6e\x00\x6f\x00\x26\x00\x51\x00\x51\x00\x51\x00\x54\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\x00\x00\x00\x00\xff\xff\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x15\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x1e\x01\xc7\x00\x12\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x00\x00\xc7\x00\x12\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x12\x01\x00\x00\x00\x00\x14\x01\x14\x01\x00\x00\x12\x01\x00\x00\x00\x00\xc7\x00\x12\x01\x00\x00\x00\x00\x14\x01\x14\x01\x00\x00\x12\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x97\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9f\x00\x9d\x00\x17\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x6d\x00\x70\x00\x25\x00\x52\x00\x52\x00\x52\x00\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd7\x00\xca\x00\x00\x00\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x18\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc7\x00\x12\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x00\x00\xc7\x00\x12\x01\x00\x00\x00\x00\x14\x01\x14\x01\x00\x00\x12\x01\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x1d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xb6\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb9\x00\xb8\x00\x11\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7a\x00\x7b\x00\x1f\x00\x5d\x00\x5d\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\xba\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbc\x00\xbb\x00\x0f\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7c\x00\x7d\x00\x1d\x00\x5f\x00\x5f\x00\x5f\x00\x60\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\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x36\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x38\x00\x33\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x32\x00\x31\x00\x31\x00\x31\x00\x30\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\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x36\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x39\x00\x38\x00\x33\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2f\x00\x2e\x00\x32\x00\x31\x00\x31\x00\x31\x00\x30\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\x00\x00\x00\x00\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\x24\x01\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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\x83\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x87\x00\x86\x00\x1b\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x64\x00\x65\x00\x2a\x00\x48\x00\x48\x00\x48\x00\x49\x00\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\x27\x00\x27\x00\x61\x00\x6d\x00\x67\x00\x65\x00\x61\x00\x72\x00\x64\x00\x6e\x00\x2e\x00\x74\x00\x0a\x00\x4c\x00\x6c\x00\x6c\x00\x4c\x00\x4c\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\x55\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\x6c\x00\x5d\x00\x5e\x00\x5f\x00\x75\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\x0a\x00\x09\x00\x3d\x00\x0d\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x69\x00\x6a\x00\x69\x00\x6a\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x2d\x00\x20\x00\x3d\x00\xff\xff\x20\x00\x4c\x00\x27\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x3d\x00\xff\xff\x3d\x00\x3d\x00\x3e\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x6c\x00\x55\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x2b\x00\x3d\x00\x2d\x00\x2b\x00\x5c\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x75\x00\x26\x00\x3d\x00\xff\xff\x69\x00\x3d\x00\x3d\x00\x2b\x00\x3d\x00\x2d\x00\xff\xff\x70\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3c\x00\x3d\x00\x3d\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\x0a\x00\x22\x00\xff\xff\x0d\x00\xff\xff\x4c\x00\x27\x00\x3d\x00\x3e\x00\xff\xff\x3d\x00\xff\xff\xff\xff\xff\xff\x55\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x4c\x00\x55\x00\xff\xff\x55\x00\xff\xff\x55\x00\x27\x00\x3f\x00\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\x45\x00\x6c\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x75\x00\x6c\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x55\x00\xff\xff\x4c\x00\x6c\x00\x75\x00\x4c\x00\x75\x00\x5c\x00\x75\x00\xff\xff\xff\xff\x4c\x00\x61\x00\x62\x00\x55\x00\x4c\x00\x65\x00\x66\x00\x4c\x00\x4c\x00\x55\x00\x7c\x00\xff\xff\xff\xff\x55\x00\x6e\x00\x55\x00\x55\x00\x55\x00\x72\x00\x5c\x00\x74\x00\x75\x00\x76\x00\x6c\x00\x78\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x75\x00\x69\x00\x6a\x00\x6c\x00\x6c\x00\x6c\x00\x75\x00\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\x75\x00\x75\x00\x75\x00\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\x0a\x00\xff\xff\xff\xff\x0d\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\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\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\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\x4c\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x5c\x00\x55\x00\x55\x00\xff\xff\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\x69\x00\x6a\x00\xff\xff\x6c\x00\x6c\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\x75\x00\x75\x00\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\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\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\x27\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\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\x4c\x00\xff\xff\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x55\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x4c\x00\xff\xff\xff\xff\x4c\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x55\x00\xff\xff\xff\xff\x55\x00\x55\x00\x5c\x00\xff\xff\x6c\x00\x55\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x75\x00\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\x6c\x00\x69\x00\x6a\x00\x6c\x00\x6c\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\x75\x00\xff\xff\xff\xff\x75\x00\x75\x00\xff\xff\xff\xff\xff\xff\x75\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\x0a\x00\xff\xff\xff\xff\x0d\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\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\x27\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\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x09\x00\x0a\x00\xff\xff\x2e\x00\x0d\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\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x20\x00\xff\xff\x22\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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\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\x0a\x00\xff\xff\xff\xff\x0d\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\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\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\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x20\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x5c\x00\x55\x00\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\xff\xff\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\x75\x00\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\x0a\x00\xff\xff\xff\xff\x0d\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\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\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\x09\x00\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x20\x00\xff\xff\x22\x00\xff\xff\xff\xff\x4c\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x5c\x00\x55\x00\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\xff\xff\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\x75\x00\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\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\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\x27\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x55\x00\x46\x00\xff\xff\x66\x00\x55\x00\x5c\x00\xff\xff\x4c\x00\x55\x00\x6c\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\x6c\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\x75\x00\x66\x00\xff\xff\xff\xff\x75\x00\xff\xff\xff\xff\x6c\x00\x75\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\x0a\x00\xff\xff\xff\xff\x0d\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\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\x27\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\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x55\x00\xff\xff\xff\xff\xff\xff\x55\x00\x5c\x00\xff\xff\xff\xff\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\x75\x00\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\x75\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\x0a\x00\xff\xff\xff\xff\x0d\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\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\x27\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\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x55\x00\xff\xff\xff\xff\xff\xff\x55\x00\x5c\x00\xff\xff\xff\xff\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\x75\x00\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\x75\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\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\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\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\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\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\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\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\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\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\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\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\x0a\x00\xff\xff\xff\xff\x0d\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\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\x27\x00\x22\x00\x4c\x00\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x3f\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\x65\x00\x66\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\x72\x00\x75\x00\x74\x00\xff\xff\x76\x00\xff\xff\x78\x00\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x22\x00\xff\xff\xff\xff\xff\xff\x4c\x00\x27\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x55\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\x45\x00\x6c\x00\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x75\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\x74\x00\x75\x00\x76\x00\xff\xff\x78\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\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\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\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\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\x55\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\x22\x00\xff\xff\x3f\x00\xff\xff\xff\xff\x27\x00\xff\xff\x75\x00\x45\x00\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\xff\xff\xff\xff\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\x45\x00\x61\x00\x62\x00\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\x74\x00\x75\x00\x76\x00\x5c\x00\x78\x00\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\x74\x00\xff\xff\x76\x00\xff\xff\x78\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\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\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\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\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x22\x00\xff\xff\x3f\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x45\x00\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\xff\xff\xff\xff\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\x45\x00\x61\x00\x62\x00\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\x74\x00\x75\x00\x76\x00\x5c\x00\x78\x00\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\x74\x00\xff\xff\x76\x00\xff\xff\x78\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\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\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\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\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\x74\x00\xff\xff\x76\x00\xff\xff\x78\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\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\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\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\x74\x00\xff\xff\x76\x00\xff\xff\x78\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\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0a\x00\xff\xff\x2e\x00\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\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x22\x00\x45\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\x65\x00\xff\xff\x45\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\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\x74\x00\x75\x00\x76\x00\xff\xff\x78\x00\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\x0a\x00\xff\xff\xff\xff\x0d\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\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\x27\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\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\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\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\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\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\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\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\xff\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x62\x00\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x6e\x00\xff\xff\xff\xff\xff\xff\x72\x00\xff\xff\x74\x00\x75\x00\x76\x00\xff\xff\x78\x00\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\x0a\x00\xff\xff\x2e\x00\x0d\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\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\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\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\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\x65\x00\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\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\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\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\x24\x00\xff\xff\x22\x00\xff\xff\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\x5c\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\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\x0a\x00\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\x22\x00\xff\xff\x24\x00\xff\xff\x22\x00\x27\x00\xff\xff\xff\xff\xff\xff\x27\x00\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\x5c\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\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\x0a\x00\xff\xff\x2e\x00\x0d\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\x22\x00\x45\x00\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\xff\xff\x58\x00\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x65\x00\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\x45\x00\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\xff\xff\x4c\x00\x78\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5c\x00\xff\xff\x55\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\x65\x00\xff\xff\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x75\x00\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\x0a\x00\xff\xff\xff\xff\x0d\x00\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\x22\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\x6c\x00\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\x75\x00\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\x66\x00\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\x6c\x00\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\x0a\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x22\x00\xff\xff\xff\xff\xff\xff\xff\xff\x27\x00\xff\xff\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\xff\xff\x50\x00\xff\xff\xff\xff\xff\xff\xff\xff\x55\x00\xff\xff\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\x6c\x00\x46\x00\xff\xff\xff\xff\x70\x00\xff\xff\xff\xff\x4c\x00\x5c\x00\x75\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\x66\x00\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\x6c\x00\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\x0a\x00\xff\xff\xff\xff\x0d\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x22\x00\x45\x00\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\xff\xff\xff\xff\x45\x00\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\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\x65\x00\x66\x00\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\x6c\x00\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\x6c\x00\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\x0a\x00\x2e\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\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\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\xff\xff\x65\x00\x66\x00\xff\xff\xff\xff\x69\x00\x6a\x00\xff\xff\x6c\x00\x50\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\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x70\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\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\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\x0a\x00\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\x27\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\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\x0a\x00\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\x27\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\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\x0a\x00\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\x22\x00\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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"#--alex_deflt :: AlexAddr-alex_deflt = AlexA# "\xff\xff\x09\x00\x09\x00\x09\x00\x09\x00\x0a\x00\x0a\x00\x0a\x00\x0a\x00\x09\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\x39\x00\x39\x00\x2f\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3c\x00\xff\xff\x3c\x00\x3c\x00\xff\xff\xff\xff\x3c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x61\x00\x61\x00\xff\xff\x64\x00\x64\x00\x66\x00\x66\x00\xff\xff\x6a\x00\x69\x00\x69\x00\x6a\x00\x6e\x00\x6d\x00\x6d\x00\x6e\x00\x71\x00\x71\x00\x73\x00\x73\x00\x75\x00\x75\x00\x77\x00\x77\x00\x7a\x00\x7a\x00\x7c\x00\x7c\x00\x82\x00\x82\x00\xff\xff\x87\x00\x87\x00\x8a\x00\x8a\x00\xff\xff\x95\x00\x94\x00\x94\x00\x95\x00\x9f\x00\x9e\x00\x9e\x00\x9f\x00\xa4\x00\xa4\x00\xa9\x00\xa9\x00\xaf\x00\xaf\x00\xb5\x00\xb5\x00\xff\xff\xb9\x00\xb9\x00\xbc\x00\xbc\x00\xbd\x00\xff\xff\xff\xff\xbd\x00\xbd\x00\xbf\x00\xff\xff\xff\xff\xbf\x00\xbf\x00\x0c\x00\x0c\x00\x0c\x00\xff\xff\xc0\x00\xc1\x00\xff\xff\xff\xff\xff\xff\xff\xff\xc0\x00\xc1\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xc2\x00\xc3\x00\xc2\x00\xc3\x00\x0a\x00\xff\xff\xff\xff\x0a\x00\x0a\x00\x09\x00\xff\xff\xff\xff\x09\x00\x09\x00\x05\x00\xff\xff\x0c\x00\x05\x00\x05\x00\x05\x00\x01\x00\xff\xff\x0c\x00\x01\x00\x01\x00\x01\x00\xcd\x00\xff\xff\xcd\x00\xcd\x00\xce\x00\xce\x00\xce\x00\xbd\x00\xff\xff\xbf\x00\xc0\x00\xc1\x00\xc2\x00\xc3\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xcd\x00\xce\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\x3c\x00\xff\xff\x3c\x00\xff\xff\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\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_accept = listArray (0::Int,338) [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,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,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,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,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,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),AlexAccSkip,AlexAccSkip,AlexAcc (alex_action_4),AlexAcc (alex_action_4),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_5),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_6),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_7),AlexAcc (alex_action_8),AlexAcc (alex_action_9),AlexAcc (alex_action_10),AlexAcc (alex_action_11),AlexAcc (alex_action_12),AlexAcc (alex_action_13),AlexAcc (alex_action_14),AlexAcc (alex_action_14),AlexAcc (alex_action_14),AlexAcc (alex_action_14),AlexAcc (alex_action_14),AlexAcc (alex_action_14),AlexAcc (alex_action_14),AlexAcc (alex_action_15),AlexAcc (alex_action_15),AlexAcc (alex_action_15),AlexAcc (alex_action_15),AlexAcc (alex_action_16),AlexAcc (alex_action_17),AlexAcc (alex_action_17),AlexAcc (alex_action_18),AlexAcc (alex_action_18),AlexAcc (alex_action_19),AlexAcc (alex_action_20),AlexAcc (alex_action_21),AlexAcc (alex_action_22),AlexAcc (alex_action_23),AlexAcc (alex_action_24),AlexAcc (alex_action_25),AlexAcc (alex_action_26),AlexAcc (alex_action_27),AlexAcc (alex_action_28),AlexAcc (alex_action_29),AlexAcc (alex_action_30),AlexAcc (alex_action_31),AlexAcc (alex_action_32),AlexAcc (alex_action_33),AlexAcc (alex_action_34),AlexAcc (alex_action_35),AlexAcc (alex_action_36),AlexAcc (alex_action_37),AlexAcc (alex_action_38),AlexAcc (alex_action_39),AlexAcc (alex_action_40),AlexAcc (alex_action_41),AlexAcc (alex_action_42),AlexAcc (alex_action_43),AlexAcc (alex_action_44),AlexAcc (alex_action_45),AlexAcc (alex_action_46),AlexAcc (alex_action_47),AlexAcc (alex_action_48),AlexAcc (alex_action_49),AlexAcc (alex_action_50),AlexAcc (alex_action_51),AlexAcc (alex_action_52),AlexAcc (alex_action_53),AlexAcc (alex_action_54),AlexAcc (alex_action_55),AlexAcc (alex_action_56),AlexAcc (alex_action_57),AlexAcc (alex_action_58),AlexAcc (alex_action_59),AlexAcc (alex_action_60),AlexAcc (alex_action_61),AlexAcc (alex_action_62),AlexAcc (alex_action_63),AlexAcc (alex_action_64),AlexAcc (alex_action_65),AlexAcc (alex_action_66),AlexAcc (alex_action_67)]-{-# LINE 257 "src/Language/C/Parser/Lexer.x" #-}---- Fix the 'octal' lexing of '0'-readCOctal :: String -> Either String CInteger-readCOctal s@('0':r) =- case r of- (c:_) | isDigit c -> readCInteger OctalRepr r- _ -> readCInteger DecRepr s-readCOctal _ = error "ReadOctal: string does not start with `0'"---- We use the odd looking list of string patterns here rather than normal--- string literals since GHC converts the latter into a sequence of string--- comparisons (ie a linear search) but it translates the former using its--- effecient pattern matching which gives us the expected radix-style search.--- This change makes a significant performance difference [chak]------ To make this a little more maintainable, we autogenerate it from this list,--- using the script GenerateKeywords.hs (in /scripts)-{--alignas _Alignas, alignof _Alignof __alignof alignof __alignof__, asm @__, atomic _Atomic, auto-break, bool _Bool,-case, char, const @__, continue, complex _Complex __complex__-default, do, double,-else, enum, extern,-float, for, goto,-if, inline @__, int, __int128, long, noreturn _Noreturn,-float, for,-generic _Generic, goto,-if, inline @__, int, int128 __int128, long,-noreturn _Noreturn, _Nullable __nullable, _Nonnull __nonnull,-register, restrict @__, return-short, signed @__, sizeof, static, staticAssert _Static_assert, struct, switch,-typedef, typeof @__, thread __thread _Thread_local-union, unsigned, void, volatile @__,-while,-label __label__-(CTokGnuC GnuCAttrTok) __attribute __attribute__-(CTokGnuC GnuCExtTok) __extension__-(CTokGnuC GnuCComplexReal) __real __real__-(CTokGnuC GnuCComplexImag) __imag __imag__-(CTokGnuC GnuCVaArg) __builtin_va_arg-(CTokGnuC GnuCOffsetof) __builtin_offsetof-(CTokGnuC GnuCTyCompat) __builtin_types_compatible_p--}--- Tokens: _Alignas _Alignof __alignof alignof __alignof__ __asm asm __asm__ _Atomic auto break _Bool case char __const const __const__ continue _Complex __complex__ default do double else enum extern float for _Generic goto if __inline inline __inline__ int __int128 long _Noreturn _Nullable __nullable _Nonnull __nonnull register __restrict restrict __restrict__ return short __signed signed __signed__ sizeof static _Static_assert struct switch typedef __typeof typeof __typeof__ __thread _Thread_local union unsigned void __volatile volatile __volatile__ while __label__ __attribute __attribute__ __extension__ __real __real__ __imag __imag__ __builtin_va_arg __builtin_offsetof __builtin_types_compatible_p-idkwtok ('_' : 'A' : 'l' : 'i' : 'g' : 'n' : 'a' : 's' : []) = tok 8 CTokAlignas-idkwtok ('_' : 'A' : 'l' : 'i' : 'g' : 'n' : 'o' : 'f' : []) = tok 8 CTokAlignof-idkwtok ('_' : 'A' : 't' : 'o' : 'm' : 'i' : 'c' : []) = tok 7 CTokAtomic-idkwtok ('_' : 'B' : 'o' : 'o' : 'l' : []) = tok 5 CTokBool-idkwtok ('_' : 'C' : 'o' : 'm' : 'p' : 'l' : 'e' : 'x' : []) = tok 8 CTokComplex-idkwtok ('_' : 'N' : 'o' : 'n' : 'n' : 'u' : 'l' : 'l' : []) = tok 8 CTokNonnull-idkwtok ('_' : 'G' : 'e' : 'n' : 'e' : 'r' : 'i' : 'c' : []) = tok 8 CTokGeneric-idkwtok ('_' : 'N' : 'o' : 'r' : 'e' : 't' : 'u' : 'r' : 'n' : []) = tok 9 CTokNoreturn-idkwtok ('_' : 'N' : 'u' : 'l' : 'l' : 'a' : 'b' : 'l' : 'e' : []) = tok 9 CTokNullable-idkwtok ('_' : 'S' : 't' : 'a' : 't' : 'i' : 'c' : '_' : 'a' : 's' : 's' : 'e' : 'r' : 't' : []) = tok 14 CTokStaticAssert-idkwtok ('_' : 'T' : 'h' : 'r' : 'e' : 'a' : 'd' : '_' : 'l' : 'o' : 'c' : 'a' : 'l' : []) = tok 13 CTokThread-idkwtok ('_' : '_' : 'a' : 'l' : 'i' : 'g' : 'n' : 'o' : 'f' : []) = tok 9 CTokAlignof-idkwtok ('a' : 'l' : 'i' : 'g' : 'n' : 'o' : 'f' : []) = tok 7 CTokAlignof-idkwtok ('_' : '_' : 'a' : 'l' : 'i' : 'g' : 'n' : 'o' : 'f' : '_' : '_' : []) = tok 11 CTokAlignof-idkwtok ('_' : '_' : 'a' : 's' : 'm' : []) = tok 5 CTokAsm-idkwtok ('a' : 's' : 'm' : []) = tok 3 CTokAsm-idkwtok ('_' : '_' : 'a' : 's' : 'm' : '_' : '_' : []) = tok 7 CTokAsm-idkwtok ('_' : '_' : 'a' : 't' : 't' : 'r' : 'i' : 'b' : 'u' : 't' : 'e' : []) = tok 11 (CTokGnuC GnuCAttrTok)-idkwtok ('_' : '_' : 'a' : 't' : 't' : 'r' : 'i' : 'b' : 'u' : 't' : 'e' : '_' : '_' : []) = tok 13 (CTokGnuC GnuCAttrTok)-idkwtok ('a' : 'u' : 't' : 'o' : []) = tok 4 CTokAuto-idkwtok ('b' : 'r' : 'e' : 'a' : 'k' : []) = tok 5 CTokBreak-idkwtok ('_' : '_' : 'b' : 'u' : 'i' : 'l' : 't' : 'i' : 'n' : '_' : 'o' : 'f' : 'f' : 's' : 'e' : 't' : 'o' : 'f' : []) = tok 18 (CTokGnuC GnuCOffsetof)-idkwtok ('_' : '_' : 'b' : 'u' : 'i' : 'l' : 't' : 'i' : 'n' : '_' : 't' : 'y' : 'p' : 'e' : 's' : '_' : 'c' : 'o' : 'm' : 'p' : 'a' : 't' : 'i' : 'b' : 'l' : 'e' : '_' : 'p' : []) = tok 28 (CTokGnuC GnuCTyCompat)-idkwtok ('_' : '_' : 'b' : 'u' : 'i' : 'l' : 't' : 'i' : 'n' : '_' : 'v' : 'a' : '_' : 'a' : 'r' : 'g' : []) = tok 16 (CTokGnuC GnuCVaArg)-idkwtok ('c' : 'a' : 's' : 'e' : []) = tok 4 CTokCase-idkwtok ('c' : 'h' : 'a' : 'r' : []) = tok 4 CTokChar-idkwtok ('_' : '_' : 'c' : 'o' : 'm' : 'p' : 'l' : 'e' : 'x' : '_' : '_' : []) = tok 11 CTokComplex-idkwtok ('_' : '_' : 'c' : 'o' : 'n' : 's' : 't' : []) = tok 7 CTokConst-idkwtok ('c' : 'o' : 'n' : 's' : 't' : []) = tok 5 CTokConst-idkwtok ('_' : '_' : 'c' : 'o' : 'n' : 's' : 't' : '_' : '_' : []) = tok 9 CTokConst-idkwtok ('c' : 'o' : 'n' : 't' : 'i' : 'n' : 'u' : 'e' : []) = tok 8 CTokContinue-idkwtok ('d' : 'e' : 'f' : 'a' : 'u' : 'l' : 't' : []) = tok 7 CTokDefault-idkwtok ('d' : 'o' : []) = tok 2 CTokDo-idkwtok ('d' : 'o' : 'u' : 'b' : 'l' : 'e' : []) = tok 6 CTokDouble-idkwtok ('e' : 'l' : 's' : 'e' : []) = tok 4 CTokElse-idkwtok ('e' : 'n' : 'u' : 'm' : []) = tok 4 CTokEnum-idkwtok ('_' : '_' : 'e' : 'x' : 't' : 'e' : 'n' : 's' : 'i' : 'o' : 'n' : '_' : '_' : []) = tok 13 (CTokGnuC GnuCExtTok)-idkwtok ('e' : 'x' : 't' : 'e' : 'r' : 'n' : []) = tok 6 CTokExtern-idkwtok ('f' : 'l' : 'o' : 'a' : 't' : []) = tok 5 CTokFloat-idkwtok ('f' : 'o' : 'r' : []) = tok 3 CTokFor-idkwtok ('g' : 'o' : 't' : 'o' : []) = tok 4 CTokGoto-idkwtok ('i' : 'f' : []) = tok 2 CTokIf-idkwtok ('_' : '_' : 'i' : 'm' : 'a' : 'g' : []) = tok 6 (CTokGnuC GnuCComplexImag)-idkwtok ('_' : '_' : 'i' : 'm' : 'a' : 'g' : '_' : '_' : []) = tok 8 (CTokGnuC GnuCComplexImag)-idkwtok ('_' : '_' : 'i' : 'n' : 'l' : 'i' : 'n' : 'e' : []) = tok 8 CTokInline-idkwtok ('i' : 'n' : 'l' : 'i' : 'n' : 'e' : []) = tok 6 CTokInline-idkwtok ('_' : '_' : 'i' : 'n' : 'l' : 'i' : 'n' : 'e' : '_' : '_' : []) = tok 10 CTokInline-idkwtok ('i' : 'n' : 't' : []) = tok 3 CTokInt-idkwtok ('_' : '_' : 'i' : 'n' : 't' : '1' : '2' : '8' : []) = tok 8 CTokInt128-idkwtok ('_' : '_' : 'l' : 'a' : 'b' : 'e' : 'l' : '_' : '_' : []) = tok 9 CTokLabel-idkwtok ('l' : 'o' : 'n' : 'g' : []) = tok 4 CTokLong-idkwtok ('_' : '_' : 'n' : 'o' : 'n' : 'n' : 'u' : 'l' : 'l' : []) = tok 9 CTokNonnull-idkwtok ('_' : '_' : 'n' : 'u' : 'l' : 'l' : 'a' : 'b' : 'l' : 'e' : []) = tok 10 CTokNullable-idkwtok ('_' : '_' : 'r' : 'e' : 'a' : 'l' : []) = tok 6 (CTokGnuC GnuCComplexReal)-idkwtok ('_' : '_' : 'r' : 'e' : 'a' : 'l' : '_' : '_' : []) = tok 8 (CTokGnuC GnuCComplexReal)-idkwtok ('r' : 'e' : 'g' : 'i' : 's' : 't' : 'e' : 'r' : []) = tok 8 CTokRegister-idkwtok ('_' : '_' : 'r' : 'e' : 's' : 't' : 'r' : 'i' : 'c' : 't' : []) = tok 10 CTokRestrict-idkwtok ('r' : 'e' : 's' : 't' : 'r' : 'i' : 'c' : 't' : []) = tok 8 CTokRestrict-idkwtok ('_' : '_' : 'r' : 'e' : 's' : 't' : 'r' : 'i' : 'c' : 't' : '_' : '_' : []) = tok 12 CTokRestrict-idkwtok ('r' : 'e' : 't' : 'u' : 'r' : 'n' : []) = tok 6 CTokReturn-idkwtok ('s' : 'h' : 'o' : 'r' : 't' : []) = tok 5 CTokShort-idkwtok ('_' : '_' : 's' : 'i' : 'g' : 'n' : 'e' : 'd' : []) = tok 8 CTokSigned-idkwtok ('s' : 'i' : 'g' : 'n' : 'e' : 'd' : []) = tok 6 CTokSigned-idkwtok ('_' : '_' : 's' : 'i' : 'g' : 'n' : 'e' : 'd' : '_' : '_' : []) = tok 10 CTokSigned-idkwtok ('s' : 'i' : 'z' : 'e' : 'o' : 'f' : []) = tok 6 CTokSizeof-idkwtok ('s' : 't' : 'a' : 't' : 'i' : 'c' : []) = tok 6 CTokStatic-idkwtok ('s' : 't' : 'r' : 'u' : 'c' : 't' : []) = tok 6 CTokStruct-idkwtok ('s' : 'w' : 'i' : 't' : 'c' : 'h' : []) = tok 6 CTokSwitch-idkwtok ('_' : '_' : 't' : 'h' : 'r' : 'e' : 'a' : 'd' : []) = tok 8 CTokThread-idkwtok ('t' : 'y' : 'p' : 'e' : 'd' : 'e' : 'f' : []) = tok 7 CTokTypedef-idkwtok ('_' : '_' : 't' : 'y' : 'p' : 'e' : 'o' : 'f' : []) = tok 8 CTokTypeof-idkwtok ('t' : 'y' : 'p' : 'e' : 'o' : 'f' : []) = tok 6 CTokTypeof-idkwtok ('_' : '_' : 't' : 'y' : 'p' : 'e' : 'o' : 'f' : '_' : '_' : []) = tok 10 CTokTypeof-idkwtok ('u' : 'n' : 'i' : 'o' : 'n' : []) = tok 5 CTokUnion-idkwtok ('u' : 'n' : 's' : 'i' : 'g' : 'n' : 'e' : 'd' : []) = tok 8 CTokUnsigned-idkwtok ('v' : 'o' : 'i' : 'd' : []) = tok 4 CTokVoid-idkwtok ('_' : '_' : 'v' : 'o' : 'l' : 'a' : 't' : 'i' : 'l' : 'e' : []) = tok 10 CTokVolatile-idkwtok ('v' : 'o' : 'l' : 'a' : 't' : 'i' : 'l' : 'e' : []) = tok 8 CTokVolatile-idkwtok ('_' : '_' : 'v' : 'o' : 'l' : 'a' : 't' : 'i' : 'l' : 'e' : '_' : '_' : []) = tok 12 CTokVolatile-idkwtok ('w' : 'h' : 'i' : 'l' : 'e' : []) = tok 5 CTokWhile--idkwtok cs = \pos -> do- name <- getNewName- let len = case length cs of l -> l- let ident = mkIdent pos cs name- tyident <- isTypeIdent ident- if tyident- then return (CTokTyIdent (pos,len) ident)- else return (CTokIdent (pos,len) ident)--ignoreAttribute :: P ()-ignoreAttribute = skipTokens (0::Int)- where skipTokens :: Int -> P ()- skipTokens n = do- ntok <- lexToken' False- case ntok of- CTokRParen _ | n == 1 -> return ()- | otherwise -> skipTokens (n-1)- CTokLParen _ -> skipTokens (n+1)- _ -> skipTokens n--tok :: Int -> (PosLength -> CToken) -> Position -> P CToken-tok len tc pos = return (tc (pos,len))--adjustLineDirective :: Int -> String -> Position -> Position-adjustLineDirective pragmaLen str pos =- offs' `seq` fname' `seq` row' `seq` (position offs' fname' row' 1)- where- offs' = (posOffset pos) + pragmaLen- str' = dropWhite . drop 1 $ str- (rowStr, str'') = span isDigit str'- row' = read rowStr- str''' = dropWhite str''- fnameStr = takeWhile (/= '"') . drop 1 $ str'''- fname = posFile pos- fname' | null str''' || head str''' /= '"' = fname- -- try and get more sharing of file name strings- | fnameStr == fname = fname- | otherwise = fnameStr- --- dropWhite = dropWhile (\c -> c == ' ' || c == '\t')---- special utility for the lexer-unescapeMultiChars :: String -> [Char]-unescapeMultiChars cs@(_ : _ : _) = case unescapeChar cs of (c,cs') -> c : unescapeMultiChars cs'-unescapeMultiChars ('\'' : []) = []-unescapeMultiChars _ = error "Unexpected end of multi-char constant"--{-# INLINE token_ #-}--- token that ignores the string-token_ :: Int -> (PosLength -> CToken) -> Position -> Int -> InputStream -> P CToken-token_ len mkTok pos _ _ = return (mkTok (pos,len))--{-# INLINE token_fail #-}--- error token-token_fail :: String -> Position ->- Int -> InputStream -> P CToken-token_fail errmsg pos _ _ = failP pos [ "Lexical Error !", errmsg ]---{-# INLINE token #-}--- token that uses the string-token :: (PosLength -> a -> CToken) -> (String -> a)- -> Position -> Int -> InputStream -> P CToken-token mkTok fromStr pos len str = return (mkTok (pos,len) (fromStr $ takeChars len str))--{-# INLINE token_plus #-}--- token that may fail-token_plus :: (PosLength -> a -> CToken) -> (String -> Either String a)- -> Position -> Int -> InputStream -> P CToken-token_plus mkTok fromStr pos len str =- case fromStr (takeChars len str) of Left err -> failP pos [ "Lexical error ! ", err ]- Right ok -> return $! mkTok (pos,len) ok---- -------------------------------------------------------------------------------- The input type--type AlexInput = (Position, -- current position,- InputStream) -- current input string--alexInputPrevChar :: AlexInput -> Char-alexInputPrevChar _ = error "alexInputPrevChar not used"---- for alex-3.0-alexGetByte :: AlexInput -> Maybe (Word8, AlexInput)-alexGetByte (p,is) | inputStreamEmpty is = Nothing- | otherwise = let (b,s) = takeByte is in- -- this is safe for latin-1, but ugly- let p' = alexMove p (chr (fromIntegral b)) in p' `seq`- Just (b, (p', s))--alexGetChar :: AlexInput -> Maybe (Char,AlexInput)-alexGetChar (p,is) | inputStreamEmpty is = Nothing- | otherwise = let (c,s) = takeChar is in- let p' = alexMove p c in p' `seq`- Just (c, (p', s))--alexMove :: Position -> Char -> Position-alexMove pos ' ' = incPos pos 1-alexMove pos '\n' = retPos pos-alexMove pos '\r' = incOffset pos 1-alexMove pos _ = incPos pos 1--lexicalError :: P a-lexicalError = do- pos <- getPos- (c,_) <- liftM takeChar getInput- failP pos- ["Lexical error !",- "The character " ++ show c ++ " does not fit here."]--parseError :: P a-parseError = do- lastTok <- getLastToken- failP (posOf lastTok)- ["Syntax error !",- "The symbol `" ++ show lastTok ++ "' does not fit here."]---- there is a problem with ignored tokens here (that aren't skipped)--- consider--- 1 > int x;--- 2 > LINE "ex.c" 4--- 4 > int y;--- when we get to LINE, we have [int (1,1),x (1,4)] in the token cache.--- Now we run--- > action (pos 2,0) 14 "LINE \"ex.c\" 3\n"--- which in turn adjusts the position and then calls lexToken again--- we get `int (pos 4,0)', and have [x (1,4), int (4,1) ] in the token cache (fine)--- but then, we again call setLastToken when returning and get [int (4,1),int (4,1)] in the token cache (bad)--- to resolve this, recursive calls invoke lexToken' False.-lexToken :: P CToken-lexToken = lexToken' True--lexToken' :: Bool -> P CToken-lexToken' modifyCache = do- pos <- getPos- inp <- getInput- case alexScan (pos, inp) 0 of- AlexEOF -> do- handleEofToken- return CTokEof- AlexError _inp -> lexicalError- AlexSkip (pos', inp') _len -> do- setPos pos'- setInput inp'- lexToken' modifyCache- AlexToken (pos', inp') len action -> do- setPos pos'- setInput inp'- nextTok <- action pos len inp- when modifyCache $ setLastToken nextTok- return nextTok--lexC :: (CToken -> P a) -> P a-lexC cont = do- nextTok <- lexToken- cont nextTok--alex_action_1 = \pos len str -> setPos (adjustLineDirective len (takeChars len str) pos) >> lexToken' False -alex_action_4 = \pos len str -> idkwtok (takeChars len str) pos -alex_action_5 = token_plus CTokILit readCOctal -alex_action_6 = token_plus CTokILit (readCInteger DecRepr) -alex_action_7 = token_plus CTokILit (readCInteger HexRepr . drop 2) -alex_action_8 = token_fail "Invalid integer constant suffix" -alex_action_9 = token CTokCLit (cChar . fst . unescapeChar . tail) -alex_action_10 = token CTokCLit (cChar_w . fst . unescapeChar . tail . tail) -alex_action_11 = token CTokCLit (flip cChars False . unescapeMultiChars .tail) -alex_action_12 = token CTokCLit (flip cChars True . unescapeMultiChars . tail . tail) -alex_action_13 = token (\pos -> CTokClangC pos . ClangCVersionTok) readClangCVersion -alex_action_14 = token CTokFLit readCFloat -alex_action_15 = token CTokFLit readCFloat -alex_action_16 = token_fail "Hexadecimal floating constant requires an exponent" -alex_action_17 = token CTokSLit (cString . unescapeString . init . tail) -alex_action_18 = token CTokSLit (cString_w . unescapeString . init . tail . tail) -alex_action_19 = token_fail "Universal character names are unsupported" -alex_action_20 = token_fail "Invalid escape sequence" -alex_action_21 = token_fail "Universal character names in string literals are unsupported"-alex_action_22 = token_ 1 CTokLParen -alex_action_23 = token_ 1 CTokRParen -alex_action_24 = token_ 1 CTokLBracket -alex_action_25 = token_ 1 CTokRBracket -alex_action_26 = token_ 2 CTokArrow -alex_action_27 = token_ 1 CTokDot -alex_action_28 = token_ 1 CTokExclam -alex_action_29 = token_ 1 CTokTilde -alex_action_30 = token_ 2 CTokInc -alex_action_31 = token_ 2 CTokDec -alex_action_32 = token_ 1 CTokPlus -alex_action_33 = token_ 1 CTokMinus -alex_action_34 = token_ 1 CTokStar -alex_action_35 = token_ 1 CTokSlash -alex_action_36 = token_ 1 CTokPercent -alex_action_37 = token_ 1 CTokAmper -alex_action_38 = token_ 2 CTokShiftL -alex_action_39 = token_ 2 CTokShiftR -alex_action_40 = token_ 1 CTokLess -alex_action_41 = token_ 2 CTokLessEq -alex_action_42 = token_ 1 CTokHigh -alex_action_43 = token_ 2 CTokHighEq -alex_action_44 = token_ 2 CTokEqual -alex_action_45 = token_ 2 CTokUnequal -alex_action_46 = token_ 1 CTokHat -alex_action_47 = token_ 1 CTokBar -alex_action_48 = token_ 2 CTokAnd -alex_action_49 = token_ 2 CTokOr -alex_action_50 = token_ 1 CTokQuest -alex_action_51 = token_ 1 CTokColon -alex_action_52 = token_ 1 CTokAssign -alex_action_53 = token_ 2 CTokPlusAss -alex_action_54 = token_ 2 CTokMinusAss -alex_action_55 = token_ 2 CTokStarAss -alex_action_56 = token_ 2 CTokSlashAss -alex_action_57 = token_ 2 CTokPercAss -alex_action_58 = token_ 2 CTokAmpAss -alex_action_59 = token_ 2 CTokHatAss -alex_action_60 = token_ 2 CTokBarAss -alex_action_61 = token_ 3 CTokSLAss -alex_action_62 = token_ 3 CTokSRAss -alex_action_63 = token_ 1 CTokComma -alex_action_64 = token_ 1 CTokSemic -alex_action_65 = token_ 1 CTokLBrace -alex_action_66 = token_ 1 CTokRBrace -alex_action_67 = token_ 3 CTokEllipsis -{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "<built-in>" #-}-{-# LINE 1 "<command-line>" #-}-{-# LINE 8 "<command-line>" #-}-# 1 "/usr/include/stdc-predef.h" 1 3 4--# 17 "/usr/include/stdc-predef.h" 3 4--------------------------------------------{-# LINE 8 "<command-line>" #-}-{-# LINE 1 "/usr/lib/ghc-7.10.3/include/ghcversion.h" #-}------------------{-# LINE 8 "<command-line>" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}--- -------------------------------------------------------------------------------- ALEX TEMPLATE------ This code is in the PUBLIC DOMAIN; you may copy it freely and use--- it for any purpose whatsoever.---- -------------------------------------------------------------------------------- INTERNALS and main scanner engine--{-# LINE 21 "templates/GenericTemplate.hs" #-}-------- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.-#if __GLASGOW_HASKELL__ > 706-#define GTE(n,m) (tagToEnum# (n >=# m))-#define EQ(n,m) (tagToEnum# (n ==# m))-#else-#define GTE(n,m) (n >=# m)-#define EQ(n,m) (n ==# m)-#endif-{-# LINE 51 "templates/GenericTemplate.hs" #-}---data AlexAddr = AlexA# Addr#--- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.-#if __GLASGOW_HASKELL__ < 503-uncheckedShiftL# = shiftL#-#endif--{-# INLINE alexIndexInt16OffAddr #-}-alexIndexInt16OffAddr (AlexA# arr) off =-#ifdef WORDS_BIGENDIAN- narrow16Int# i- where- i = word2Int# ((high `uncheckedShiftL#` 8#) `or#` low)- high = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))- low = int2Word# (ord# (indexCharOffAddr# arr off'))- off' = off *# 2#-#else- indexInt16OffAddr# arr off-#endif------{-# INLINE alexIndexInt32OffAddr #-}-alexIndexInt32OffAddr (AlexA# arr) off = -#ifdef WORDS_BIGENDIAN- narrow32Int# i- where- i = word2Int# ((b3 `uncheckedShiftL#` 24#) `or#`- (b2 `uncheckedShiftL#` 16#) `or#`- (b1 `uncheckedShiftL#` 8#) `or#` b0)- b3 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 3#)))- b2 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 2#)))- b1 = int2Word# (ord# (indexCharOffAddr# arr (off' +# 1#)))- b0 = int2Word# (ord# (indexCharOffAddr# arr off'))- off' = off *# 4#-#else- indexInt32OffAddr# arr off-#endif-------#if __GLASGOW_HASKELL__ < 503-quickIndex arr i = arr ! i-#else--- GHC >= 503, unsafeAt is available from Data.Array.Base.-quickIndex = unsafeAt-#endif------- -------------------------------------------------------------------------------- Main lexing routines--data AlexReturn a- = AlexEOF- | AlexError !AlexInput- | AlexSkip !AlexInput !Int- | AlexToken !AlexInput !Int a---- alexScan :: AlexInput -> StartCode -> AlexReturn a-alexScan input (I# (sc))- = alexScanUser undefined input (I# (sc))--alexScanUser user input (I# (sc))- = case alex_scan_tkn user input 0# input sc AlexNone of- (AlexNone, input') ->- case alexGetByte input of- Nothing -> ---- AlexEOF- Just _ ->---- AlexError input'-- (AlexLastSkip input'' len, _) ->---- AlexSkip input'' len-- (AlexLastAcc k input''' len, _) ->---- AlexToken input''' len k----- Push the input through the DFA, remembering the most recent accepting--- state it encountered.--alex_scan_tkn user orig_input len input s last_acc =- input `seq` -- strict in the input- let - new_acc = (check_accs (alex_accept `quickIndex` (I# (s))))- in- new_acc `seq`- case alexGetByte input of- Nothing -> (new_acc, input)- Just (c, new_input) -> ---- case fromIntegral c of { (I# (ord_c)) ->- let- base = alexIndexInt32OffAddr alex_base s- offset = (base +# ord_c)- check = alexIndexInt16OffAddr alex_check offset- - new_s = if GTE(offset,0#) && EQ(check,ord_c)- then alexIndexInt16OffAddr alex_table offset- else alexIndexInt16OffAddr alex_deflt s- in- case new_s of- -1# -> (new_acc, input)- -- on an error, we want to keep the input *before* the- -- character that failed, not after.- _ -> alex_scan_tkn user orig_input (if c < 0x80 || c >= 0xC0 then (len +# 1#) else len)- -- note that the length is increased ONLY if this is the 1st byte in a char encoding)- new_input new_s new_acc- }- where- check_accs (AlexAccNone) = last_acc- check_accs (AlexAcc a ) = AlexLastAcc a input (I# (len))- check_accs (AlexAccSkip) = AlexLastSkip input (I# (len))-{-# LINE 198 "templates/GenericTemplate.hs" #-}--data AlexLastAcc a- = AlexNone- | AlexLastAcc a !AlexInput !Int- | AlexLastSkip !AlexInput !Int--instance Functor AlexLastAcc where- fmap _ AlexNone = AlexNone- fmap f (AlexLastAcc x y z) = AlexLastAcc (f x) y z- fmap _ (AlexLastSkip x y) = AlexLastSkip x y--data AlexAcc a user- = AlexAccNone- | AlexAcc a- | AlexAccSkip
− dist/build/Language/C/Parser/Parser.hs
@@ -1,6676 +0,0 @@-{-# OPTIONS_GHC -w #-}-{-# OPTIONS -fglasgow-exts -cpp #-}-module Language.C.Parser.Parser (- -- * Parse a C translation unit- parseC,- -- * Exposed Parsers- translUnitP, extDeclP, statementP, expressionP-) where---- Relevant C99 sections:------ 6.5 Expressions .1 - .17 and 6.6 (almost literally)--- Supported GNU extensions:--- - Allow a compound statement as an expression--- - Various __builtin_* forms that take type parameters--- - `alignof' expression or type--- - `__extension__' to suppress warnings about extensions--- - Allow taking address of a label with: && label--- - Omitting the `then' part of conditional expressions--- - complex numbers------ 6.7 C Declarations .1 -.8--- Supported GNU extensions:--- - '__thread' thread local storage (6.7.1)------ 6.8 Statements .1 - .8--- Supported GNU extensions:--- - case ranges (C99 6.8.1)--- - '__label__ ident;' declarations (C99 6.8.2)--- - computed gotos (C99 6.8.6)------ 6.9 Translation unit--- Supported GNU extensions:--- - allow empty translation_unit--- - allow redundant ';'--- - allow extension keyword before external declaration--- - asm definitions------ Since some of the grammar productions are quite difficult to read,--- (especially those involved with the decleration syntax) we document them--- with an extended syntax that allows a more consise representation:------ Ordinary rules------ foo named terminal or non-terminal------ 'c' terminal, literal character token------ A B concatenation------ A | B alternation------ (A) grouping------ Extended rules------ A? optional, short hand for (A|) or [A]{ 0==A || 1==A }------ ... stands for some part of the grammar omitted for clarity------ {A} represents sequences, 0 or more.------ <permute> modifier which states that any permutation of the immediate subterms is valid---------- TODO ---------------------------------------------------------------------------- !* We ignore C11 _Atomic type annotations--- !* We ignore the C99 static keyword (see C99 6.7.5.3)--- !* We do not distinguish in the AST between incomplete array types and--- complete variable length arrays ([ '*' ] means the latter). (see C99 6.7.5.2)--- !* The AST doesn't allow recording __attribute__ of unnamed struct field--- (see , struct_default_declaring_list, struct_identifier_declarator)--- !* see `We're being far to liberal here' (... struct definition within structs)--- * Documentation isn't complete and consistent yet.--import Prelude hiding (reverse)-import qualified Data.List as List-import Control.Monad (mplus)-import Language.C.Parser.Builtin (builtinTypeNames)-import Language.C.Parser.Lexer (lexC, parseError)-import Language.C.Parser.Tokens (CToken(..), GnuCTok(..), ClangCTok (..), posLenOfTok)-import Language.C.Parser.ParserMonad (P, failP, execParser, getNewName, addTypedef, shadowTypedef, getCurrentPosition,- enterScope, leaveScope, getLastToken, getSavedToken, ParseError(..))--import Language.C.Data.RList-import Language.C.Data.InputStream-import Language.C.Data.Ident-import Language.C.Data.Name-import Language.C.Data.Node-import Language.C.Data.Position-import Language.C.Syntax-import qualified Data.Array as Happy_Data_Array-import qualified GHC.Exts as Happy_GHC_Exts-import Control.Applicative(Applicative(..))---- parser produced by Happy Version 1.19.4--newtype HappyAbsSyn = HappyAbsSyn HappyAny-#if __GLASGOW_HASKELL__ >= 607-type HappyAny = Happy_GHC_Exts.Any-#else-type HappyAny = forall a . a-#endif-happyIn7 :: (CTranslUnit) -> (HappyAbsSyn )-happyIn7 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn7 #-}-happyOut7 :: (HappyAbsSyn ) -> (CTranslUnit)-happyOut7 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut7 #-}-happyIn8 :: (Reversed [CExtDecl]) -> (HappyAbsSyn )-happyIn8 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn8 #-}-happyOut8 :: (HappyAbsSyn ) -> (Reversed [CExtDecl])-happyOut8 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut8 #-}-happyIn9 :: (CExtDecl) -> (HappyAbsSyn )-happyIn9 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn9 #-}-happyOut9 :: (HappyAbsSyn ) -> (CExtDecl)-happyOut9 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut9 #-}-happyIn10 :: (CFunDef) -> (HappyAbsSyn )-happyIn10 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn10 #-}-happyOut10 :: (HappyAbsSyn ) -> (CFunDef)-happyOut10 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut10 #-}-happyIn11 :: (CDeclr) -> (HappyAbsSyn )-happyIn11 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn11 #-}-happyOut11 :: (HappyAbsSyn ) -> (CDeclr)-happyOut11 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut11 #-}-happyIn12 :: (CStat) -> (HappyAbsSyn )-happyIn12 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn12 #-}-happyOut12 :: (HappyAbsSyn ) -> (CStat)-happyOut12 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut12 #-}-happyIn13 :: (CStat) -> (HappyAbsSyn )-happyIn13 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn13 #-}-happyOut13 :: (HappyAbsSyn ) -> (CStat)-happyOut13 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut13 #-}-happyIn14 :: (CStat) -> (HappyAbsSyn )-happyIn14 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn14 #-}-happyOut14 :: (HappyAbsSyn ) -> (CStat)-happyOut14 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut14 #-}-happyIn15 :: (()) -> (HappyAbsSyn )-happyIn15 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn15 #-}-happyOut15 :: (HappyAbsSyn ) -> (())-happyOut15 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut15 #-}-happyIn16 :: (()) -> (HappyAbsSyn )-happyIn16 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn16 #-}-happyOut16 :: (HappyAbsSyn ) -> (())-happyOut16 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut16 #-}-happyIn17 :: (Reversed [CBlockItem]) -> (HappyAbsSyn )-happyIn17 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn17 #-}-happyOut17 :: (HappyAbsSyn ) -> (Reversed [CBlockItem])-happyOut17 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut17 #-}-happyIn18 :: (CBlockItem) -> (HappyAbsSyn )-happyIn18 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn18 #-}-happyOut18 :: (HappyAbsSyn ) -> (CBlockItem)-happyOut18 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut18 #-}-happyIn19 :: (CBlockItem) -> (HappyAbsSyn )-happyIn19 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn19 #-}-happyOut19 :: (HappyAbsSyn ) -> (CBlockItem)-happyOut19 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut19 #-}-happyIn20 :: (CFunDef) -> (HappyAbsSyn )-happyIn20 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn20 #-}-happyOut20 :: (HappyAbsSyn ) -> (CFunDef)-happyOut20 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut20 #-}-happyIn21 :: (Reversed [Ident]) -> (HappyAbsSyn )-happyIn21 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn21 #-}-happyOut21 :: (HappyAbsSyn ) -> (Reversed [Ident])-happyOut21 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut21 #-}-happyIn22 :: (CStat) -> (HappyAbsSyn )-happyIn22 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn22 #-}-happyOut22 :: (HappyAbsSyn ) -> (CStat)-happyOut22 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut22 #-}-happyIn23 :: (CStat) -> (HappyAbsSyn )-happyIn23 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn23 #-}-happyOut23 :: (HappyAbsSyn ) -> (CStat)-happyOut23 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut23 #-}-happyIn24 :: (CStat) -> (HappyAbsSyn )-happyIn24 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn24 #-}-happyOut24 :: (HappyAbsSyn ) -> (CStat)-happyOut24 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut24 #-}-happyIn25 :: (CStat) -> (HappyAbsSyn )-happyIn25 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn25 #-}-happyOut25 :: (HappyAbsSyn ) -> (CStat)-happyOut25 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut25 #-}-happyIn26 :: (CAsmStmt) -> (HappyAbsSyn )-happyIn26 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn26 #-}-happyOut26 :: (HappyAbsSyn ) -> (CAsmStmt)-happyOut26 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut26 #-}-happyIn27 :: (Maybe CTypeQual) -> (HappyAbsSyn )-happyIn27 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn27 #-}-happyOut27 :: (HappyAbsSyn ) -> (Maybe CTypeQual)-happyOut27 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut27 #-}-happyIn28 :: ([CAsmOperand]) -> (HappyAbsSyn )-happyIn28 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn28 #-}-happyOut28 :: (HappyAbsSyn ) -> ([CAsmOperand])-happyOut28 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut28 #-}-happyIn29 :: (Reversed [CAsmOperand]) -> (HappyAbsSyn )-happyIn29 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn29 #-}-happyOut29 :: (HappyAbsSyn ) -> (Reversed [CAsmOperand])-happyOut29 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut29 #-}-happyIn30 :: (CAsmOperand) -> (HappyAbsSyn )-happyIn30 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn30 #-}-happyOut30 :: (HappyAbsSyn ) -> (CAsmOperand)-happyOut30 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut30 #-}-happyIn31 :: (Reversed [CStrLit]) -> (HappyAbsSyn )-happyIn31 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn31 #-}-happyOut31 :: (HappyAbsSyn ) -> (Reversed [CStrLit])-happyOut31 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut31 #-}-happyIn32 :: (CDecl) -> (HappyAbsSyn )-happyIn32 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn32 #-}-happyOut32 :: (HappyAbsSyn ) -> (CDecl)-happyOut32 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut32 #-}-happyIn33 :: (Reversed [CDecl]) -> (HappyAbsSyn )-happyIn33 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn33 #-}-happyOut33 :: (HappyAbsSyn ) -> (Reversed [CDecl])-happyOut33 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut33 #-}-happyIn34 :: (CDecl) -> (HappyAbsSyn )-happyIn34 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn34 #-}-happyOut34 :: (HappyAbsSyn ) -> (CDecl)-happyOut34 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut34 #-}-happyIn35 :: ((Maybe CStrLit, [CAttr])) -> (HappyAbsSyn )-happyIn35 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn35 #-}-happyOut35 :: (HappyAbsSyn ) -> ((Maybe CStrLit, [CAttr]))-happyOut35 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut35 #-}-happyIn36 :: (CDecl) -> (HappyAbsSyn )-happyIn36 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn36 #-}-happyOut36 :: (HappyAbsSyn ) -> (CDecl)-happyOut36 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut36 #-}-happyIn37 :: ([CDeclSpec]) -> (HappyAbsSyn )-happyIn37 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn37 #-}-happyOut37 :: (HappyAbsSyn ) -> ([CDeclSpec])-happyOut37 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut37 #-}-happyIn38 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn )-happyIn38 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn38 #-}-happyOut38 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec])-happyOut38 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut38 #-}-happyIn39 :: (CDeclSpec) -> (HappyAbsSyn )-happyIn39 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn39 #-}-happyOut39 :: (HappyAbsSyn ) -> (CDeclSpec)-happyOut39 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut39 #-}-happyIn40 :: (CDeclSpec) -> (HappyAbsSyn )-happyIn40 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn40 #-}-happyOut40 :: (HappyAbsSyn ) -> (CDeclSpec)-happyOut40 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut40 #-}-happyIn41 :: (CStorageSpec) -> (HappyAbsSyn )-happyIn41 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn41 #-}-happyOut41 :: (HappyAbsSyn ) -> (CStorageSpec)-happyOut41 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut41 #-}-happyIn42 :: (CFunSpec) -> (HappyAbsSyn )-happyIn42 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn42 #-}-happyOut42 :: (HappyAbsSyn ) -> (CFunSpec)-happyOut42 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut42 #-}-happyIn43 :: (CAlignSpec) -> (HappyAbsSyn )-happyIn43 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn43 #-}-happyOut43 :: (HappyAbsSyn ) -> (CAlignSpec)-happyOut43 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut43 #-}-happyIn44 :: ([CDeclSpec]) -> (HappyAbsSyn )-happyIn44 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn44 #-}-happyOut44 :: (HappyAbsSyn ) -> ([CDeclSpec])-happyOut44 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut44 #-}-happyIn45 :: (CTypeSpec) -> (HappyAbsSyn )-happyIn45 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn45 #-}-happyOut45 :: (HappyAbsSyn ) -> (CTypeSpec)-happyOut45 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut45 #-}-happyIn46 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn )-happyIn46 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn46 #-}-happyOut46 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec])-happyOut46 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut46 #-}-happyIn47 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn )-happyIn47 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn47 #-}-happyOut47 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec])-happyOut47 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut47 #-}-happyIn48 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn )-happyIn48 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn48 #-}-happyOut48 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec])-happyOut48 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut48 #-}-happyIn49 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn )-happyIn49 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn49 #-}-happyOut49 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec])-happyOut49 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut49 #-}-happyIn50 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn )-happyIn50 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn50 #-}-happyOut50 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec])-happyOut50 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut50 #-}-happyIn51 :: (Reversed [CDeclSpec]) -> (HappyAbsSyn )-happyIn51 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn51 #-}-happyOut51 :: (HappyAbsSyn ) -> (Reversed [CDeclSpec])-happyOut51 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut51 #-}-happyIn52 :: (CTypeSpec) -> (HappyAbsSyn )-happyIn52 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn52 #-}-happyOut52 :: (HappyAbsSyn ) -> (CTypeSpec)-happyOut52 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut52 #-}-happyIn53 :: (CStructUnion) -> (HappyAbsSyn )-happyIn53 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn53 #-}-happyOut53 :: (HappyAbsSyn ) -> (CStructUnion)-happyOut53 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut53 #-}-happyIn54 :: (Located CStructTag) -> (HappyAbsSyn )-happyIn54 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn54 #-}-happyOut54 :: (HappyAbsSyn ) -> (Located CStructTag)-happyOut54 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut54 #-}-happyIn55 :: (Reversed [CDecl]) -> (HappyAbsSyn )-happyIn55 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn55 #-}-happyOut55 :: (HappyAbsSyn ) -> (Reversed [CDecl])-happyOut55 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut55 #-}-happyIn56 :: (CDecl) -> (HappyAbsSyn )-happyIn56 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn56 #-}-happyOut56 :: (HappyAbsSyn ) -> (CDecl)-happyOut56 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut56 #-}-happyIn57 :: (CDecl) -> (HappyAbsSyn )-happyIn57 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn57 #-}-happyOut57 :: (HappyAbsSyn ) -> (CDecl)-happyOut57 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut57 #-}-happyIn58 :: (CDecl) -> (HappyAbsSyn )-happyIn58 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn58 #-}-happyOut58 :: (HappyAbsSyn ) -> (CDecl)-happyOut58 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut58 #-}-happyIn59 :: ((Maybe CDeclr, Maybe CExpr)) -> (HappyAbsSyn )-happyIn59 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn59 #-}-happyOut59 :: (HappyAbsSyn ) -> ((Maybe CDeclr, Maybe CExpr))-happyOut59 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut59 #-}-happyIn60 :: ((Maybe CDeclr, Maybe CExpr)) -> (HappyAbsSyn )-happyIn60 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn60 #-}-happyOut60 :: (HappyAbsSyn ) -> ((Maybe CDeclr, Maybe CExpr))-happyOut60 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut60 #-}-happyIn61 :: (CEnum) -> (HappyAbsSyn )-happyIn61 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn61 #-}-happyOut61 :: (HappyAbsSyn ) -> (CEnum)-happyOut61 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut61 #-}-happyIn62 :: (Reversed [(Ident, Maybe CExpr)]) -> (HappyAbsSyn )-happyIn62 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn62 #-}-happyOut62 :: (HappyAbsSyn ) -> (Reversed [(Ident, Maybe CExpr)])-happyOut62 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut62 #-}-happyIn63 :: ((Ident, Maybe CExpr)) -> (HappyAbsSyn )-happyIn63 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn63 #-}-happyOut63 :: (HappyAbsSyn ) -> ((Ident, Maybe CExpr))-happyOut63 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut63 #-}-happyIn64 :: (CTypeQual) -> (HappyAbsSyn )-happyIn64 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn64 #-}-happyOut64 :: (HappyAbsSyn ) -> (CTypeQual)-happyOut64 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut64 #-}-happyIn65 :: (Reversed [CTypeQual]) -> (HappyAbsSyn )-happyIn65 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn65 #-}-happyOut65 :: (HappyAbsSyn ) -> (Reversed [CTypeQual])-happyOut65 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut65 #-}-happyIn66 :: (CDeclrR) -> (HappyAbsSyn )-happyIn66 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn66 #-}-happyOut66 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut66 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut66 #-}-happyIn67 :: (Maybe CStrLit) -> (HappyAbsSyn )-happyIn67 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn67 #-}-happyOut67 :: (HappyAbsSyn ) -> (Maybe CStrLit)-happyOut67 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut67 #-}-happyIn68 :: (CDeclrR) -> (HappyAbsSyn )-happyIn68 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn68 #-}-happyOut68 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut68 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut68 #-}-happyIn69 :: (CDeclrR) -> (HappyAbsSyn )-happyIn69 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn69 #-}-happyOut69 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut69 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut69 #-}-happyIn70 :: (CDeclrR) -> (HappyAbsSyn )-happyIn70 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn70 #-}-happyOut70 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut70 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut70 #-}-happyIn71 :: (CDeclrR) -> (HappyAbsSyn )-happyIn71 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn71 #-}-happyOut71 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut71 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut71 #-}-happyIn72 :: (CDeclrR) -> (HappyAbsSyn )-happyIn72 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn72 #-}-happyOut72 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut72 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut72 #-}-happyIn73 :: (CDeclrR) -> (HappyAbsSyn )-happyIn73 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn73 #-}-happyOut73 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut73 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut73 #-}-happyIn74 :: (CDeclrR) -> (HappyAbsSyn )-happyIn74 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn74 #-}-happyOut74 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut74 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut74 #-}-happyIn75 :: (CDeclrR) -> (HappyAbsSyn )-happyIn75 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn75 #-}-happyOut75 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut75 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut75 #-}-happyIn76 :: (CDeclrR) -> (HappyAbsSyn )-happyIn76 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn76 #-}-happyOut76 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut76 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut76 #-}-happyIn77 :: (CDeclrR) -> (HappyAbsSyn )-happyIn77 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn77 #-}-happyOut77 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut77 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut77 #-}-happyIn78 :: (CDeclrR) -> (HappyAbsSyn )-happyIn78 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn78 #-}-happyOut78 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut78 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut78 #-}-happyIn79 :: (CDeclr) -> (HappyAbsSyn )-happyIn79 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn79 #-}-happyOut79 :: (HappyAbsSyn ) -> (CDeclr)-happyOut79 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut79 #-}-happyIn80 :: (CDeclrR) -> (HappyAbsSyn )-happyIn80 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn80 #-}-happyOut80 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut80 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut80 #-}-happyIn81 :: (CDeclrR) -> (HappyAbsSyn )-happyIn81 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn81 #-}-happyOut81 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut81 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut81 #-}-happyIn82 :: (([CDecl], Bool)) -> (HappyAbsSyn )-happyIn82 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn82 #-}-happyOut82 :: (HappyAbsSyn ) -> (([CDecl], Bool))-happyOut82 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut82 #-}-happyIn83 :: (Reversed [CDecl]) -> (HappyAbsSyn )-happyIn83 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn83 #-}-happyOut83 :: (HappyAbsSyn ) -> (Reversed [CDecl])-happyOut83 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut83 #-}-happyIn84 :: (CDecl) -> (HappyAbsSyn )-happyIn84 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn84 #-}-happyOut84 :: (HappyAbsSyn ) -> (CDecl)-happyOut84 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut84 #-}-happyIn85 :: (Reversed [Ident]) -> (HappyAbsSyn )-happyIn85 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn85 #-}-happyOut85 :: (HappyAbsSyn ) -> (Reversed [Ident])-happyOut85 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut85 #-}-happyIn86 :: (CDecl) -> (HappyAbsSyn )-happyIn86 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn86 #-}-happyOut86 :: (HappyAbsSyn ) -> (CDecl)-happyOut86 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut86 #-}-happyIn87 :: (CDeclrR) -> (HappyAbsSyn )-happyIn87 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn87 #-}-happyOut87 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut87 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut87 #-}-happyIn88 :: (CDeclrR -> CDeclrR) -> (HappyAbsSyn )-happyIn88 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn88 #-}-happyOut88 :: (HappyAbsSyn ) -> (CDeclrR -> CDeclrR)-happyOut88 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut88 #-}-happyIn89 :: (CDeclrR -> CDeclrR) -> (HappyAbsSyn )-happyIn89 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn89 #-}-happyOut89 :: (HappyAbsSyn ) -> (CDeclrR -> CDeclrR)-happyOut89 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut89 #-}-happyIn90 :: (CDeclrR -> CDeclrR) -> (HappyAbsSyn )-happyIn90 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn90 #-}-happyOut90 :: (HappyAbsSyn ) -> (CDeclrR -> CDeclrR)-happyOut90 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut90 #-}-happyIn91 :: (CDeclrR) -> (HappyAbsSyn )-happyIn91 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn91 #-}-happyOut91 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut91 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut91 #-}-happyIn92 :: (CDeclrR) -> (HappyAbsSyn )-happyIn92 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn92 #-}-happyOut92 :: (HappyAbsSyn ) -> (CDeclrR)-happyOut92 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut92 #-}-happyIn93 :: (CInit) -> (HappyAbsSyn )-happyIn93 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn93 #-}-happyOut93 :: (HappyAbsSyn ) -> (CInit)-happyOut93 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut93 #-}-happyIn94 :: (Maybe CInit) -> (HappyAbsSyn )-happyIn94 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn94 #-}-happyOut94 :: (HappyAbsSyn ) -> (Maybe CInit)-happyOut94 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut94 #-}-happyIn95 :: (Reversed CInitList) -> (HappyAbsSyn )-happyIn95 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn95 #-}-happyOut95 :: (HappyAbsSyn ) -> (Reversed CInitList)-happyOut95 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut95 #-}-happyIn96 :: ([CDesignator]) -> (HappyAbsSyn )-happyIn96 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn96 #-}-happyOut96 :: (HappyAbsSyn ) -> ([CDesignator])-happyOut96 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut96 #-}-happyIn97 :: (Reversed [CDesignator]) -> (HappyAbsSyn )-happyIn97 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn97 #-}-happyOut97 :: (HappyAbsSyn ) -> (Reversed [CDesignator])-happyOut97 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut97 #-}-happyIn98 :: (CDesignator) -> (HappyAbsSyn )-happyIn98 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn98 #-}-happyOut98 :: (HappyAbsSyn ) -> (CDesignator)-happyOut98 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut98 #-}-happyIn99 :: (CDesignator) -> (HappyAbsSyn )-happyIn99 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn99 #-}-happyOut99 :: (HappyAbsSyn ) -> (CDesignator)-happyOut99 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut99 #-}-happyIn100 :: (CExpr) -> (HappyAbsSyn )-happyIn100 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn100 #-}-happyOut100 :: (HappyAbsSyn ) -> (CExpr)-happyOut100 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut100 #-}-happyIn101 :: (Reversed [(Maybe CDecl, CExpr)]) -> (HappyAbsSyn )-happyIn101 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn101 #-}-happyOut101 :: (HappyAbsSyn ) -> (Reversed [(Maybe CDecl, CExpr)])-happyOut101 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut101 #-}-happyIn102 :: ((Maybe CDecl, CExpr)) -> (HappyAbsSyn )-happyIn102 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn102 #-}-happyOut102 :: (HappyAbsSyn ) -> ((Maybe CDecl, CExpr))-happyOut102 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut102 #-}-happyIn103 :: (Reversed [CDesignator]) -> (HappyAbsSyn )-happyIn103 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn103 #-}-happyOut103 :: (HappyAbsSyn ) -> (Reversed [CDesignator])-happyOut103 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut103 #-}-happyIn104 :: (CExpr) -> (HappyAbsSyn )-happyIn104 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn104 #-}-happyOut104 :: (HappyAbsSyn ) -> (CExpr)-happyOut104 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut104 #-}-happyIn105 :: (Reversed [CExpr]) -> (HappyAbsSyn )-happyIn105 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn105 #-}-happyOut105 :: (HappyAbsSyn ) -> (Reversed [CExpr])-happyOut105 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut105 #-}-happyIn106 :: (CExpr) -> (HappyAbsSyn )-happyIn106 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn106 #-}-happyOut106 :: (HappyAbsSyn ) -> (CExpr)-happyOut106 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut106 #-}-happyIn107 :: (Located CUnaryOp) -> (HappyAbsSyn )-happyIn107 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn107 #-}-happyOut107 :: (HappyAbsSyn ) -> (Located CUnaryOp)-happyOut107 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut107 #-}-happyIn108 :: (CExpr) -> (HappyAbsSyn )-happyIn108 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn108 #-}-happyOut108 :: (HappyAbsSyn ) -> (CExpr)-happyOut108 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut108 #-}-happyIn109 :: (CExpr) -> (HappyAbsSyn )-happyIn109 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn109 #-}-happyOut109 :: (HappyAbsSyn ) -> (CExpr)-happyOut109 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut109 #-}-happyIn110 :: (CExpr) -> (HappyAbsSyn )-happyIn110 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn110 #-}-happyOut110 :: (HappyAbsSyn ) -> (CExpr)-happyOut110 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut110 #-}-happyIn111 :: (CExpr) -> (HappyAbsSyn )-happyIn111 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn111 #-}-happyOut111 :: (HappyAbsSyn ) -> (CExpr)-happyOut111 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut111 #-}-happyIn112 :: (CExpr) -> (HappyAbsSyn )-happyIn112 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn112 #-}-happyOut112 :: (HappyAbsSyn ) -> (CExpr)-happyOut112 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut112 #-}-happyIn113 :: (CExpr) -> (HappyAbsSyn )-happyIn113 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn113 #-}-happyOut113 :: (HappyAbsSyn ) -> (CExpr)-happyOut113 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut113 #-}-happyIn114 :: (CExpr) -> (HappyAbsSyn )-happyIn114 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn114 #-}-happyOut114 :: (HappyAbsSyn ) -> (CExpr)-happyOut114 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut114 #-}-happyIn115 :: (CExpr) -> (HappyAbsSyn )-happyIn115 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn115 #-}-happyOut115 :: (HappyAbsSyn ) -> (CExpr)-happyOut115 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut115 #-}-happyIn116 :: (CExpr) -> (HappyAbsSyn )-happyIn116 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn116 #-}-happyOut116 :: (HappyAbsSyn ) -> (CExpr)-happyOut116 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut116 #-}-happyIn117 :: (CExpr) -> (HappyAbsSyn )-happyIn117 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn117 #-}-happyOut117 :: (HappyAbsSyn ) -> (CExpr)-happyOut117 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut117 #-}-happyIn118 :: (CExpr) -> (HappyAbsSyn )-happyIn118 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn118 #-}-happyOut118 :: (HappyAbsSyn ) -> (CExpr)-happyOut118 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut118 #-}-happyIn119 :: (CExpr) -> (HappyAbsSyn )-happyIn119 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn119 #-}-happyOut119 :: (HappyAbsSyn ) -> (CExpr)-happyOut119 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut119 #-}-happyIn120 :: (CExpr) -> (HappyAbsSyn )-happyIn120 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn120 #-}-happyOut120 :: (HappyAbsSyn ) -> (CExpr)-happyOut120 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut120 #-}-happyIn121 :: (Located CAssignOp) -> (HappyAbsSyn )-happyIn121 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn121 #-}-happyOut121 :: (HappyAbsSyn ) -> (Located CAssignOp)-happyOut121 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut121 #-}-happyIn122 :: (CExpr) -> (HappyAbsSyn )-happyIn122 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn122 #-}-happyOut122 :: (HappyAbsSyn ) -> (CExpr)-happyOut122 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut122 #-}-happyIn123 :: (Reversed [CExpr]) -> (HappyAbsSyn )-happyIn123 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn123 #-}-happyOut123 :: (HappyAbsSyn ) -> (Reversed [CExpr])-happyOut123 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut123 #-}-happyIn124 :: (Maybe CExpr) -> (HappyAbsSyn )-happyIn124 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn124 #-}-happyOut124 :: (HappyAbsSyn ) -> (Maybe CExpr)-happyOut124 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut124 #-}-happyIn125 :: (Maybe CExpr) -> (HappyAbsSyn )-happyIn125 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn125 #-}-happyOut125 :: (HappyAbsSyn ) -> (Maybe CExpr)-happyOut125 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut125 #-}-happyIn126 :: (CExpr) -> (HappyAbsSyn )-happyIn126 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn126 #-}-happyOut126 :: (HappyAbsSyn ) -> (CExpr)-happyOut126 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut126 #-}-happyIn127 :: (CConst) -> (HappyAbsSyn )-happyIn127 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn127 #-}-happyOut127 :: (HappyAbsSyn ) -> (CConst)-happyOut127 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut127 #-}-happyIn128 :: (CStrLit) -> (HappyAbsSyn )-happyIn128 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn128 #-}-happyOut128 :: (HappyAbsSyn ) -> (CStrLit)-happyOut128 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut128 #-}-happyIn129 :: (Reversed [CString]) -> (HappyAbsSyn )-happyIn129 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn129 #-}-happyOut129 :: (HappyAbsSyn ) -> (Reversed [CString])-happyOut129 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut129 #-}-happyIn130 :: (ClangCVersion) -> (HappyAbsSyn )-happyIn130 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn130 #-}-happyOut130 :: (HappyAbsSyn ) -> (ClangCVersion)-happyOut130 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut130 #-}-happyIn131 :: (Ident) -> (HappyAbsSyn )-happyIn131 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn131 #-}-happyOut131 :: (HappyAbsSyn ) -> (Ident)-happyOut131 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut131 #-}-happyIn132 :: ([CAttr]) -> (HappyAbsSyn )-happyIn132 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn132 #-}-happyOut132 :: (HappyAbsSyn ) -> ([CAttr])-happyOut132 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut132 #-}-happyIn133 :: ([CAttr]) -> (HappyAbsSyn )-happyIn133 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn133 #-}-happyOut133 :: (HappyAbsSyn ) -> ([CAttr])-happyOut133 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut133 #-}-happyIn134 :: ([CAttr]) -> (HappyAbsSyn )-happyIn134 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn134 #-}-happyOut134 :: (HappyAbsSyn ) -> ([CAttr])-happyOut134 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut134 #-}-happyIn135 :: (Reversed [CAttr]) -> (HappyAbsSyn )-happyIn135 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn135 #-}-happyOut135 :: (HappyAbsSyn ) -> (Reversed [CAttr])-happyOut135 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut135 #-}-happyIn136 :: (Maybe CAttr) -> (HappyAbsSyn )-happyIn136 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn136 #-}-happyOut136 :: (HappyAbsSyn ) -> (Maybe CAttr)-happyOut136 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut136 #-}-happyIn137 :: (Reversed [CExpr]) -> (HappyAbsSyn )-happyIn137 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyIn137 #-}-happyOut137 :: (HappyAbsSyn ) -> (Reversed [CExpr])-happyOut137 x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOut137 #-}-happyInTok :: (CToken) -> (HappyAbsSyn )-happyInTok x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyInTok #-}-happyOutTok :: (HappyAbsSyn ) -> (CToken)-happyOutTok x = Happy_GHC_Exts.unsafeCoerce# x-{-# INLINE happyOutTok #-}---happyActOffsets :: HappyAddr-happyActOffsets = HappyA# "\x00\x00\xb6\x0f\x0a\x0a\x79\x0f\x00\x00\x42\x07\x00\x00\x76\x04\xa8\x24\x79\x0f\x00\x00\x7c\x0a\xf9\x04\xaa\x04\xc5\x03\x98\x04\x8f\x08\x85\x08\x82\x08\x7d\x08\x90\x04\x00\x00\x6c\x08\x27\x08\x00\x00\x00\x00\x32\x09\x00\x00\x00\x00\x5e\x0f\x5e\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x45\x04\xf2\x0e\x92\x08\xd7\x0e\x00\x00\x00\x00\x00\x00\x2d\x08\x00\x00\x6b\x0e\x50\x0e\x50\x0e\x8d\x08\x8b\x08\x87\x08\x12\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x58\x08\x59\x08\x00\x00\x00\x00\xf2\x04\x56\x08\xe4\x0d\x51\x08\x55\x08\x0a\x0a\x6d\x08\x25\x00\x6b\x08\xe4\x0d\x6a\x08\x67\x08\x42\x08\x00\x00\xca\x07\x00\x00\x33\x08\x00\x00\x4a\x04\x47\x04\xac\x01\xc6\x12\x00\x00\x00\x00\x00\x00\x00\x00\xac\x01\x00\x00\x2c\x1c\xb3\x1c\x65\x1a\x84\x1a\x8b\x1c\xb0\x1d\x00\x00\x00\x00\xb6\x07\x00\x00\x8e\x12\x00\x00\x00\x00\x00\x00\xda\x00\x00\x00\x00\x00\x00\x00\xf2\x04\xdc\x13\x00\x00\x17\x01\x17\x01\x1a\x08\x0f\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x08\x00\x00\x00\x00\x06\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x08\xb6\x0f\x91\x07\x00\x00\xed\x07\x9e\x09\xe4\x0d\x2f\x02\x96\x07\x8d\x07\x9e\x09\x57\x0f\x00\x00\x00\x00\x09\x01\xe8\x07\x84\x0a\xe2\x07\x09\x01\xb5\x07\x00\x00\x00\x00\x00\x00\xe0\xff\x00\x00\x00\x00\xd7\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x1a\x00\x00\xd4\x07\x00\x00\x1c\x1b\xc5\x0a\x9e\x07\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x00\x00\x56\x12\xc8\x07\x00\x00\xa7\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x07\x8e\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8c\x07\x00\x00\xd2\x00\xc7\x00\xcb\x00\x7e\x07\x00\x00\x00\x00\x00\x00\xe0\xff\x00\x00\x00\x00\x94\x07\x00\x00\x6d\x07\x7d\x07\x00\x00\x2b\x07\x00\x00\x2b\x07\x00\x00\x00\x00\xe4\x0d\xe4\x0d\x00\x00\x67\x07\xe4\x0d\x63\x07\xe4\x0d\x00\x00\x5a\x08\x30\x07\x0a\x0a\x00\x00\x00\x00\x00\x00\xeb\xff\x00\x00\x8b\x07\x00\x00\x3a\x07\x1a\x07\x00\x00\x83\x1e\x83\x1e\xe4\x0d\x00\x00\x32\x09\x00\x00\x00\x00\x1b\x07\x00\x00\x00\x00\x32\x09\xe4\x0d\x00\x00\x32\x09\x00\x00\x00\x00\x00\x00\x7b\x07\xd4\x02\xa5\x1d\xd3\x06\xd3\x06\x14\x14\x79\x07\x78\x07\x59\x1e\xe4\x0d\xe4\x0d\xc9\x0d\xe4\x0d\xe4\x0d\xe4\x0d\xe4\x0d\xe4\x0d\xe4\x0d\xe4\x0d\xe4\x0d\xe4\x0d\xe4\x0d\xe4\x0d\xe4\x0d\xe4\x0d\xe4\x0d\xe4\x0d\xe4\x0d\xe4\x0d\x00\x00\xe4\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x5d\x0d\xe4\x0d\xee\x03\xee\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x74\x07\x5b\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x71\x0a\x71\x0a\x3a\x04\x3a\x04\x24\x04\x24\x04\x24\x04\x24\x04\xc5\x03\xc5\x03\x03\x04\x66\x07\x58\x07\x51\x07\x3b\x07\xe4\x0d\x53\x07\x00\x00\x3f\x07\x00\x00\x42\x0d\x00\x00\x00\x00\x00\x00\x0d\x07\x73\x1d\x41\x1d\x1e\x12\x8e\x0e\x00\x00\x00\x00\x4e\x07\x18\x07\x3e\x07\x00\x00\x2d\x07\x15\x07\x0e\x07\x03\x07\x0a\x0a\xee\x07\xdc\x06\xbd\x06\xc2\x06\x0a\x0a\xe4\x0d\x00\x00\x09\x07\xf5\x1b\xf2\x06\xdb\x06\x00\x00\x0b\x07\x00\x00\x05\x07\x01\x07\xd7\x00\x41\x01\xb1\x1a\xd0\x06\x85\x06\xe6\x06\x00\x00\x9e\x09\xb1\x1a\xca\x06\x00\x00\x00\x00\xc1\x1b\xfb\x14\x00\x00\x00\x00\x8a\x00\x4e\x00\xe0\x06\xdf\x06\xcb\x00\x05\x01\x4e\x00\x00\x00\xb1\x1a\xbf\x06\x00\x00\xb1\x06\x00\x00\x9e\x09\xad\x06\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x00\x00\xc8\x06\x00\x00\xb1\x1a\xa4\x06\x00\x00\x87\x0a\x00\x00\xbe\x06\x03\x0b\x8d\x00\x53\x06\xca\x00\x96\x10\xca\x00\x8b\x1c\xb0\x1d\x5e\x10\xb5\x06\x8c\x06\x00\x00\xc3\x01\x5c\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x41\x01\xe6\x11\x41\x01\xae\x11\xa5\x13\x9e\x09\xb1\x1a\x94\x06\x00\x00\xac\x06\x7a\x0a\xfc\x00\xfc\x00\xcb\x00\x00\x00\xcb\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x3b\x0d\x9a\x06\x92\x06\x7c\x06\x58\x06\xa8\x03\x4b\x06\x70\x06\x6d\x06\xcf\xff\x9d\x01\x00\x00\x00\x00\x69\x06\x00\x00\x00\x00\xf7\x05\xe0\x02\x00\x00\xe7\xff\xa8\x03\x1f\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3b\x0d\x64\x0a\x00\x00\xcb\x00\x00\x00\xd6\x0c\x00\x00\x52\x06\x51\x06\x05\x06\x05\x06\x76\x11\x00\x00\x4a\x00\x12\x00\x05\x06\x00\x00\xd8\x05\xe5\x1a\x00\x00\xd0\x05\x00\x00\x8a\x1b\x53\x1b\x26\x10\xff\x14\xd0\x05\xd0\x05\x00\x00\xee\x0f\x88\x14\xd0\x05\x00\x00\xd0\x05\xd0\x05\x00\x00\xd3\x06\x41\x0b\x2c\x06\x29\x06\x8d\x00\x00\x00\x26\x06\xd1\x05\x49\x0a\x8d\x00\x00\x00\x00\x00\x9e\x09\xb1\x1a\xdc\x05\x00\x00\x13\x06\x0d\x06\x2d\x1a\x00\x00\x00\x00\x00\x00\x5d\x0a\x04\x06\xaa\x00\x0e\x00\x02\x06\xcb\x00\xcb\x00\x46\x0a\x00\x00\x00\x00\x00\x00\xda\x14\x0a\x00\x00\x00\x00\x00\x01\x06\xe9\x05\x9d\x05\x00\x00\x00\x00\x00\x00\xb7\x05\xb7\x05\x0a\x0a\x0a\x0a\x0a\x0a\x00\x00\xe4\x0d\xe4\x0d\xe4\x0d\xca\x05\x00\x00\x4a\x02\x94\x03\xee\x07\x81\x05\x00\x00\xb5\x05\x00\x00\x00\x00\x00\x00\x00\x00\x41\x01\x3e\x11\x41\x01\x06\x11\xbf\x05\xc6\x08\x00\x00\x2f\x1e\x56\x03\x2f\x1e\xa1\x05\xa1\x05\x05\x1e\xa1\x05\x07\x0e\x00\x00\x80\x0d\xc5\x05\xbd\x05\x8c\x00\x6e\x13\x00\x00\x00\x00\x34\x0c\xe4\x0d\x00\x00\xe4\x0d\x00\x00\xe4\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x02\xd6\x0c\x37\x03\x00\x00\x06\x03\x00\x00\xa0\x05\xe4\x0d\x56\x03\x34\x0c\xb9\x05\xa4\x05\x8b\x00\x00\x00\xcb\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd3\x06\x98\x05\x00\x01\x00\x00\x82\x05\x8f\x05\x01\x03\x00\x00\x88\x05\x00\x00\x4b\x05\xce\x10\x4b\x05\x4b\x05\x4b\x05\x00\x00\x87\x03\x52\x05\x00\x00\x4e\x05\x83\x00\x0a\x0a\x74\x05\x48\x05\x43\x05\x20\x05\x00\x00\x00\x00\x33\x05\x33\x05\x4f\x05\x00\x00\x00\x00\x1a\x0a\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb2\x14\xcb\x00\x00\x00\xf8\x19\x39\x01\x00\x00\x72\x03\x3a\x03\x0f\x1d\x49\x14\x00\x00\x00\x00\xd2\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x4a\x05\x41\x05\x3e\x05\x2a\x05\x8d\x00\xda\x04\x00\x00\x24\x05\x00\x00\x00\x00\x1e\x05\xe4\x0d\x00\x00\x00\x00\x00\x00\x68\x14\x4d\x04\x36\x13\x00\x00\x00\x00\xb7\x14\x7c\x09\xfe\x12\x00\x00\x00\x00\x00\x00\x00\x00\xa9\x14\x07\x00\x07\x00\xef\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x68\x02\xe6\xff\xe4\x0d\x6b\x01\x00\x00\x1a\x05\xbb\x0c\x14\x05\xcf\xff\x00\x00\x00\x00\xa8\x24\x00\x00\xde\x00\x00\x00\xe9\x04\x00\x00\x00\x00\x00\x00\xe4\x0d\xd7\xff\x00\x00\x07\x00\xb4\x0c\x0c\x01\x0f\x05\x00\x00\x00\x00\xe4\x0d\x0c\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\x04\xd2\x04\xe4\x0d\x0a\x01\xdd\x1c\x9a\x04\x00\x00\x9a\x04\x00\x00\x9a\x04\xcc\x04\xe4\x0d\x00\x00\x00\x00\x0c\x01\xe7\x09\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x0a\xe4\x0d\xe4\x0d\xc1\x04\x00\x00\x8d\x01\xbb\x04\x00\x00\xdb\x04\xfa\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaf\x04\x00\x00\x00\x00\x00\x00\xe4\x0d\xef\x02\x00\x00\xe4\x0d\x00\x00\x05\x1e\xe4\x0d\x00\x00\x00\x00\xcb\x00\x00\x00\xc2\x01\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x0b\x00\x00\x00\x00\x4f\x0c\x00\x00\x00\x00\xe4\x0d\xad\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc3\x04\x00\x00\xbf\x04\xbd\x04\xe4\x0d\x83\x00\x89\x04\x83\x00\x00\x00\x87\x04\x81\x04\x00\x00\x00\x00\x00\x00\xe4\x0d\x00\x00\x0a\x01\x39\x01\x3e\x04\x00\x00\xe4\x0d\x00\x00\x00\x00\x7d\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x0d\xaa\x07\x00\x00\x00\x00\x00\x00\xa8\x24\x00\x00\x00\x00\x00\x00\x12\x04\x12\x04\x00\x00\x0a\x0a\x0a\x0a\x31\x01\x00\x00\x00\x00\x7b\x04\xfd\x03\xfd\x03\x00\x00\x00\x00\x58\x04\x00\x00\x00\x00\x54\x04\x4e\x04\x00\x00\x1d\x04\xe0\x03\x00\x00\x00\x00\x00\x00\xaa\x07\x00\x00\x00\x00\x00\x00\xd4\x00\x00\x00\x00\x00\xe4\x0d\xe4\x0d\x2f\x04\x1f\x04\xdf\x03\x90\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyGotoOffsets :: HappyAddr-happyGotoOffsets = HappyA# "\x28\x03\x77\x00\xab\x06\x49\x21\xe9\x03\x3b\x00\x00\x00\x00\x00\x76\x03\xe9\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\xbf\x03\x00\x00\x00\x00\x1e\x14\x55\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x6a\x03\xd0\x0e\x00\x00\xbe\x0a\x00\x00\x00\x00\x00\x00\x5c\x03\x00\x00\x8c\x0e\x80\x0a\x73\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\xbc\x03\xfd\xff\x00\x00\x56\x23\x00\x00\x00\x00\x67\x06\x00\x00\x33\x03\x00\x00\xeb\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xbb\x03\x00\x00\x00\x00\x00\x00\x36\x0b\x03\x01\x00\x00\x00\x00\x00\x00\x00\x00\x63\x02\x00\x00\x64\x02\x75\x01\x00\x03\xb7\x01\x8f\x02\x73\x01\x00\x00\x00\x00\x33\x09\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x50\x09\x85\x03\x00\x00\x00\x00\x6f\x03\x30\x01\x00\x00\xcb\x03\x87\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcb\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x6d\x18\x3d\x23\x27\x03\x19\x03\x16\x03\xc8\x18\x60\x03\x00\x00\x00\x00\xeb\x01\x00\x00\xf2\x08\x00\x00\xd4\x01\x86\x03\x00\x00\x00\x00\x00\x00\xc3\x02\x66\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0e\x05\x00\x00\x38\x03\x00\x00\xf3\x15\x7e\x19\x74\x03\x00\x00\x00\x00\x00\x00\x00\x00\xc2\x02\x3d\x03\xd6\x00\x00\x00\x00\x00\xbf\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\x2d\x03\xad\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x03\xd8\x19\xd2\x0e\x0b\x08\x29\x03\x00\x00\x00\x00\x00\x00\xab\x02\xee\x02\x00\x00\x00\x00\x00\x00\xff\x02\xa9\x02\xc8\x02\x69\x07\x00\x00\x57\x07\x00\x00\x00\x00\x30\x21\x17\x21\x00\x00\x00\x00\xfe\x20\x00\x00\xe5\x20\x00\x00\xf7\x06\x00\x00\x3c\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2a\x00\x45\x07\x00\x00\x38\x19\x25\x19\x24\x23\x00\x00\x64\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x09\x03\x0b\x23\x00\x00\xae\x02\x00\x00\x00\x00\x00\x00\x00\x00\x50\x07\x8b\x01\x09\x00\x08\x00\x53\x0c\x00\x00\x00\x00\x36\x01\xcc\x20\xa1\x23\xb3\x20\xba\x23\xd3\x23\xec\x23\x05\x24\xc3\x19\xcb\x15\xbd\x14\x31\x0e\x18\x0d\x7a\x0b\x64\x14\xff\x08\x0c\x1a\x52\x17\x05\x0e\x04\x0c\x2e\x0b\x00\x00\xf2\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9a\x20\x81\x20\x84\x02\x7f\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\x00\x00\x00\x00\x00\x00\x88\x23\x00\x00\x00\x00\x00\x00\x00\x00\x77\x08\x00\x00\x00\x00\x00\x00\x6c\x02\x21\x09\x00\x00\xbb\x15\xdb\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x06\x53\x02\xd6\x02\x8b\x02\x2d\x02\xf8\x05\xd9\x22\x00\x00\x00\x00\x05\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x50\x03\x7f\x24\xd0\x04\x48\x02\x2f\x07\x00\x00\x00\x00\x47\x18\xa7\x04\x3a\x02\x00\x00\x00\x00\x28\x16\x43\x0e\x00\x00\x00\x00\x43\x0b\x43\x18\x00\x00\x00\x00\x04\x07\xf4\x03\xc2\x17\x00\x00\x69\x04\x2c\x02\x00\x00\x00\x00\x5c\x02\xec\x17\x66\x02\x00\x00\x00\x00\x00\x00\x00\x00\x92\x02\x59\x02\x00\x00\x00\x00\x40\x04\x12\x02\x00\x00\x28\x19\x00\x00\x00\x00\x6a\x1f\xd4\x06\xc1\x00\x4a\x24\x74\x16\x32\x24\x98\x01\x21\x01\x9d\x16\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x04\x00\x00\x00\x00\x00\x00\x00\x00\x72\x24\x99\x07\x6d\x19\x0f\x17\x3c\x17\xc6\x17\xd9\x03\xfb\x01\x00\x00\x00\x00\xf8\x06\x63\x00\x61\x04\xf3\x06\x00\x00\xd7\x06\x00\x00\xaf\x06\x00\x00\x00\x00\xd2\x03\x00\x00\x00\x00\x00\x00\x00\x00\x56\x01\x00\x00\x00\x00\x00\x00\x16\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe8\x01\x00\x00\x00\x00\x97\xff\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcf\x01\xaf\x06\x00\x00\x93\x06\x00\x00\x51\x1f\x00\x00\x00\x00\x00\x00\x4f\x02\x33\x02\x15\x17\x00\x00\x45\x17\x19\x0b\xf1\x01\x00\x00\x00\x00\x5b\x16\x00\x00\x48\x06\x00\x00\x8a\x03\x00\x00\x83\x15\x97\x16\x42\x06\x19\x06\x00\x00\x48\x15\x59\x0f\x03\x06\x00\x00\xfe\x05\xd9\x05\x00\x00\x96\x00\x9d\x19\x00\x00\x00\x00\xd3\x05\x00\x00\x00\x00\x00\x00\x61\x19\x94\x05\x00\x00\x00\x00\x6b\x17\x23\x03\xf3\x01\x00\x00\x00\x00\x00\x00\x90\x09\x0a\x02\x00\x00\x00\x00\xbb\x05\x00\x00\x3e\x03\x7d\x0a\x00\x00\x8e\x05\x78\x05\x51\x05\x00\x00\x00\x00\x00\x00\xd9\x04\x75\x15\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x01\x00\x00\x00\x00\x00\x00\xbc\x01\x4c\x01\xb3\x05\x89\x05\x6b\x05\x00\x00\xd2\x1f\xb9\x1f\x68\x20\x00\x00\x00\x00\x00\x00\x00\x00\xd8\x01\xea\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x17\x90\x01\x26\x16\x5d\x01\x00\x00\xcf\x06\x00\x00\xee\x18\x62\x00\x7a\x17\x00\x00\x00\x00\xdb\x18\x00\x00\x65\x04\x00\x00\x01\x09\x00\x00\x00\x00\x8a\x01\xcb\x0b\x00\x00\x00\x00\xb9\x1e\xc0\x22\x00\x00\x6f\x23\x00\x00\xa7\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x1f\xb2\xff\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x22\x72\x01\x94\x1e\x00\x00\x00\x00\x44\x01\x00\x00\x4c\x05\x00\x00\x00\x00\x00\x00\x00\x00\xd1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdf\x01\x63\x01\xd9\x01\xd3\x01\xc1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x44\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x01\x25\x01\x00\x00\x00\x00\x00\x00\x32\x05\x00\x00\x00\x00\xb7\x15\x00\x00\x00\x00\x00\x00\x00\x00\x95\x0c\x09\x05\x00\x00\xb8\x08\x65\x24\x00\x00\x00\x00\x00\x00\x08\x07\xad\x07\x00\x00\x00\x00\x4c\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\x04\x8a\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x75\x22\x00\x00\x00\x00\x00\x00\xb6\x0c\x42\x05\xd3\x16\x00\x00\x00\x00\xbd\x0d\xf4\x05\xd9\x16\x00\x00\x00\x00\x00\x00\x00\x00\x2d\x0c\x74\x0d\x06\x0c\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd1\x00\x5c\x22\x3b\x01\x00\x00\x00\x00\xf7\x1e\x00\x00\xc0\x00\x00\x00\x00\x00\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x43\x22\x3b\x01\x00\x00\xc0\x0a\xd2\x03\x1c\x03\x00\x00\x00\x00\x00\x00\x2a\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x92\x00\x00\x00\x11\x22\xf6\x06\x21\x09\x5b\x04\x00\x00\x23\x04\x00\x00\xa0\x03\x00\x00\xf8\x21\x00\x00\x00\x00\x1c\x03\x9e\x03\x00\x00\x00\x00\x00\x00\x00\x00\xfc\x04\xa0\x1f\x87\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x00\x00\x4f\x20\x69\x00\x00\x00\xdf\x21\x00\x00\xf8\x0e\xc6\x21\x00\x00\x00\x00\x63\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x1e\x00\x00\x00\x00\x17\x1f\x00\x00\x00\x00\xad\x21\xdd\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x36\x20\x33\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x94\x21\x00\x00\xf9\x05\x3b\x19\x56\x00\x00\x00\x7b\x21\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x62\x21\x0c\x08\x00\x00\x00\x00\x00\x00\x58\x00\x00\x00\x00\x00\x00\x00\xea\x02\x10\x00\x00\x00\x89\x02\xbb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\xd5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x00\x37\x00\x00\x00\x00\x00\x88\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1d\x20\x04\x20\x00\x00\x00\x00\x00\x00\xbe\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"#--happyDefActions :: HappyAddr-happyDefActions = HappyA# "\xfa\xff\x28\xfe\x00\x00\x00\x00\x00\x00\x28\xfe\x87\xfe\x7b\xfe\x69\xfe\x00\x00\x67\xfe\x63\xfe\x60\xfe\x5d\xfe\x58\xfe\x55\xfe\x53\xfe\x51\xfe\x4f\xfe\x4d\xfe\x4b\xfe\x48\xfe\x3b\xfe\x00\x00\x96\xfe\x95\xfe\x28\xfe\x6a\xfe\x6b\xfe\x00\x00\x00\x00\x6d\xfe\x6c\xfe\x6e\xfe\x6f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x31\xfe\x32\xfe\x30\xfe\x2f\xfe\x97\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\xff\xe3\xff\xe2\xff\xe1\xff\xe0\xff\xdf\xff\xde\xff\x00\x00\x00\x00\xc7\xff\xd7\xff\xb5\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x37\xfe\x00\x00\x00\x00\x97\xfe\x29\xfe\x00\x00\xf7\xff\x00\x00\xf6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x97\xff\x8d\xff\x8c\xff\x8b\xff\x00\x00\x6c\xff\x9a\xff\x80\xff\x99\xff\x7f\xff\x98\xff\x7e\xff\x61\xff\x47\xff\x28\xfe\x46\xff\x00\x00\xe5\xff\xfb\xfe\xf9\xfe\xfa\xfe\xa5\xff\xec\xfe\xeb\xfe\x00\x00\x27\xfe\x26\xfe\x00\x00\x28\xfe\x00\x00\x00\x00\x87\xff\x74\xff\x7c\xff\x73\xff\x77\xff\x28\xfe\x89\xff\x78\xff\x84\xff\x7a\xff\x72\xff\x79\xff\x83\xff\x86\xff\x7b\xff\x76\xff\x88\xff\x00\x00\x42\xff\x8a\xff\x00\x00\x85\xff\x41\xff\x75\xff\x7d\xff\xef\xfe\x55\xff\x00\x00\x28\xfe\x00\x00\xf5\xff\x00\x00\x28\xfe\x00\x00\x00\x00\x27\xfe\x00\x00\x28\xfe\x00\x00\xf8\xfe\xea\xfe\x27\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xff\x6b\xff\x60\xff\x17\xff\xa5\xff\x25\xfe\x00\x00\x4f\xff\x1c\xff\x1d\xff\x22\xff\x1f\xff\x1e\xff\x20\xff\x21\xff\x28\xfe\xf4\xfe\xc8\xfe\xc6\xfe\xe5\xfe\x35\xfe\x00\x00\x95\xff\x6a\xff\x5f\xff\x1b\xff\x17\xff\xa5\xff\x00\x00\x00\x00\x52\xff\x00\x00\x5b\xff\x49\xff\x48\xff\x57\xff\x91\xff\x8f\xff\x8e\xff\x90\xff\x56\xff\x64\xff\x5d\xff\x5c\xff\xa9\xff\x63\xff\x62\xff\xaa\xff\x70\xff\x67\xff\x68\xff\x66\xff\x6f\xff\x6e\xff\x6d\xff\x00\x00\x17\xff\x18\xff\x14\xff\x11\xff\x10\xff\x15\xff\x07\xff\x19\xff\xa5\xff\x00\x00\x28\xfe\x13\xff\x00\x00\x93\xff\x71\xff\x65\xff\x17\xff\xa5\xff\x92\xff\x00\x00\x5a\xff\x00\x00\x17\xff\xa5\xff\x28\xfe\xa8\xff\x28\xfe\xa7\xff\xf3\xff\x00\x00\x00\x00\x36\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x2a\xfe\x37\xfe\x00\x00\x00\x00\xbc\xff\x69\xfe\x33\xfe\x00\x00\xbb\xff\x00\x00\xb4\xff\xd5\xff\x28\xfe\xc6\xff\x28\xfe\x28\xfe\x00\x00\x71\xfe\x28\xfe\x72\xfe\x78\xfe\x2e\xfe\x2d\xfe\x76\xfe\x28\xfe\x00\x00\x74\xfe\x28\xfe\x70\xfe\x79\xfe\x7a\xfe\x00\x00\xcf\xfe\x80\xff\x7f\xff\x7e\xff\x00\x00\x00\x00\x00\x00\x27\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x77\xfe\x00\x00\x46\xfe\x42\xfe\x41\xfe\x45\xfe\x44\xfe\x43\xfe\x3e\xfe\x3d\xfe\x3c\xfe\x40\xfe\x3f\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x81\xfe\x80\xfe\xf8\xff\xf9\xff\x83\xfe\x82\xfe\x00\x00\x00\x00\x7d\xfe\x85\xfe\x47\xfe\x64\xfe\x65\xfe\x66\xfe\x61\xfe\x62\xfe\x5e\xfe\x5f\xfe\x59\xfe\x5b\xfe\x5a\xfe\x5c\xfe\x56\xfe\x57\xfe\x54\xfe\x52\xfe\x50\xfe\x4e\xfe\x00\x00\x00\x00\x4c\xfe\x39\xfe\x3a\xfe\x94\xfe\x00\x00\xcc\xfe\xc9\xfe\xcb\xfe\xca\xfe\x00\x00\xcd\xfe\xe5\xfe\xb9\xfe\xce\xfe\x92\xfe\x00\x00\x00\x00\x00\x00\x2c\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd6\xff\xd5\xff\x00\x00\x00\x00\x00\x00\x00\x00\xdb\xff\x00\x00\x28\xfe\x00\x00\x00\x00\xbe\xff\x00\x00\xba\xff\x00\x00\x00\x00\x00\x00\x00\x00\x28\xfe\xa7\xfe\x28\xfe\x00\x00\xf1\xff\x28\xfe\x28\xfe\xa7\xfe\xef\xff\x12\xff\xe5\xfe\x00\x00\x0f\xff\x03\xff\x27\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xfd\xfe\x28\xfe\xa7\xfe\xf0\xff\x43\xff\x40\xff\x28\xfe\x00\x00\x94\xff\x69\xff\x5e\xff\x1a\xff\x17\xff\xa5\xff\x00\x00\x4c\xff\x28\xfe\xa7\xfe\xee\xff\x35\xfe\x34\xfe\x00\x00\x35\xfe\x6e\xfe\x28\xfe\xe0\xfe\xdc\xfe\xd9\xfe\x99\xff\x7f\xff\xd5\xfe\x00\x00\xe4\xfe\xe2\xfe\x00\x00\x27\xfe\xd1\xfe\xc5\xfe\xec\xff\xa4\xff\x00\x00\x00\x00\x00\x00\x00\x00\x27\xfe\x28\xfe\x28\xfe\xa7\xfe\xf2\xff\x00\x00\x00\x00\x00\x00\x28\xfe\xe7\xfe\xee\xfe\xf3\xfe\xf7\xfe\xfa\xfe\xf6\xfe\xe9\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x29\xff\x00\x00\x00\x00\x00\x00\x00\x00\x21\xfe\x00\x00\x23\xfe\x1f\xfe\x20\xfe\x54\xff\x53\xff\x00\x00\x00\x00\x28\xff\x26\xff\x00\x00\x00\x00\x81\xff\x82\xff\xf5\xfe\xf2\xfe\xe6\xfe\x00\x00\x00\x00\xed\xfe\xf1\xfe\xa0\xff\x00\x00\xeb\xff\x00\x00\x00\x00\x17\xff\x17\xff\x00\x00\x19\xff\x00\x00\x28\xfe\x17\xff\xe8\xfe\x00\x00\x28\xfe\xc7\xfe\x28\xfe\xd3\xfe\x00\x00\xd4\xfe\xe5\xfe\xb9\xfe\x28\xfe\x28\xfe\xd8\xfe\xe5\xfe\xb9\xfe\x28\xfe\xdb\xfe\x28\xfe\x28\xfe\xdf\xfe\x28\xfe\x00\x00\x00\x00\x00\x00\x6e\xfe\xc4\xfe\x00\x00\x00\x00\x35\xfe\x6e\xfe\xa2\xff\xe7\xff\x28\xfe\x28\xfe\xa7\xfe\xed\xff\x00\x00\x00\x00\x28\xfe\x40\xff\x9c\xff\xe9\xff\x00\x00\x00\x00\x00\x00\x28\xfe\x00\x00\x00\xff\x0b\xff\x00\x00\x0e\xff\x0d\xff\x02\xff\x00\x00\x00\x00\xa3\xff\xe8\xff\x00\x00\x00\x00\x00\x00\x9e\xff\x9d\xff\xea\xff\x17\xff\x17\xff\x00\x00\x00\x00\x00\x00\xbd\xff\x37\xfe\x37\xfe\x00\x00\x00\x00\xdc\xff\x00\x00\x00\x00\xd6\xff\x00\x00\xd3\xff\x00\x00\xd4\xff\xd2\xff\xd0\xff\xd1\xff\x00\x00\x00\x00\x00\x00\x00\x00\x55\xff\x28\xfe\xdd\xff\x28\xfe\x00\x00\x28\xfe\x00\x00\x75\xfe\x28\xfe\x73\xfe\x28\xfe\xb7\xfe\xb5\xfe\x00\x00\x00\x00\x00\x00\x27\xfe\xab\xfe\x68\xfe\xa5\xfe\x00\x00\x49\xfe\x00\x00\x84\xfe\x00\x00\x86\xfe\x7c\xfe\x4a\xfe\x38\xfe\xa4\xfe\x00\x00\x00\x00\x00\x00\x9d\xfe\x9e\xfe\xaa\xfe\x00\x00\x00\x00\x00\x00\xa5\xfe\x00\x00\x00\x00\x00\x00\xb2\xfe\xb3\xfe\xb1\xfe\xb4\xfe\xb6\xfe\xb8\xfe\x27\xfe\x00\x00\x00\x00\x8d\xfe\x00\x00\x00\x00\x00\x00\x8a\xfe\x00\x00\xcf\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd9\xff\x00\x00\x00\x00\xc9\xff\x00\x00\xb3\xff\x00\x00\x00\x00\x00\x00\x00\x00\xc5\xff\xc3\xff\xc2\xff\xa7\xfe\xa7\xfe\x00\x00\x59\xff\x58\xff\x00\x00\x0c\xff\x01\xff\x00\x00\x06\xff\x0a\xff\xfe\xfe\xff\xfe\x00\x00\x09\xff\xfc\xfe\x28\xfe\x35\xff\x3e\xff\x00\x00\x00\x00\x28\xfe\x27\xfe\x3f\xff\x44\xff\x28\xfe\x51\xff\x50\xff\xa1\xff\xe6\xff\x00\x00\x00\x00\x00\x00\x00\x00\x6e\xfe\x28\xfe\xc2\xfe\x00\x00\xc3\xfe\xbd\xfe\x00\x00\x00\x00\xde\xfe\xdd\xfe\xda\xfe\x28\xfe\xb5\xfe\x27\xfe\xd7\xfe\xd6\xfe\x28\xfe\xb5\xfe\x27\xfe\xd2\xfe\xe1\xfe\xe3\xfe\xd0\xfe\x00\x00\x00\x00\x00\x00\x17\xff\x4e\xff\x4d\xff\xa6\xfe\xf0\xfe\xf4\xff\x00\x00\x25\xff\x00\x00\x00\x00\x2d\xff\x00\x00\x00\x00\x00\x00\x21\xfe\x22\xfe\x24\xfe\x69\xfe\x1c\xfe\x00\x00\x1d\xfe\x00\x00\x27\xff\x2c\xff\x23\xff\x00\x00\x00\x00\x2b\xff\x00\x00\x27\xfe\x27\xfe\x00\x00\xc0\xfe\xbc\xfe\x00\x00\x00\x00\xc1\xfe\xbb\xfe\x4b\xff\x4a\xff\x3b\xff\x39\xff\x31\xff\x00\x00\x00\x00\x27\xfe\x28\xfe\x3d\xff\x28\xfe\x3c\xff\x28\xfe\x34\xff\x00\x00\x45\xff\x08\xff\x00\x00\x00\x00\x05\xff\x16\xff\x9b\xff\x9f\xff\x00\x00\x37\xfe\x37\xfe\x00\x00\xda\xff\x00\x00\xb2\xff\xb1\xff\x00\x00\x00\x00\xb9\xff\xd8\xff\xc8\xff\xce\xff\xcc\xff\xcd\xff\x00\x00\xcb\xff\x8f\xfe\x90\xfe\x00\x00\x00\x00\x91\xfe\x00\x00\x93\xfe\x28\xfe\x00\x00\xb0\xfe\xae\xfe\xaf\xfe\xad\xfe\x00\x00\x9a\xfe\x00\x00\x9f\xfe\x9c\xfe\x99\xfe\xa0\xfe\xa3\xfe\x00\x00\x7f\xfe\xa2\xfe\x00\x00\x7e\xfe\x9b\xfe\x00\x00\x00\x00\xa9\xfe\xac\xfe\x8c\xfe\x8e\xfe\x8b\xfe\x89\xfe\x00\x00\xca\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb3\xff\xc1\xff\x00\x00\x00\x00\xc4\xff\x04\xff\x33\xff\x00\x00\x37\xff\x00\x00\x00\x00\x3a\xff\x30\xff\x00\x00\x2e\xff\xba\xfe\x00\x00\xbf\xfe\x2a\xff\x24\xff\xa6\xff\x1e\xfe\x00\x00\x00\x00\x1a\xfe\x1b\xfe\x2b\xfe\x69\xfe\x19\xfe\xbe\xfe\x2f\xff\x28\xfe\x38\xff\x32\xff\x00\x00\x00\x00\x00\x00\xb8\xff\xb0\xff\x00\x00\x00\x00\x00\x00\x88\xfe\xa8\xfe\x00\x00\xa1\xfe\x98\xfe\x00\x00\x00\x00\xaf\xff\x00\x00\x00\x00\xd6\xff\xc0\xff\x36\xff\x00\x00\x18\xfe\x17\xfe\xbf\xff\x00\x00\xac\xff\xb7\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xab\xff\xb6\xff\xad\xff\xae\xff"#--happyCheck :: HappyAddr-happyCheck = HappyA# "\xff\xff\x02\x00\x03\x00\x04\x00\x2d\x00\x1f\x00\x1f\x00\x38\x00\x01\x00\x1e\x00\x39\x00\x01\x00\x2c\x00\x5b\x00\x5c\x00\x01\x00\x04\x00\x14\x00\x32\x00\x01\x00\x0d\x00\x7e\x00\x7f\x00\x0d\x00\x19\x00\x2e\x00\x1b\x00\x0d\x00\x1d\x00\x1e\x00\x1f\x00\x0d\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\x15\x00\x16\x00\x17\x00\x0d\x00\x64\x00\x0a\x00\x36\x00\x39\x00\x79\x00\x0e\x00\x3a\x00\x2e\x00\x64\x00\x65\x00\x02\x00\x03\x00\x04\x00\x09\x00\x39\x00\x39\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x17\x00\x01\x00\x66\x00\x66\x00\x79\x00\x01\x00\x7f\x00\x15\x00\x16\x00\x17\x00\x19\x00\x18\x00\x1b\x00\x0d\x00\x1d\x00\x1e\x00\x1f\x00\x0d\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\x64\x00\x65\x00\x66\x00\x64\x00\x65\x00\x66\x00\x36\x00\x64\x00\x65\x00\x66\x00\x3a\x00\x64\x00\x65\x00\x66\x00\x02\x00\x03\x00\x04\x00\x7d\x00\x7e\x00\x7f\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x03\x00\x7f\x00\x7f\x00\x64\x00\x65\x00\x01\x00\x79\x00\x02\x00\x02\x00\x7f\x00\x19\x00\x04\x00\x1b\x00\x79\x00\x1d\x00\x1e\x00\x1f\x00\x0d\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\x04\x00\x45\x00\x46\x00\x47\x00\x01\x00\x79\x00\x36\x00\x64\x00\x65\x00\x66\x00\x3a\x00\x64\x00\x65\x00\x66\x00\x79\x00\x79\x00\x0d\x00\x7d\x00\x7e\x00\x7f\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x60\x00\x1c\x00\x21\x00\x22\x00\x23\x00\x24\x00\x01\x00\x26\x00\x72\x00\x01\x00\x01\x00\x03\x00\x03\x00\x39\x00\x2d\x00\x2e\x00\x2f\x00\x01\x00\x0d\x00\x7f\x00\x02\x00\x0d\x00\x01\x00\x36\x00\x04\x00\x01\x00\x39\x00\x03\x00\x7c\x00\x0d\x00\x02\x00\x7e\x00\x7f\x00\x3c\x00\x0d\x00\x7c\x00\x63\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x64\x00\x65\x00\x66\x00\x66\x00\x66\x00\x66\x00\x7d\x00\x7e\x00\x7f\x00\x21\x00\x22\x00\x23\x00\x24\x00\x3a\x00\x26\x00\x01\x00\x2a\x00\x07\x00\x37\x00\x38\x00\x02\x00\x2d\x00\x2e\x00\x2f\x00\x01\x00\x04\x00\x2a\x00\x0d\x00\x01\x00\x01\x00\x36\x00\x01\x00\x64\x00\x39\x00\x66\x00\x7f\x00\x0d\x00\x7d\x00\x7e\x00\x7f\x00\x0d\x00\x0d\x00\x01\x00\x0d\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x7e\x00\x7f\x00\x20\x00\x0d\x00\x22\x00\x23\x00\x24\x00\x1e\x00\x26\x00\x2a\x00\x64\x00\x65\x00\x66\x00\x64\x00\x65\x00\x2d\x00\x2e\x00\x2f\x00\x02\x00\x04\x00\x72\x00\x64\x00\x65\x00\x66\x00\x36\x00\x01\x00\x64\x00\x39\x00\x31\x00\x7d\x00\x7e\x00\x7f\x00\x81\x00\x01\x00\x22\x00\x38\x00\x7c\x00\x0d\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x0d\x00\x1e\x00\x7f\x00\x21\x00\x22\x00\x23\x00\x24\x00\x7f\x00\x26\x00\x1e\x00\x4c\x00\x4d\x00\x39\x00\x4f\x00\x26\x00\x2d\x00\x2e\x00\x2f\x00\x64\x00\x04\x00\x66\x00\x2d\x00\x2e\x00\x2f\x00\x36\x00\x04\x00\x1c\x00\x64\x00\x5e\x00\x66\x00\x36\x00\x64\x00\x64\x00\x66\x00\x64\x00\x65\x00\x66\x00\x38\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x64\x00\x57\x00\x66\x00\x21\x00\x22\x00\x23\x00\x24\x00\x7f\x00\x26\x00\x21\x00\x22\x00\x23\x00\x24\x00\x3c\x00\x26\x00\x2d\x00\x2e\x00\x2f\x00\x37\x00\x38\x00\x02\x00\x2d\x00\x2e\x00\x2f\x00\x36\x00\x04\x00\x22\x00\x39\x00\x22\x00\x2d\x00\x36\x00\x57\x00\x26\x00\x39\x00\x64\x00\x65\x00\x02\x00\x7f\x00\x44\x00\x45\x00\x46\x00\x47\x00\x64\x00\x65\x00\x44\x00\x45\x00\x46\x00\x47\x00\x1e\x00\x39\x00\x01\x00\x39\x00\x7f\x00\x20\x00\x26\x00\x22\x00\x23\x00\x24\x00\x7f\x00\x26\x00\x7c\x00\x20\x00\x0d\x00\x22\x00\x23\x00\x24\x00\x2d\x00\x2e\x00\x2f\x00\x05\x00\x06\x00\x07\x00\x7f\x00\x39\x00\x02\x00\x36\x00\x2a\x00\x07\x00\x39\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x64\x00\x65\x00\x39\x00\x7c\x00\x2c\x00\x44\x00\x45\x00\x46\x00\x47\x00\x1c\x00\x22\x00\x07\x00\x7e\x00\x7f\x00\x05\x00\x06\x00\x07\x00\x07\x00\x09\x00\x7f\x00\x0b\x00\x0c\x00\x0d\x00\x07\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x2a\x00\x2a\x00\x7c\x00\x2d\x00\x39\x00\x19\x00\x7f\x00\x1b\x00\x7f\x00\x1d\x00\x1e\x00\x1f\x00\x3c\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\x39\x00\x7f\x00\x7f\x00\x64\x00\x65\x00\x1c\x00\x36\x00\x7f\x00\x64\x00\x65\x00\x3a\x00\x44\x00\x45\x00\x46\x00\x47\x00\x7f\x00\x5d\x00\x45\x00\x46\x00\x47\x00\x61\x00\x79\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\x3c\x00\x73\x00\x44\x00\x45\x00\x46\x00\x47\x00\x78\x00\x79\x00\x5d\x00\x7f\x00\x7c\x00\x4e\x00\x61\x00\x30\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\x57\x00\x73\x00\x02\x00\x7e\x00\x7f\x00\x1c\x00\x78\x00\x79\x00\x57\x00\x7f\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x05\x00\x06\x00\x07\x00\x2c\x00\x09\x00\x02\x00\x0b\x00\x0c\x00\x0d\x00\x79\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x04\x00\x1e\x00\x57\x00\x7f\x00\x1c\x00\x19\x00\x07\x00\x1b\x00\x3c\x00\x1d\x00\x1e\x00\x1f\x00\x1a\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\x57\x00\x20\x00\x2a\x00\x22\x00\x23\x00\x24\x00\x36\x00\x26\x00\x3c\x00\x30\x00\x3a\x00\x05\x00\x06\x00\x07\x00\x57\x00\x2a\x00\x64\x00\x65\x00\x2d\x00\x80\x00\x81\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x39\x00\x3b\x00\x57\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x79\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x1c\x00\x20\x00\x5d\x00\x22\x00\x23\x00\x24\x00\x61\x00\x07\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\x1c\x00\x73\x00\x1c\x00\x39\x00\x1c\x00\x2a\x00\x78\x00\x79\x00\x2d\x00\x3c\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x25\x00\x26\x00\x01\x00\x28\x00\x03\x00\x2a\x00\x4e\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x1c\x00\x1c\x00\x0a\x00\x0d\x00\x1a\x00\x7f\x00\x36\x00\x3c\x00\x5d\x00\x3c\x00\x3a\x00\x3c\x00\x61\x00\x7f\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\x7c\x00\x73\x00\x4f\x00\x3c\x00\x3c\x00\x7c\x00\x78\x00\x79\x00\x02\x00\x03\x00\x7c\x00\x07\x00\x06\x00\x1a\x00\x03\x00\x2a\x00\x5d\x00\x06\x00\x2d\x00\x7f\x00\x61\x00\x07\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\x20\x00\x73\x00\x22\x00\x23\x00\x24\x00\x1f\x00\x78\x00\x79\x00\x00\x00\x01\x00\x07\x00\x7d\x00\x7e\x00\x7f\x00\x25\x00\x26\x00\x07\x00\x28\x00\x1a\x00\x2a\x00\x07\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x39\x00\x03\x00\x7c\x00\x19\x00\x06\x00\x1b\x00\x36\x00\x1d\x00\x1e\x00\x1f\x00\x3a\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\x64\x00\x65\x00\x39\x00\x1f\x00\x1a\x00\x4f\x00\x36\x00\x3e\x00\x3f\x00\x40\x00\x3a\x00\x64\x00\x65\x00\x44\x00\x45\x00\x46\x00\x47\x00\x2a\x00\x2b\x00\x5d\x00\x7d\x00\x7e\x00\x7f\x00\x61\x00\x07\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\x07\x00\x73\x00\x3f\x00\x40\x00\x7f\x00\x1a\x00\x78\x00\x79\x00\x45\x00\x46\x00\x47\x00\x7d\x00\x7e\x00\x7f\x00\x25\x00\x26\x00\x53\x00\x28\x00\x07\x00\x2a\x00\x79\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x44\x00\x45\x00\x46\x00\x47\x00\x7f\x00\x39\x00\x36\x00\x7f\x00\x2a\x00\x2b\x00\x3a\x00\x1a\x00\x7d\x00\x7e\x00\x7f\x00\x7c\x00\x44\x00\x45\x00\x46\x00\x47\x00\x39\x00\x49\x00\x4a\x00\x21\x00\x22\x00\x23\x00\x24\x00\x7c\x00\x26\x00\x2a\x00\x2b\x00\x4f\x00\x51\x00\x52\x00\x53\x00\x2d\x00\x2e\x00\x2f\x00\x64\x00\x65\x00\x7e\x00\x7f\x00\x2a\x00\x2b\x00\x36\x00\x5d\x00\x07\x00\x39\x00\x08\x00\x61\x00\x07\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\x7a\x00\x73\x00\x13\x00\x14\x00\x15\x00\x16\x00\x78\x00\x79\x00\x7e\x00\x7f\x00\x07\x00\x7d\x00\x7e\x00\x7f\x00\x25\x00\x26\x00\x7c\x00\x28\x00\x72\x00\x2a\x00\x01\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x51\x00\x52\x00\x53\x00\x19\x00\x63\x00\x1b\x00\x36\x00\x1d\x00\x1e\x00\x1f\x00\x3a\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\x7f\x00\x2b\x00\x39\x00\x64\x00\x65\x00\x4f\x00\x36\x00\x45\x00\x46\x00\x47\x00\x3a\x00\x49\x00\x4a\x00\x44\x00\x45\x00\x46\x00\x47\x00\x17\x00\x18\x00\x5d\x00\x7d\x00\x7e\x00\x7f\x00\x61\x00\x02\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\x02\x00\x73\x00\x3f\x00\x40\x00\x11\x00\x12\x00\x78\x00\x79\x00\x45\x00\x46\x00\x47\x00\x7d\x00\x7e\x00\x7f\x00\x21\x00\x22\x00\x23\x00\x24\x00\x63\x00\x26\x00\x0b\x00\x0c\x00\x07\x00\x2b\x00\x7e\x00\x7f\x00\x2d\x00\x2e\x00\x2f\x00\x01\x00\x01\x00\x03\x00\x7f\x00\x64\x00\x65\x00\x36\x00\x01\x00\x7d\x00\x7e\x00\x7f\x00\x19\x00\x0d\x00\x1b\x00\x04\x00\x1d\x00\x1e\x00\x1f\x00\x63\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\x07\x00\x2a\x00\x2b\x00\x7f\x00\x2a\x00\x2b\x00\x36\x00\x01\x00\x66\x00\x03\x00\x3a\x00\x05\x00\x06\x00\x02\x00\x31\x00\x09\x00\x0a\x00\x04\x00\x19\x00\x02\x00\x1b\x00\x38\x00\x1d\x00\x1e\x00\x1f\x00\x02\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\x4c\x00\x4d\x00\x3a\x00\x4f\x00\x7f\x00\x39\x00\x36\x00\x7d\x00\x7e\x00\x7f\x00\x3a\x00\x66\x00\x44\x00\x45\x00\x46\x00\x47\x00\x64\x00\x65\x00\x5e\x00\x1c\x00\x1d\x00\x07\x00\x17\x00\x18\x00\x64\x00\x65\x00\x66\x00\x2b\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x11\x00\x12\x00\x7d\x00\x7e\x00\x7f\x00\x19\x00\x04\x00\x1b\x00\x04\x00\x1d\x00\x1e\x00\x1f\x00\x04\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\x07\x00\x7d\x00\x7e\x00\x7f\x00\x2c\x00\x01\x00\x36\x00\x7d\x00\x7e\x00\x7f\x00\x3a\x00\x7d\x00\x7e\x00\x7f\x00\x2a\x00\x7d\x00\x7e\x00\x7f\x00\x19\x00\x1e\x00\x1b\x00\x2b\x00\x1d\x00\x1e\x00\x1f\x00\x1e\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\x66\x00\x05\x00\x06\x00\x07\x00\x0b\x00\x0c\x00\x36\x00\x7d\x00\x7e\x00\x7f\x00\x3a\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x04\x00\x66\x00\x39\x00\x04\x00\x2b\x00\x07\x00\x02\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x02\x00\x44\x00\x45\x00\x46\x00\x47\x00\x32\x00\x04\x00\x31\x00\x7d\x00\x7e\x00\x7f\x00\x19\x00\x04\x00\x1b\x00\x38\x00\x1d\x00\x1e\x00\x1f\x00\x04\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\x4c\x00\x4d\x00\x66\x00\x4f\x00\x04\x00\x02\x00\x36\x00\x7d\x00\x7e\x00\x7f\x00\x3a\x00\x05\x00\x06\x00\x07\x00\x02\x00\x7d\x00\x7e\x00\x7f\x00\x5e\x00\x02\x00\x1f\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x7f\x00\x5d\x00\x51\x00\x52\x00\x53\x00\x61\x00\x3e\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\x2b\x00\x73\x00\x05\x00\x06\x00\x07\x00\x2b\x00\x78\x00\x79\x00\x02\x00\x2c\x00\x7c\x00\x2b\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x2d\x00\x3e\x00\x3f\x00\x40\x00\x51\x00\x52\x00\x53\x00\x44\x00\x45\x00\x46\x00\x47\x00\x02\x00\x7d\x00\x7e\x00\x7f\x00\x05\x00\x06\x00\x07\x00\x02\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x51\x00\x52\x00\x53\x00\x1e\x00\x5d\x00\x51\x00\x52\x00\x53\x00\x61\x00\x02\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\x1e\x00\x73\x00\x05\x00\x06\x00\x07\x00\x02\x00\x78\x00\x79\x00\x1e\x00\x02\x00\x7c\x00\x7f\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x02\x00\x5d\x00\x51\x00\x52\x00\x53\x00\x61\x00\x2c\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\x1e\x00\x73\x00\x51\x00\x52\x00\x53\x00\x2d\x00\x78\x00\x79\x00\x64\x00\x5d\x00\x7c\x00\x1e\x00\x32\x00\x61\x00\x02\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\x1f\x00\x73\x00\x05\x00\x06\x00\x07\x00\x63\x00\x78\x00\x79\x00\x02\x00\x02\x00\x7c\x00\x02\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x51\x00\x52\x00\x53\x00\x02\x00\x5d\x00\x7d\x00\x7e\x00\x7f\x00\x61\x00\x02\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\x54\x00\x73\x00\x05\x00\x06\x00\x07\x00\x04\x00\x78\x00\x79\x00\x04\x00\x35\x00\x7c\x00\x04\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x66\x00\x32\x00\x44\x00\x45\x00\x46\x00\x47\x00\x64\x00\x44\x00\x45\x00\x46\x00\x47\x00\x05\x00\x06\x00\x07\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x2b\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x7d\x00\x7e\x00\x7f\x00\x02\x00\x02\x00\x5d\x00\x7d\x00\x7e\x00\x7f\x00\x61\x00\x63\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\x01\x00\x73\x00\x05\x00\x06\x00\x07\x00\x02\x00\x78\x00\x79\x00\x02\x00\x7f\x00\x7c\x00\x2a\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x7d\x00\x7e\x00\x7f\x00\x02\x00\x5d\x00\x7d\x00\x7e\x00\x7f\x00\x61\x00\x2c\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\x02\x00\x73\x00\x7d\x00\x7e\x00\x7f\x00\x5d\x00\x78\x00\x79\x00\x02\x00\x61\x00\x7c\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\x02\x00\x73\x00\x05\x00\x06\x00\x07\x00\x1f\x00\x78\x00\x79\x00\x2a\x00\x02\x00\x7c\x00\x66\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x7d\x00\x7e\x00\x7f\x00\x04\x00\x1f\x00\x5d\x00\x7d\x00\x7e\x00\x7f\x00\x61\x00\x01\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\x2c\x00\x73\x00\x0c\x00\x0d\x00\x2c\x00\x1f\x00\x78\x00\x79\x00\x02\x00\x02\x00\x7c\x00\x51\x00\x52\x00\x53\x00\x01\x00\x19\x00\x1f\x00\x1b\x00\x66\x00\x1d\x00\x1e\x00\x1f\x00\x1f\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\x08\x00\x51\x00\x52\x00\x53\x00\x02\x00\x31\x00\x36\x00\x2b\x00\x02\x00\x5d\x00\x3a\x00\x01\x00\x38\x00\x61\x00\x02\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\x2b\x00\x73\x00\x4c\x00\x4d\x00\x64\x00\x4f\x00\x78\x00\x79\x00\x63\x00\x4a\x00\x7c\x00\x51\x00\x52\x00\x53\x00\x35\x00\x5d\x00\x2a\x00\x26\x00\x02\x00\x61\x00\x5e\x00\x63\x00\x64\x00\x65\x00\x2d\x00\x2e\x00\x2f\x00\x2a\x00\x66\x00\x44\x00\x45\x00\x46\x00\x47\x00\x36\x00\x2a\x00\x02\x00\x39\x00\x2a\x00\x01\x00\x51\x00\x52\x00\x53\x00\x78\x00\x79\x00\x51\x00\x52\x00\x53\x00\x7d\x00\x7e\x00\x7f\x00\x0d\x00\x02\x00\x7d\x00\x7e\x00\x7f\x00\x5d\x00\x51\x00\x52\x00\x53\x00\x61\x00\x1e\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\x2a\x00\x73\x00\x1a\x00\x75\x00\x2b\x00\x1b\x00\x78\x00\x79\x00\x19\x00\x30\x00\x66\x00\x32\x00\x33\x00\x10\x00\x35\x00\x04\x00\x37\x00\x02\x00\x02\x00\x3a\x00\x02\x00\x63\x00\x3d\x00\x66\x00\x3f\x00\x40\x00\x41\x00\x4a\x00\x7d\x00\x7e\x00\x7f\x00\x46\x00\x47\x00\x48\x00\x49\x00\x01\x00\x4b\x00\x2b\x00\x5f\x00\x4e\x00\x66\x00\x2b\x00\x51\x00\x52\x00\x01\x00\x54\x00\x55\x00\x56\x00\x2c\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x64\x00\x65\x00\x66\x00\x67\x00\x2c\x00\x01\x00\x7d\x00\x7e\x00\x7f\x00\x32\x00\x6e\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x2c\x00\x20\x00\x10\x00\x22\x00\x23\x00\x24\x00\x2c\x00\x26\x00\x32\x00\x3a\x00\x7d\x00\x7e\x00\x7f\x00\x1b\x00\x2d\x00\x2e\x00\x2f\x00\x01\x00\x2c\x00\x44\x00\x45\x00\x46\x00\x47\x00\x36\x00\x49\x00\x4a\x00\x39\x00\x26\x00\x7d\x00\x7e\x00\x7f\x00\x03\x00\x01\x00\x2f\x00\x2d\x00\x2e\x00\x2f\x00\x44\x00\x45\x00\x46\x00\x47\x00\x2c\x00\x35\x00\x36\x00\x02\x00\x5d\x00\x7d\x00\x7e\x00\x7f\x00\x61\x00\x02\x00\x63\x00\x64\x00\x43\x00\x01\x00\x01\x00\x63\x00\x44\x00\x45\x00\x46\x00\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x66\x00\x53\x00\x10\x00\x6e\x00\x78\x00\x79\x00\x01\x00\x7b\x00\x7d\x00\x7e\x00\x7f\x00\x01\x00\x01\x00\x1b\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x66\x00\x01\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x7f\x00\x2b\x00\x2c\x00\x01\x00\x66\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\x7f\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x6e\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\x01\x00\x51\x00\x52\x00\x53\x00\x2c\x00\x1e\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x01\x00\x5d\x00\x10\x00\x01\x00\x01\x00\x61\x00\x01\x00\x63\x00\x64\x00\x25\x00\x26\x00\x1e\x00\x28\x00\x1b\x00\x2a\x00\x1e\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\x2b\x00\x31\x00\x32\x00\x33\x00\x6e\x00\x2b\x00\x36\x00\x2b\x00\x78\x00\x79\x00\x3a\x00\x7b\x00\x01\x00\x2f\x00\x30\x00\x31\x00\x01\x00\x33\x00\x01\x00\x35\x00\x63\x00\x37\x00\x38\x00\x01\x00\x3a\x00\x6e\x00\x2a\x00\x3d\x00\x1b\x00\x3f\x00\x40\x00\x41\x00\x1a\x00\x43\x00\x19\x00\x10\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\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\x01\x00\xff\xff\x7d\x00\x7e\x00\x7f\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x5d\x00\xff\xff\x10\x00\xff\xff\x61\x00\xff\xff\x63\x00\x64\x00\x65\x00\x25\x00\x26\x00\xff\xff\x28\x00\x1b\x00\x2a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\x36\x00\x78\x00\x79\x00\xff\xff\x3a\x00\xff\xff\xff\xff\x2f\x00\x30\x00\xff\xff\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\x43\x00\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\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\x01\x00\xff\xff\x7d\x00\x7e\x00\x7f\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x51\x00\x52\x00\x53\x00\xff\xff\x26\x00\x7d\x00\x7e\x00\x7f\x00\xff\xff\xff\xff\x1b\x00\x2d\x00\x2e\x00\x2f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\x5d\x00\xff\xff\x2c\x00\xff\xff\x61\x00\x2f\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x35\x00\xff\xff\x37\x00\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x43\x00\xff\xff\x78\x00\x79\x00\x47\x00\x48\x00\x49\x00\xff\xff\x01\x00\xff\xff\x03\x00\x7f\x00\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\x0d\x00\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\xff\xff\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\x01\x00\x7f\x00\x51\x00\x52\x00\x53\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x31\x00\x10\x00\xff\xff\x7d\x00\x7e\x00\x7f\x00\xff\xff\x38\x00\x25\x00\x26\x00\xff\xff\x28\x00\x1b\x00\x2a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\x31\x00\x32\x00\x33\x00\xff\xff\xff\xff\x36\x00\xff\xff\x4c\x00\x4d\x00\x3a\x00\x4f\x00\xff\xff\x2f\x00\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\x35\x00\x61\x00\x37\x00\x63\x00\x64\x00\x3a\x00\xff\xff\x5e\x00\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\x64\x00\x43\x00\x66\x00\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\x01\x00\x02\x00\x03\x00\x78\x00\x79\x00\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\xff\xff\xff\xff\x56\x00\xff\xff\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\xff\xff\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\x01\x00\xff\xff\x7d\x00\x7e\x00\x7f\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x01\x00\x02\x00\x03\x00\x19\x00\xff\xff\x1b\x00\xff\xff\x1d\x00\x1e\x00\x1f\x00\x1b\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\x2b\x00\x2c\x00\xff\xff\xff\xff\x2f\x00\xff\xff\x36\x00\x32\x00\xff\xff\x34\x00\x3a\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\x3b\x00\x3c\x00\x01\x00\x02\x00\x03\x00\x01\x00\xff\xff\x42\x00\x43\x00\x44\x00\x45\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x50\x00\xff\xff\xff\xff\x53\x00\x01\x00\x02\x00\x03\x00\x57\x00\xff\xff\xff\xff\x1b\x00\x01\x00\x02\x00\x03\x00\xff\xff\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\xff\xff\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x2f\x00\xff\xff\x31\x00\x01\x00\x02\x00\x03\x00\x0d\x00\x0e\x00\x0f\x00\x38\x00\x7d\x00\x7e\x00\x7f\x00\x01\x00\x02\x00\x03\x00\x01\x00\x0d\x00\x0e\x00\x0f\x00\x43\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x4c\x00\x4d\x00\x10\x00\x4f\x00\xff\xff\xff\xff\xff\xff\x53\x00\x54\x00\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5e\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x2f\x00\x3a\x00\x31\x00\xff\xff\xff\xff\x3e\x00\x3f\x00\x40\x00\xff\xff\x38\x00\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x4c\x00\x4d\x00\x10\x00\x4f\x00\xff\xff\xff\xff\xff\xff\x53\x00\x54\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x1b\x00\x61\x00\xff\xff\x63\x00\x64\x00\x5e\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x2f\x00\xff\xff\x31\x00\xff\xff\x78\x00\x79\x00\x7d\x00\x7e\x00\x7f\x00\x38\x00\xff\xff\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x01\x00\x45\x00\x46\x00\x47\x00\x43\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x4c\x00\x4d\x00\x10\x00\x4f\x00\xff\xff\xff\xff\xff\xff\x53\x00\x54\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x1b\x00\x61\x00\xff\xff\x63\x00\x64\x00\x5e\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x2f\x00\xff\xff\x31\x00\xff\xff\x78\x00\x79\x00\xff\xff\xff\xff\x04\x00\x38\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x4c\x00\x4d\x00\x10\x00\x4f\x00\x3a\x00\xff\xff\xff\xff\x53\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x1b\x00\x44\x00\x45\x00\x46\x00\x47\x00\x5e\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x2f\x00\x3b\x00\x31\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x38\x00\x44\x00\x45\x00\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x3e\x00\x3f\x00\x40\x00\x43\x00\xff\xff\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\x5d\x00\xff\xff\x4c\x00\x4d\x00\x61\x00\x4f\x00\x63\x00\x64\x00\x65\x00\x53\x00\xff\xff\x7d\x00\x7e\x00\x7f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5e\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x78\x00\x79\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x01\x00\xff\xff\x03\x00\xff\xff\xff\xff\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\x7f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x01\x00\xff\xff\x03\x00\xff\xff\xff\xff\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x5d\x00\x10\x00\x2c\x00\x2d\x00\x61\x00\x2f\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x1b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\x43\x00\x26\x00\x78\x00\x79\x00\x2c\x00\x2d\x00\xff\xff\x2f\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x53\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\xff\xff\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x53\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\xff\xff\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x01\x00\xff\xff\x03\x00\xff\xff\xff\xff\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x7f\x00\x45\x00\x46\x00\x47\x00\xff\xff\x1b\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x2c\x00\x5d\x00\xff\xff\x2f\x00\xff\xff\x61\x00\x39\x00\x63\x00\x64\x00\x65\x00\x1b\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\xff\xff\x43\x00\xff\xff\x26\x00\xff\xff\x2c\x00\x78\x00\x79\x00\x2f\x00\xff\xff\x2d\x00\x2e\x00\x2f\x00\xff\xff\x7e\x00\x7f\x00\xff\xff\x53\x00\xff\xff\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00\xff\xff\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x53\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\x01\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\x7e\x00\x7f\x00\x3e\x00\x3f\x00\x40\x00\x1b\x00\x01\x00\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x31\x00\x10\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x38\x00\xff\xff\xff\xff\x39\x00\xff\xff\x1b\x00\xff\xff\xff\xff\x3e\x00\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\x43\x00\xff\xff\x4c\x00\x4d\x00\x2c\x00\x4f\x00\xff\xff\x2f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x7e\x00\x7f\x00\x3a\x00\xff\xff\xff\xff\x64\x00\x43\x00\x66\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x53\x00\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\x01\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\xff\xff\xff\xff\x1b\x00\x01\x00\x02\x00\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x31\x00\x10\x00\x2c\x00\xff\xff\xff\xff\x2f\x00\xff\xff\x38\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x1b\x00\x61\x00\xff\xff\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x01\x00\xff\xff\x03\x00\xff\xff\x43\x00\xff\xff\x4c\x00\x4d\x00\xff\xff\x4f\x00\xff\xff\x2f\x00\x0d\x00\xff\xff\xff\xff\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x43\x00\x66\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x53\x00\x31\x00\xff\xff\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x38\x00\x45\x00\x46\x00\x47\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x01\x00\xff\xff\x4c\x00\x4d\x00\xff\xff\x4f\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\x01\x00\x66\x00\x1e\x00\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x7e\x00\x7f\x00\x10\x00\xff\xff\x39\x00\xff\xff\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\x00\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x03\x00\xff\xff\x43\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x2f\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x53\x00\x31\x00\xff\xff\x7d\x00\x7e\x00\x7f\x00\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x01\x00\xff\xff\x4c\x00\x4d\x00\xff\xff\x4f\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x5e\x00\x61\x00\xff\xff\x63\x00\x64\x00\x65\x00\x1b\x00\x01\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\x39\x00\x78\x00\x79\x00\x2f\x00\xff\xff\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x1b\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\x4a\x00\x5d\x00\x01\x00\xff\xff\x03\x00\x61\x00\x43\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x2f\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x53\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x43\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x53\x00\x31\x00\xff\xff\x7e\x00\x7f\x00\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x01\x00\xff\xff\x4c\x00\x4d\x00\xff\xff\x4f\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x5d\x00\xff\xff\xff\xff\x5e\x00\x61\x00\xff\xff\x63\x00\x64\x00\x65\x00\x1b\x00\x01\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\x78\x00\x79\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\x1b\x00\xff\xff\xff\xff\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\x43\x00\x49\x00\x4a\x00\x25\x00\x26\x00\xff\xff\x28\x00\x2f\x00\x2a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\x53\x00\xff\xff\xff\xff\x5d\x00\x36\x00\xff\xff\xff\xff\x61\x00\x3a\x00\x63\x00\x64\x00\x43\x00\xff\xff\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x53\x00\x5d\x00\x4f\x00\x78\x00\x79\x00\x61\x00\xff\xff\x63\x00\x64\x00\x65\x00\x7d\x00\x7e\x00\x7f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x5f\x00\x01\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x01\x00\xff\xff\x78\x00\x79\x00\xff\xff\x0d\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\xff\xff\x10\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\xff\xff\x1b\x00\x01\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\xff\xff\x31\x00\x10\x00\xff\xff\xff\xff\xff\xff\x2f\x00\xff\xff\x38\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x1b\x00\xff\xff\xff\xff\x3e\x00\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\x43\x00\xff\xff\x4c\x00\x4d\x00\xff\xff\x4f\x00\xff\xff\x2f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\x53\x00\x5d\x00\xff\xff\xff\xff\x5e\x00\x61\x00\x01\x00\x63\x00\x64\x00\xff\xff\x64\x00\x43\x00\x66\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x0d\x00\xff\xff\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\x53\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\xff\xff\xff\xff\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x30\x00\xff\xff\x32\x00\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\xff\xff\x01\x00\x3a\x00\x03\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\x67\x00\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\x01\x00\x3a\x00\x03\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\x01\x00\x3a\x00\x03\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\x01\x00\x3a\x00\x03\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\x01\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\x01\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\x01\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\x01\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\x01\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\x01\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\x01\x00\x3a\x00\x03\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\x01\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\x01\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\x01\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\x01\x00\x3a\x00\x03\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\xff\xff\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\xff\xff\x01\x00\x3a\x00\x03\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\xff\xff\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\xff\xff\x01\x00\x3a\x00\x03\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x30\x00\xff\xff\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x01\x00\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\x0d\x00\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x30\x00\xff\xff\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x01\x00\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\x0d\x00\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\x30\x00\xff\xff\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\xff\xff\x01\x00\x3a\x00\x03\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\x0d\x00\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\x35\x00\x01\x00\x37\x00\x38\x00\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\x0d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\x4f\x00\xff\xff\x51\x00\x52\x00\x1e\x00\xff\xff\x01\x00\x56\x00\x03\x00\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\x0d\x00\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x5d\x00\xff\xff\xff\xff\x35\x00\x61\x00\x37\x00\x63\x00\x64\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x01\x00\x41\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\x0d\x00\x78\x00\x79\x00\xff\xff\x31\x00\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x56\x00\x38\x00\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\x01\x00\x4c\x00\x4d\x00\x0d\x00\x4f\x00\x01\x00\x31\x00\x03\x00\xff\xff\xff\xff\xff\xff\xff\xff\x0d\x00\x38\x00\x5d\x00\xff\xff\xff\xff\x0d\x00\x61\x00\x5e\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x64\x00\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\x4f\x00\xff\xff\xff\xff\x31\x00\x01\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\x31\x00\xff\xff\xff\xff\x5e\x00\x0d\x00\x31\x00\xff\xff\x38\x00\xff\xff\x64\x00\x65\x00\x66\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\x4f\x00\xff\xff\xff\xff\xff\xff\x01\x00\xff\xff\x4c\x00\x4d\x00\x01\x00\x4f\x00\x03\x00\x4c\x00\x4d\x00\xff\xff\x4f\x00\x5e\x00\x0d\x00\xff\xff\xff\xff\x31\x00\x0d\x00\x64\x00\x65\x00\x66\x00\x5e\x00\xff\xff\x38\x00\xff\xff\xff\xff\x5e\x00\x64\x00\x65\x00\x66\x00\xff\xff\x5d\x00\x64\x00\xff\xff\x66\x00\x61\x00\xff\xff\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x4c\x00\x4d\x00\xff\xff\x4f\x00\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\xff\xff\x38\x00\xff\xff\x78\x00\x79\x00\x38\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\x4f\x00\x4c\x00\x4d\x00\xff\xff\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5e\x00\xff\xff\xff\xff\xff\xff\x5e\x00\xff\xff\x64\x00\x65\x00\x66\x00\xff\xff\x64\x00\xff\xff\x66\x00\x1e\x00\x1f\x00\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\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\x45\x00\x46\x00\x47\x00\xff\xff\xff\xff\xff\xff\x4b\x00\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\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\x2f\x00\xff\xff\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x36\x00\x45\x00\x46\x00\x47\x00\x3a\x00\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x45\x00\x46\x00\x47\x00\xff\xff\xff\xff\xff\xff\x4b\x00\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x1e\x00\x1f\x00\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\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\x7e\x00\x7f\x00\x3a\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\xff\xff\x45\x00\x46\x00\x47\x00\xff\xff\x7d\x00\x7e\x00\x7f\x00\xff\xff\xff\xff\xff\xff\x4b\x00\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x1e\x00\x1f\x00\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\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x36\x00\x04\x00\xff\xff\x61\x00\x3a\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x7e\x00\x7f\x00\xff\xff\x7d\x00\x7e\x00\x7f\x00\xff\xff\xff\xff\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\xff\xff\x78\x00\x79\x00\xff\xff\x1e\x00\x1f\x00\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\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\x3b\x00\x3a\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x4b\x00\x4c\x00\x4d\x00\xff\xff\xff\xff\xff\xff\x1e\x00\x1f\x00\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\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\x20\x00\x3a\x00\x22\x00\x23\x00\x24\x00\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\x2f\x00\xff\xff\x7d\x00\x7e\x00\x7f\x00\x4d\x00\xff\xff\x36\x00\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\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\xff\xff\x26\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x3a\x00\xff\xff\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\x7d\x00\x7e\x00\x7f\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x7f\x00\x21\x00\x22\x00\x23\x00\x24\x00\xff\xff\x26\x00\x21\x00\x22\x00\x23\x00\x24\x00\xff\xff\x26\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\x2f\x00\x36\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\x3f\x00\x40\x00\x7d\x00\x7e\x00\x7f\x00\xff\xff\x45\x00\x46\x00\x47\x00\x7e\x00\x7f\x00\xff\xff\x45\x00\x46\x00\x47\x00\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\xff\xff\x21\x00\x22\x00\x23\x00\x24\x00\xff\xff\x26\x00\x21\x00\x22\x00\x23\x00\x24\x00\x04\x00\x26\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\x2f\x00\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\x39\x00\xff\xff\xff\xff\xff\xff\x7f\x00\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\x7f\x00\x44\x00\x45\x00\x46\x00\x47\x00\x21\x00\x22\x00\x23\x00\x24\x00\xff\xff\x26\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x3b\x00\x36\x00\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\xff\xff\x45\x00\x46\x00\x47\x00\x7e\x00\x7f\x00\xff\xff\x25\x00\x26\x00\xff\xff\x28\x00\x7f\x00\x2a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x26\x00\x36\x00\x28\x00\xff\xff\x2a\x00\x3a\x00\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x36\x00\xff\xff\xff\xff\x61\x00\x3a\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\x4f\x00\x7f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x7e\x00\x7f\x00\xff\xff\xff\xff\xff\xff\x5d\x00\x4f\x00\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x25\x00\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\x7d\x00\x7e\x00\x7f\x00\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\xff\xff\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x26\x00\xff\xff\x28\x00\x4f\x00\x2a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x5d\x00\xff\xff\xff\xff\x3a\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\x4f\x00\xff\xff\xff\xff\x78\x00\x79\x00\x7e\x00\x7f\x00\xff\xff\x7d\x00\x7e\x00\x7f\x00\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x25\x00\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\xff\xff\xff\xff\x3a\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\xff\xff\x45\x00\x46\x00\x47\x00\xff\xff\x49\x00\x4a\x00\xff\xff\xff\xff\xff\xff\xff\xff\x25\x00\x26\x00\xff\xff\x28\x00\x4f\x00\x2a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x5d\x00\xff\xff\xff\xff\x3a\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\x4f\x00\xff\xff\xff\xff\x78\x00\x79\x00\x7e\x00\x7f\x00\xff\xff\x7d\x00\x7e\x00\x7f\x00\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x25\x00\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\x25\x00\x26\x00\x3a\x00\x28\x00\xff\xff\x2a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\xff\xff\x25\x00\x26\x00\x3a\x00\x28\x00\x4f\x00\x2a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x36\x00\x5d\x00\xff\xff\xff\xff\x3a\x00\x61\x00\x4f\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\x5e\x00\x5f\x00\xff\xff\xff\xff\x4f\x00\xff\xff\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\xff\xff\xff\xff\x25\x00\x26\x00\xff\xff\x28\x00\xff\xff\x2a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x36\x00\xff\xff\x25\x00\x26\x00\x3a\x00\x28\x00\x39\x00\x2a\x00\xff\xff\x2c\x00\x2d\x00\x2e\x00\x2f\x00\xff\xff\xff\xff\xff\xff\x7d\x00\x7e\x00\x7f\x00\x36\x00\x34\x00\xff\xff\xff\xff\x3a\x00\xff\xff\x4f\x00\xff\xff\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x4f\x00\xff\xff\x61\x00\xff\xff\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\x39\x00\xff\xff\xff\xff\xff\xff\x76\x00\xff\xff\x78\x00\x79\x00\x7d\x00\x7e\x00\x7f\x00\x7d\x00\x7e\x00\x7f\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\x7d\x00\x7e\x00\x7f\x00\x3a\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\x39\x00\x76\x00\xff\xff\x78\x00\x79\x00\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\x7f\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\xff\xff\xff\xff\xff\xff\xff\xff\x76\x00\xff\xff\x78\x00\x79\x00\xff\xff\xff\xff\x5d\x00\x7d\x00\x7e\x00\x7f\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\xff\xff\x45\x00\x46\x00\x47\x00\x5d\x00\x49\x00\x4a\x00\x2b\x00\x61\x00\x2d\x00\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x35\x00\xff\xff\x37\x00\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\x78\x00\x79\x00\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\x7e\x00\x7f\x00\x2b\x00\xff\xff\x2d\x00\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\xff\xff\xff\xff\x35\x00\xff\xff\x37\x00\xff\xff\xff\xff\x3a\x00\xff\xff\x5d\x00\x3d\x00\xff\xff\x3f\x00\x61\x00\x41\x00\x63\x00\x64\x00\x65\x00\x66\x00\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x56\x00\x78\x00\x79\x00\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x2b\x00\xff\xff\x65\x00\x66\x00\x67\x00\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\xff\xff\xff\xff\xff\xff\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\x2b\x00\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\x31\x00\xff\xff\x33\x00\xff\xff\x54\x00\xff\xff\xff\xff\x38\x00\x58\x00\xff\xff\x5a\x00\xff\xff\xff\xff\xff\xff\x5e\x00\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x66\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x54\x00\xff\xff\xff\xff\xff\xff\x58\x00\x2c\x00\x5a\x00\xff\xff\xff\xff\x30\x00\x5e\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\xff\xff\x66\x00\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\x2e\x00\xff\xff\x30\x00\x65\x00\x66\x00\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x64\x00\x65\x00\x66\x00\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x30\x00\x65\x00\x66\x00\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\x55\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\x35\x00\xff\xff\x37\x00\x38\x00\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\xff\xff\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\xff\xff\x5c\x00\x5d\x00\x5e\x00\xff\xff\x30\x00\xff\xff\xff\xff\x33\x00\xff\xff\x35\x00\x66\x00\x37\x00\xff\xff\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\x47\x00\x48\x00\x49\x00\xff\xff\x4b\x00\xff\xff\xff\xff\x4e\x00\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\x30\x00\x31\x00\xff\xff\x33\x00\xff\xff\xff\xff\x65\x00\x66\x00\x38\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x40\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x46\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4b\x00\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\xff\xff\xff\xff\xff\xff\x54\x00\xff\xff\xff\xff\xff\xff\x58\x00\x31\x00\x5a\x00\x33\x00\xff\xff\x35\x00\x5e\x00\x37\x00\x38\x00\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\x66\x00\xff\xff\x40\x00\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\x54\x00\xff\xff\xff\xff\xff\xff\x58\x00\xff\xff\x5a\x00\x31\x00\x5c\x00\x5d\x00\x5e\x00\x35\x00\xff\xff\x37\x00\x38\x00\xff\xff\x3a\x00\xff\xff\x66\x00\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\x65\x00\x66\x00\x35\x00\xff\xff\x37\x00\x38\x00\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\x65\x00\x66\x00\x35\x00\xff\xff\x37\x00\x38\x00\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\x65\x00\x66\x00\x35\x00\xff\xff\x37\x00\x38\x00\xff\xff\x3a\x00\xff\xff\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\x4c\x00\x4d\x00\xff\xff\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\x5e\x00\xff\xff\xff\xff\xff\xff\xff\xff\x31\x00\xff\xff\x65\x00\x66\x00\x35\x00\xff\xff\x37\x00\x38\x00\xff\xff\x3a\x00\xff\xff\x31\x00\x3d\x00\x33\x00\xff\xff\xff\xff\x41\x00\xff\xff\x38\x00\xff\xff\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\x40\x00\x4c\x00\x4d\x00\xff\xff\x4f\x00\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\xff\xff\x4c\x00\x4d\x00\x4e\x00\x4f\x00\xff\xff\x5c\x00\x5d\x00\x5e\x00\x54\x00\xff\xff\xff\xff\x35\x00\x58\x00\x37\x00\x5a\x00\x66\x00\x3a\x00\xff\xff\x5e\x00\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\x66\x00\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x67\x00\x35\x00\xff\xff\x37\x00\xff\xff\xff\xff\x3a\x00\x3b\x00\xff\xff\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\xff\xff\x35\x00\xff\xff\x37\x00\xff\xff\xff\xff\x3a\x00\x65\x00\x66\x00\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\xff\xff\x35\x00\xff\xff\x37\x00\xff\xff\xff\xff\x3a\x00\x65\x00\x66\x00\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\xff\xff\x35\x00\xff\xff\x37\x00\xff\xff\xff\xff\x3a\x00\x65\x00\x66\x00\x3d\x00\xff\xff\x3f\x00\xff\xff\x41\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x47\x00\x48\x00\x49\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x51\x00\x52\x00\xff\xff\xff\xff\xff\xff\x56\x00\xff\xff\xff\xff\x59\x00\xff\xff\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x65\x00\x66\x00\x56\x00\xff\xff\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\xff\xff\x56\x00\x7c\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\x56\x00\xff\xff\x7c\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x78\x00\x79\x00\xff\xff\x61\x00\x7c\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x56\x00\x77\x00\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\x82\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\xff\xff\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\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\xff\xff\x56\x00\xff\xff\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\x76\x00\xff\xff\x78\x00\x79\x00\x5d\x00\xff\xff\xff\xff\xff\xff\x61\x00\x7f\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\xff\xff\x73\x00\xff\xff\x75\x00\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\x75\x00\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\x75\x00\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\x75\x00\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\x75\x00\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\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\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\x74\x00\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\x73\x00\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x77\x00\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x77\x00\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x77\x00\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x77\x00\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x77\x00\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x77\x00\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x77\x00\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x77\x00\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x77\x00\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x77\x00\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x77\x00\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\x77\x00\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\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\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\x6e\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x5d\x00\xff\xff\x78\x00\x79\x00\x61\x00\xff\xff\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\xff\xff\xff\xff\x78\x00\x79\x00\xff\xff\xff\xff\xff\xff\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x3e\x00\x3f\x00\x40\x00\xff\xff\xff\xff\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x34\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\x3b\x00\xff\xff\x3d\x00\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\xff\xff\x44\x00\x45\x00\x46\x00\x47\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00\x26\x00\x27\x00\x28\x00\x29\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"#--happyTable :: HappyAddr-happyTable = HappyA# "\x00\x00\x91\x00\x4d\x00\x4e\x00\x7c\x03\x0a\x03\xf9\x02\xf1\x01\xf0\x02\x86\x01\xb3\x01\xa8\x01\xe5\xff\x50\x03\x51\x03\x3c\x02\x5a\x03\x07\x01\x97\x01\xef\x02\x0e\x02\xf7\x02\x6e\x00\xe5\x00\x4f\x00\x87\x01\x50\x00\x3d\x02\x51\x00\x52\x00\x53\x00\x0e\x02\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\x8d\x03\x33\x03\x34\x03\xfe\x00\xf2\x01\x81\x01\x63\x00\x08\x01\xad\x03\x82\x01\x64\x00\x5b\x03\xff\x00\x4c\x00\x4d\x01\x4d\x00\x4e\x00\xa3\x03\xc3\x00\xcc\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x8f\x03\xf0\x02\x8f\x00\x8f\x00\x98\x03\xa8\x01\xa7\x00\x32\x03\x33\x03\x34\x03\x4f\x00\xa4\x03\x50\x00\x0e\x02\x51\x00\x52\x00\x53\x00\xe5\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\x8d\x00\xa9\x01\x8f\x00\x8d\x00\xa9\x01\x8f\x00\x63\x00\x8d\x00\xe6\x00\x8f\x00\x64\x00\x8d\x00\xe6\x00\x8f\x00\x4c\x00\x4d\x00\x4e\x00\x6c\x00\x6d\x00\x6e\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x37\x03\xc4\x00\xcd\x00\xff\x00\x4c\x00\x3c\x02\x99\x03\x4a\x03\x93\x02\x77\x03\x4f\x00\x28\xfe\x50\x00\x35\x03\x51\x00\x52\x00\x53\x00\x3d\x02\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\xb7\x00\x9d\x00\x67\x00\x00\x02\x3c\x02\x35\x03\x63\x00\x8d\x00\xa9\x01\x8f\x00\x64\x00\x8d\x00\xa9\x01\x8f\x00\x35\x03\xa5\x03\x3d\x02\x6c\x00\x6d\x00\x6e\x00\x65\x00\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x9e\x02\x31\x02\xb8\x00\x55\x00\x56\x00\x57\x00\xa3\x01\xb9\x00\xa0\x03\x1d\x02\x9e\x01\xb7\x00\xb7\x00\xbb\x00\xba\x00\x61\x00\x62\x00\xa8\x01\xe5\x00\x77\x03\xac\x03\x1e\x02\xdc\x01\x63\x00\xaf\x01\xb6\x00\xbb\x00\xb7\x00\x9f\x02\xe5\x00\x7f\x03\xa0\x00\x6e\x00\x95\x01\xdd\x01\x61\x03\x2b\x00\xbc\x00\x66\x00\x67\x00\x68\x00\xbd\x00\x6a\x00\x6b\x00\x8d\x00\xe6\x00\x8f\x00\x8f\x00\x8f\x00\x8f\x00\x6c\x00\x6d\x00\x6e\x00\xb0\x01\x55\x00\x56\x00\x57\x00\x23\x02\xb1\x01\xdc\x01\xad\x03\x63\x03\xf6\x02\xf6\x01\x46\x03\xb2\x01\x61\x00\x62\x00\x3c\x02\xe6\x00\x80\x03\xdd\x01\xdc\x01\xdc\x01\x63\x00\x3c\x02\x8d\x00\xb3\x01\x8f\x00\x77\x03\x3d\x02\xdd\x02\x98\x02\x6e\x00\xdd\x01\xdd\x01\x70\x00\x3d\x02\xb4\x01\x66\x00\x67\x00\x68\x00\xb5\x01\x6a\x00\x6b\x00\xbe\x00\x6e\x00\xe7\x00\x71\x00\xc6\x00\xc7\x00\xc8\x00\x1c\x03\xe8\x00\x47\x03\x8d\x00\xe6\x00\x8f\x00\x8d\x00\xe6\x00\xe9\x00\x61\x00\x62\x00\x9c\x03\xa1\x00\x80\x03\x8d\x00\xa9\x01\x8f\x00\x63\x00\x0d\x02\x8d\x00\xc9\x00\xac\x00\x24\x02\x96\x00\x6e\x00\xff\x02\x0d\x02\xcb\x00\xad\x00\xf7\x01\x0e\x02\xea\x00\x66\x00\x67\x00\x68\x00\xeb\x00\x6a\x00\x6b\x00\x0e\x02\x9d\x03\xa7\x00\xa2\x00\x55\x00\x56\x00\x57\x00\xa7\x00\xa3\x00\x25\x03\xae\x00\xaf\x00\xcc\x00\xb0\x00\xa3\x00\xa4\x00\x61\x00\x62\x00\x8d\x00\xa2\x02\x8f\x00\xa4\x00\x61\x00\x62\x00\x63\x00\x3d\x03\xb4\x02\x8d\x00\xb1\x00\x8f\x00\x63\x00\x8d\x00\x8d\x00\x8f\x00\x8d\x00\xe6\x00\x8f\x00\x06\x03\xa5\x00\x66\x00\x67\x00\x68\x00\xa6\x00\x6a\x00\x6b\x00\x8d\x00\x2b\x03\x8f\x00\xb8\x00\x55\x00\x56\x00\x57\x00\xec\x00\xb9\x00\xb0\x01\x55\x00\x56\x00\x57\x00\x95\x01\xb1\x01\xba\x00\x61\x00\x62\x00\xf5\x01\xf6\x01\x69\x03\xb2\x01\x61\x00\x62\x00\x63\x00\xa5\x02\xc2\x00\xbb\x00\xd2\x00\x08\x03\x63\x00\x2c\x03\xd3\x00\xb3\x01\x8d\x00\xe6\x00\xfe\x02\xcd\x00\xbc\x00\x66\x00\x67\x00\xe1\x01\x8d\x00\xe6\x00\xb4\x01\x66\x00\x67\x00\xe1\x01\x6a\x03\xc3\x00\xe4\x00\xd4\x00\xa7\x00\xe7\x00\xd3\x00\xc6\x00\xc7\x00\xc8\x00\xa7\x00\xe8\x00\xf7\x01\xcf\x00\xe5\x00\xc6\x00\xc7\x00\xc8\x00\xe9\x00\x61\x00\x62\x00\x9d\x03\x33\x00\x34\x00\x78\x02\xd4\x00\x10\x02\x63\x00\xff\x02\x3a\x03\xc9\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xff\x00\x4c\x00\xc9\x00\xf7\x01\xae\x01\xea\x00\x66\x00\x67\x00\xe1\x01\xb5\x02\xcb\x00\x3b\x03\xa3\x02\x6e\x00\x5d\x02\x33\x00\x34\x00\x3c\x03\xa9\x02\xa7\x00\x5f\x02\x60\x02\x61\x02\x3e\x03\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x5c\x03\x11\x02\x4d\x03\x5d\x03\xcc\x00\x62\x02\xc4\x00\x50\x00\xd5\x00\x51\x00\x63\x02\x64\x02\x95\x01\x54\x00\x55\x00\x56\x00\x57\x00\x65\x02\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\xbb\x00\x78\x02\xd5\x00\xff\x00\x4c\x00\x9a\x01\x63\x00\xec\x00\x8d\x00\xe6\x00\x66\x02\xe2\x01\x66\x00\x67\x00\xe1\x01\xd0\x00\x06\x00\xd9\x01\x67\x00\xda\x01\x07\x00\xb6\x02\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\x95\x01\x3a\x00\xe0\x01\x66\x00\x67\x00\xe1\x01\x18\x00\x19\x00\x06\x00\xcd\x00\x3b\x00\xa8\x02\x07\x00\xc4\x02\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\xd0\x02\x3a\x00\xac\x02\xe4\x01\x6e\x00\xb9\x01\x18\x00\x19\x00\x03\x02\xa7\x00\x3b\x00\x6c\x00\xd4\x01\x6e\x00\x5d\x02\x33\x00\x34\x00\xea\x01\x5e\x02\x7f\x02\x5f\x02\x60\x02\x61\x02\xfb\x02\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xd9\x00\xad\x02\x2d\x02\xa7\x00\xd7\x01\x62\x02\x32\x02\x50\x00\x95\x01\x51\x00\x63\x02\x64\x02\x30\x02\x54\x00\x55\x00\x56\x00\x57\x00\x65\x02\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x37\x02\xd6\x00\x80\x02\xc6\x00\xc7\x00\xc8\x00\x63\x00\xd7\x00\x95\x01\x35\x02\x66\x02\x9e\x03\x33\x00\x34\x00\x46\x02\x0b\x03\xff\x00\x4c\x00\x0c\x03\xee\x01\xef\x01\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xc9\x00\xda\x00\x4c\x02\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\x59\x02\xe1\x00\x66\x00\x67\x00\x68\x00\xe2\x00\x6a\x00\x6b\x00\x31\x02\xc5\x00\x06\x00\xc6\x00\xc7\x00\xc8\x00\x07\x00\x1d\x01\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\x94\x01\x3a\x00\x9a\x01\xc9\x00\xaa\x01\x55\x03\x18\x00\x19\x00\x56\x03\x95\x01\x3b\x00\x6c\x00\xd4\x01\x6e\x00\x1e\x01\x59\x00\x75\x01\x1f\x01\xb7\x00\x20\x01\x5a\x02\x21\x01\x60\x00\x61\x00\x62\x00\xb9\x01\xd7\x01\x5b\x02\x76\x01\x93\x01\xd8\x00\x63\x00\x95\x01\x06\x00\x95\x01\x22\x01\x95\x01\x07\x00\x78\x02\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\x4f\x01\x3a\x00\x78\x01\x95\x01\x95\x01\x50\x01\x18\x00\x19\x00\x41\x03\x42\x03\x3b\x00\x97\x01\x43\x03\x99\x01\x99\xfe\xfa\x02\x06\x00\x99\xfe\xfb\x02\xca\x00\x07\x00\x1d\x01\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\xcf\x00\x24\x01\xc6\x00\xc7\x00\xc8\x00\x99\xfe\x18\x00\x19\x00\x90\x00\x05\x00\xd1\x02\x6c\x00\x25\x01\x6e\x00\x1e\x01\x59\x00\x9b\x01\x1f\x01\xa9\x01\x20\x01\xab\x01\x21\x01\x60\x00\x61\x00\x62\x00\xc9\x00\x8d\x02\xac\x01\xcf\x01\x8e\x02\x50\x00\x63\x00\x51\x00\xd0\x01\xd1\x01\x22\x01\x54\x00\x55\x00\x56\x00\x57\x00\xd2\x01\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\xff\x00\x4c\x00\xb3\x01\x53\x03\xb8\x01\x7a\x01\x63\x00\xba\x02\xdd\x00\xde\x00\xd3\x01\x65\x03\x66\x03\xfc\x01\x66\x00\x67\x00\xe1\x01\x1f\x03\x20\x03\x06\x00\x9f\x03\x96\x00\x6e\x00\x07\x00\x1d\x01\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\xba\x01\x24\x01\xa3\x01\xde\x00\xd0\x00\xd6\x01\x18\x00\x19\x00\x9d\x00\x67\x00\x00\x02\x6c\x00\x25\x01\x6e\x00\x1e\x01\x59\x00\xcd\x01\x1f\x01\xd8\x01\x20\x01\xe7\x01\x21\x01\x60\x00\x61\x00\x62\x00\x4f\x02\x66\x00\x67\x00\xe1\x01\xa7\x00\xbb\x00\x63\x00\xa7\x00\x21\x03\x22\x03\x22\x01\xb1\x00\x6c\x00\xd4\x01\x6e\x00\xe8\x01\xe2\x01\x66\x00\x67\x00\x68\x00\xaa\x00\xe3\x01\x6b\x00\xb0\x01\x55\x00\x56\x00\x57\x00\xfc\x00\xb1\x01\x11\x02\x3a\x03\x7c\x01\x5d\x03\xb3\x00\xb4\x00\xb2\x01\x61\x00\x62\x00\xff\x00\x4c\x00\xa6\x01\x6e\x00\x11\x02\xab\x02\x63\x00\x06\x00\xf6\x00\xb3\x01\x09\x01\x07\x00\x1d\x01\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\x13\x01\x24\x01\x30\x01\x31\x01\x32\x01\x33\x01\x18\x00\x19\x00\xe4\x01\x6e\x00\x05\x02\x6c\x00\x25\x01\x6e\x00\x1e\x01\x59\x00\x1a\x01\x1f\x01\x3b\x01\x20\x01\x05\x00\x21\x01\x60\x00\x61\x00\x62\x00\x3d\x02\xb3\x00\xb4\x00\xcf\x01\x2b\x00\x50\x00\x63\x00\x51\x00\xd0\x01\xd1\x01\x22\x01\x54\x00\x55\x00\x56\x00\x57\x00\xd2\x01\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\xa7\x00\xaf\x03\xb3\x01\xff\x00\x4c\x00\x23\x01\x63\x00\x9d\x00\x67\x00\x9e\x00\xd3\x01\x9f\x00\x6b\x00\xfc\x01\x66\x00\x67\x00\xe1\x01\x2e\x01\x2f\x01\x06\x00\x71\x03\x96\x00\x6e\x00\x07\x00\xb0\x03\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\xb1\x03\x24\x01\x3a\x02\xde\x00\x34\x01\x35\x01\x18\x00\x19\x00\xd9\x01\x67\x00\xda\x01\x6c\x00\x25\x01\x6e\x00\xa2\x00\x55\x00\x56\x00\x57\x00\x2b\x00\xa3\x00\x36\x01\x37\x01\x2e\x02\xa7\x03\xa0\x00\x6e\x00\xa4\x00\x61\x00\x62\x00\x1d\x02\xa8\x03\xb7\x00\xa7\x00\xff\x00\x4c\x00\x63\x00\xa9\x03\x6c\x00\xd4\x01\x6e\x00\xcf\x01\x1e\x02\x50\x00\x98\x03\x51\x00\xd0\x01\xd1\x01\x2b\x00\x54\x00\x55\x00\x56\x00\x57\x00\xd2\x01\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x38\x02\xf3\x00\xf4\x00\xa7\x00\xf5\x00\xf6\x00\x63\x00\x48\x01\x8f\x00\x49\x01\xd3\x01\x4a\x01\x4b\x01\x9b\x03\x27\xfe\x4c\x01\x4d\x01\x87\x03\xcf\x01\x8c\x03\x50\x00\x27\xfe\x51\x00\xd0\x01\xd1\x01\x8d\x03\x54\x00\x55\x00\x56\x00\x57\x00\xd2\x01\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x27\xfe\x27\xfe\xff\x01\x27\xfe\xa7\x00\xbb\x00\x63\x00\x72\x03\x96\x00\x6e\x00\xd3\x01\x8f\x00\x9a\x00\x66\x00\x67\x00\xe1\x01\xff\x00\x4c\x00\x27\xfe\x28\x01\x29\x01\x47\x02\x2e\x01\x2f\x01\x8d\x00\xe6\x00\x8f\x00\x8f\x03\x96\x02\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\x34\x01\x35\x01\x6c\x00\xd4\x01\x6e\x00\xcf\x01\x92\x03\x50\x00\x93\x03\x51\x00\xd0\x01\xd1\x01\x94\x03\x54\x00\x55\x00\x56\x00\x57\x00\xd2\x01\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x4d\x02\x73\x03\x96\x00\x6e\x00\x3e\x00\x67\x03\x63\x00\x6c\x00\x9c\x00\x6e\x00\xd3\x01\x97\x02\x98\x02\x6e\x00\x68\x03\x6c\x00\xd4\x01\x6e\x00\xcf\x01\x71\x03\x50\x00\x6b\x03\x51\x00\xd0\x01\xd1\x01\x77\x03\x54\x00\x55\x00\x56\x00\x57\x00\xd2\x01\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x8f\x00\x6d\x03\x33\x00\x34\x00\x36\x01\x37\x01\x63\x00\x12\x03\x96\x00\x6e\x00\xd3\x01\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x79\x03\x8f\x00\xb3\x01\x7b\x03\x7e\x03\xce\x01\x01\x03\xba\x02\xdd\x00\xde\x00\xbb\x02\xe0\x00\x06\x03\xfc\x01\x66\x00\x67\x00\xe1\x01\x97\x01\x11\x03\xac\x00\x6c\x00\xd4\x01\x6e\x00\xcf\x01\x12\x03\x50\x00\xad\x00\x51\x00\xd0\x01\xd1\x01\x15\x03\x54\x00\x55\x00\x56\x00\x57\x00\xd2\x01\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\xae\x00\xaf\x00\x8f\x00\xb0\x00\x16\x03\x17\x03\x63\x00\x13\x03\x96\x00\x6e\x00\xd3\x01\x31\x03\x33\x00\x34\x00\x18\x03\x6c\x00\xd4\x01\x6e\x00\xb1\x00\x2b\x03\x05\x02\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xa7\x00\x06\x00\x26\x03\xb3\x00\xb4\x00\x07\x00\x2e\x03\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\x2f\x03\x3a\x00\xb1\x02\x33\x00\x34\x00\x30\x03\x18\x00\x19\x00\x31\x03\x3e\x00\x3b\x00\x38\x03\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x39\x03\x41\x02\xdd\x00\xde\x00\x3d\x02\xb3\x00\xb4\x00\xe0\x01\x66\x00\x67\x00\xe1\x01\x40\x03\x6c\x00\xd4\x01\x6e\x00\xb2\x02\x33\x00\x34\x00\x44\x03\x95\x02\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x48\x03\xb3\x00\xb4\x00\x45\x03\x06\x00\x3d\x02\xb3\x00\xb4\x00\x07\x00\x4b\x03\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\x48\x03\x3a\x00\xb3\x02\x33\x00\x34\x00\x4c\x03\x18\x00\x19\x00\x50\x03\x94\x02\x3b\x00\xa7\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x95\x02\x06\x00\xbe\x02\xb3\x00\xb4\x00\x07\x00\x7b\x02\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\x29\xfe\x3a\x00\xbf\x02\xb3\x00\xb4\x00\xa8\x02\x18\x00\x19\x00\xcd\x01\x06\x00\x3b\x00\xae\x02\x97\x01\x07\x00\xb8\x02\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\x05\x02\x3a\x00\x58\x02\x33\x00\x34\x00\x2b\x00\x18\x00\x19\x00\xb9\x02\xc1\x02\x3b\x00\xc3\x02\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x3d\x02\xb3\x00\xb4\x00\xcf\x02\x06\x00\xd4\x02\x96\x00\x6e\x00\x07\x00\xd0\x02\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\xd8\x02\x3a\x00\x69\x02\x33\x00\x34\x00\xd9\x02\x18\x00\x19\x00\xdb\x02\x89\x03\x3b\x00\xdc\x02\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\x8f\x00\x97\x01\xe0\x01\x66\x00\x67\x00\xe1\x01\xed\x02\x1a\x03\x66\x00\x67\x00\xe1\x01\x87\x01\x33\x00\x34\x00\x95\x02\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\xf6\x02\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xd9\x02\x96\x00\x6e\x00\xf2\x02\xf3\x02\x06\x00\xde\x02\x96\x00\x6e\x00\x07\x00\x2b\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\xfd\x02\x3a\x00\x00\x01\x33\x00\x34\x00\xf3\x01\x18\x00\x19\x00\xf4\x01\xa7\x00\x3b\x00\xf5\x01\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xdf\x02\x96\x00\x6e\x00\xfa\x01\x06\x00\xe0\x02\x96\x00\x6e\x00\x07\x00\xf9\x01\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\xfb\x01\x3a\x00\xe4\x02\x96\x00\x6e\x00\x06\x00\x18\x00\x19\x00\xfc\x01\x07\x00\x3b\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\x03\x02\x3a\x00\x32\x00\x33\x00\x34\x00\x05\x02\x18\x00\x19\x00\x12\x02\x13\x02\x3b\x00\x8f\x00\x35\x00\x36\x00\x37\x00\x38\x00\x39\x00\xe5\x02\x96\x00\x6e\x00\x29\x02\x05\x02\x06\x00\xe9\x02\x96\x00\x6e\x00\x07\x00\x30\x02\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\x3e\x00\x3a\x00\xa1\x02\x61\x02\x37\x02\x05\x02\x18\x00\x19\x00\x3f\x02\x40\x02\x3b\x00\xf4\x02\xb3\x00\xb4\x00\x4b\x02\x62\x02\x05\x02\x50\x00\x8f\x00\x51\x00\x63\x02\x64\x02\x05\x02\x54\x00\x55\x00\x56\x00\x57\x00\x65\x02\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x89\x01\xb2\x00\xb3\x00\xb4\x00\x51\x02\xac\x00\x63\x00\x54\x02\x52\x02\x06\x00\x66\x02\x57\x02\xad\x00\x07\x00\x53\x02\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\x55\x02\x3a\x00\xae\x00\xaf\x00\xcd\x01\xb0\x00\x18\x00\x19\x00\x2b\x00\x5d\x02\x3b\x00\xfd\x01\xb3\x00\xb4\x00\x74\x03\x06\x00\x6b\x02\xb9\x00\x6e\x02\x07\x00\xb1\x00\x03\x01\x09\x00\x12\x01\xba\x00\x61\x00\x62\x00\x6c\x02\x8f\x00\x1a\x03\x66\x00\x67\x00\xe1\x01\x63\x00\x6d\x02\x6f\x02\xbb\x00\x70\x02\x70\x00\xfe\x01\xb3\x00\xb4\x00\x18\x00\x19\x00\xb2\x00\xb3\x00\xb4\x00\x6c\x00\xd4\x01\x6e\x00\x71\x00\x71\x02\x25\x02\x96\x00\x6e\x00\x06\x00\x3d\x02\xb3\x00\xb4\x00\x07\x00\x7e\x02\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\x7c\x02\xf9\x00\x2b\x01\x8a\x01\x4f\x01\x2a\x01\x18\x00\x19\x00\x2c\x01\x72\x00\x8f\x00\x73\x00\x74\x00\x2d\x01\x75\x00\x81\x02\x76\x00\x6d\x01\x6e\x01\x77\x00\x78\x01\x7c\x01\x78\x00\x8f\x00\x79\x00\x7a\x00\x7b\x00\x84\x01\x1c\x03\x1d\x03\x6e\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x85\x01\x80\x00\x8d\x01\x89\x01\x81\x00\x8f\x00\x8f\x01\x82\x00\x83\x00\x99\x01\x84\x00\x85\x00\x86\x00\x3e\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x76\x01\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\x8d\x00\x8e\x00\x8f\x00\x90\x00\x3e\x00\x11\x01\x4b\x02\x96\x00\x6e\x00\x97\x01\xfb\xff\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xe5\xff\xe7\x00\x23\x00\xc6\x00\xc7\x00\xc8\x00\x3e\x00\xe8\x00\x97\x01\x99\x00\x80\x01\x96\x00\x6e\x00\x24\x00\xe9\x00\x61\x00\x62\x00\xaf\x01\x3e\x00\x9a\x00\x66\x00\x67\x00\x68\x00\x63\x00\x9b\x00\x6b\x00\xc9\x00\xa3\x00\x91\x01\x96\x00\x6e\x00\xb7\x00\xd6\x01\x25\x00\xa4\x00\x61\x00\x62\x00\x0e\x02\x66\x00\x67\x00\xe1\x01\x3e\x00\x19\x03\x63\x00\xde\x01\x06\x00\x92\x01\x96\x00\x6e\x00\x07\x00\xe0\x01\xa1\x03\x09\x00\x26\x00\xee\x01\x1b\x00\x2b\x00\x1a\x03\x66\x00\x67\x00\xe1\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x8f\x00\x27\x00\x23\x00\xff\xff\x18\x00\x19\x00\x93\x00\xa2\x03\x6c\x00\x9c\x00\x6e\x00\x94\x00\x95\x00\x24\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x8f\x00\x98\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x84\x03\xec\x00\x3d\x00\x3e\x00\x99\x00\x8f\x00\x25\x00\x72\x00\x28\xfe\x3f\x00\x74\x00\x40\x00\x75\x00\x41\x00\x76\x00\x28\xfe\x42\x00\x77\x00\x43\x00\x44\x00\x78\x00\xa7\x00\x79\x00\x7a\x00\x7b\x00\x45\x00\x26\x00\x46\x00\x47\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\xff\xff\x80\x00\x28\xfe\x28\xfe\x81\x00\x28\xfe\x48\x00\x82\x00\x83\x00\x27\x00\x84\x00\x85\x00\x86\x00\x49\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x28\xfe\x4a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x4b\x00\x68\x02\x8f\x00\x69\x02\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x1b\x00\x9c\x01\xb3\x00\xb4\x00\x3e\x00\x2a\xfe\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xf8\x00\x06\x00\x23\x00\xf9\x00\xfc\x00\x07\x00\x00\x01\x81\x03\x09\x00\xc5\x02\x59\x00\x02\x01\x1f\x01\x24\x00\x20\x01\x0b\x01\x21\x01\x60\x00\x61\x00\x62\x00\x03\x01\x18\x03\xc7\x02\xc8\x02\xff\xff\x07\x01\x63\x00\x0c\x01\x18\x00\x19\x00\xc9\x02\x82\x03\x0d\x01\x25\x00\xd7\xff\xd7\xff\x0e\x01\xd7\xff\x0f\x01\xd7\xff\x15\x01\xd7\xff\xd7\xff\x18\x01\xd7\xff\xff\xff\x27\x01\xd7\xff\x2a\x01\xd7\xff\xd7\xff\xd7\xff\x2b\x01\x26\x00\x2c\x01\x2d\x01\xd7\xff\xd7\xff\xd7\xff\xd7\xff\x00\x00\xd7\xff\xd7\xff\xd7\xff\xd7\xff\xd7\xff\x00\x00\xd7\xff\xd7\xff\x27\x00\xd7\xff\xd7\xff\xd7\xff\x00\x00\xd7\xff\xd7\xff\xd7\xff\xd7\xff\xd7\xff\xd7\xff\xd7\xff\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\xd7\xff\xd7\xff\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x1b\x00\x00\x00\x6c\x00\xca\x02\x6e\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x06\x00\x00\x00\x23\x00\x00\x00\x07\x00\x00\x00\x03\x01\x09\x00\x79\x02\xc5\x02\x59\x00\x00\x00\x1f\x01\x24\x00\x20\x01\x00\x00\x21\x01\x60\x00\x61\x00\x62\x00\x00\x00\xc6\x02\xc7\x02\xc8\x02\x00\x00\x00\x00\x63\x00\x18\x00\x19\x00\x00\x00\xc9\x02\x00\x00\x00\x00\x25\x00\x72\x00\x00\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x26\x00\x00\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x82\x00\x83\x00\x27\x00\x84\x00\x85\x00\x86\x00\x00\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x8e\x00\x8f\x00\x69\x02\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x1b\x00\x00\x00\x6c\x00\xca\x02\x6e\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\xb2\x00\xb3\x00\xb4\x00\x00\x00\xb1\x01\x95\x00\x96\x00\x6e\x00\x00\x00\x00\x00\x24\x00\xb2\x01\x61\x00\x62\x00\x95\x02\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\x63\x00\x00\x00\x00\x00\xb3\x01\x00\x00\x06\x00\x00\x00\x3e\x00\x00\x00\x07\x00\x25\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x5b\x01\x75\x00\x00\x00\x76\x00\x00\x00\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x00\x00\x7b\x00\x00\x00\x26\x00\x00\x00\x18\x00\x19\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x18\x02\x00\x00\xb7\x00\xa7\x00\x00\x00\x00\x00\x82\x00\x83\x00\x27\x00\x00\x00\x00\x00\x86\x00\x19\x02\x00\x00\x88\x00\x00\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x8e\x00\x8f\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x1b\x00\xa7\x00\xb2\x00\xb3\x00\xb4\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x27\xfe\x23\x00\x00\x00\xc1\x00\x96\x00\x6e\x00\x00\x00\x27\xfe\xc5\x02\x59\x00\x00\x00\x1f\x01\x24\x00\x20\x01\x00\x00\x21\x01\x60\x00\x61\x00\x62\x00\x00\x00\xc6\x02\xc7\x02\xc8\x02\x00\x00\x00\x00\x63\x00\x00\x00\x27\xfe\x27\xfe\xc9\x02\x27\xfe\x00\x00\x25\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x75\x00\x07\x00\x76\x00\x0f\x01\x09\x00\x77\x00\x00\x00\x27\xfe\x78\x00\x00\x00\x79\x00\x00\x00\x7b\x00\x8d\x00\x26\x00\x8f\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x9e\x01\x6f\x03\xb7\x00\x18\x00\x19\x00\x00\x00\x00\x00\x82\x00\x83\x00\x27\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x88\x00\x00\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x8e\x00\x8f\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x1b\x00\x00\x00\x6c\x00\xca\x02\x6e\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x9e\x01\x2a\x03\xb7\x00\x55\x02\x00\x00\x50\x00\x00\x00\x51\x00\xd0\x01\xd1\x01\x24\x00\x54\x00\x55\x00\x56\x00\x57\x00\xd2\x01\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x3d\x00\x3e\x00\x00\x00\x00\x00\x25\x00\x00\x00\x63\x00\x3f\x00\x00\x00\x40\x00\xd3\x01\x41\x00\x00\x00\x00\x00\x42\x00\x00\x00\x43\x00\x44\x00\x9e\x01\xbe\x02\xb7\x00\x1b\x00\x00\x00\x45\x00\x26\x00\x46\x00\x47\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xd7\x02\x00\x00\x00\x00\x23\x00\x48\x00\x00\x00\x00\x00\x27\x00\x9e\x01\xc4\x02\xb7\x00\x49\x00\x00\x00\x00\x00\x24\x00\x9e\x01\xdf\x01\xb7\x00\x00\x00\x4a\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x4b\x00\x4c\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x25\x00\x00\x00\xac\x00\x9e\x01\x02\x02\xb7\x00\x38\x01\x39\x01\x3a\x01\xad\x00\x6c\x00\xd4\x01\x6e\x00\xb6\x00\xdf\x01\xb7\x00\x1b\x00\x38\x01\x39\x01\x3a\x01\x26\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x2d\x02\xae\x00\xaf\x00\x23\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x27\x00\x27\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x8f\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x25\x00\xc1\x02\xac\x00\x00\x00\x00\x00\x9f\x01\xdd\x00\xde\x00\x00\x00\xad\x00\x00\x00\x9a\x00\x66\x00\x67\x00\xe1\x01\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\xc0\x01\xae\x00\xaf\x00\x23\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x27\x00\x28\xfe\x00\x00\x06\x00\x00\x00\x00\x00\x24\x00\x07\x00\x00\x00\x11\x01\x09\x00\xb1\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x8f\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x25\x00\x00\x00\x28\xfe\x00\x00\x18\x00\x19\x00\x6c\x00\xa1\x01\x6e\x00\x28\xfe\x00\x00\xa3\x01\xde\x00\xa4\x01\xe0\x00\xb9\x02\x1b\x00\x9d\x00\x67\x00\x00\x02\x26\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x28\x02\x28\xfe\x28\xfe\x23\x00\x28\xfe\x00\x00\x00\x00\x00\x00\x27\x00\xc1\x01\x00\x00\x06\x00\x00\x00\x00\x00\x24\x00\x07\x00\x00\x00\x15\x01\x09\x00\x28\xfe\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x8f\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x25\x00\x00\x00\x27\xfe\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\xef\x00\x27\xfe\x00\x00\x00\x00\xa6\x01\x6e\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x27\xfe\x27\xfe\x23\x00\x27\xfe\xed\x02\x00\x00\x00\x00\x27\x00\x9f\x01\xdd\x00\xde\x00\xa0\x01\xe0\x00\x24\x00\x9a\x00\x66\x00\x67\x00\xe1\x01\x27\xfe\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x8f\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x25\x00\xf0\x00\xac\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\xad\x00\xe1\x00\x66\x00\x67\x00\x68\x00\xf1\x00\x6a\x00\x6b\x00\x41\x02\xdd\x00\xde\x00\x26\x00\x00\x00\x00\x00\xe0\x01\x66\x00\x67\x00\xe1\x01\x06\x00\x00\x00\xae\x00\xaf\x00\x07\x00\xb0\x00\x03\x01\x09\x00\x56\x01\x27\x00\x00\x00\x6c\x00\xa1\x01\x6e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x18\x00\x19\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x1b\x00\x00\x00\x8d\x02\x00\x00\x00\x00\x8e\x02\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x1b\x00\x00\x00\x8d\x02\x00\x00\x00\x00\x8e\x02\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x06\x00\x23\x00\x8f\x02\x95\x03\x07\x00\x25\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5d\x01\x24\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa2\x00\x55\x00\x56\x00\x57\x00\x26\x00\xa3\x00\x18\x00\x19\x00\x8f\x02\x59\x03\x00\x00\x25\x00\xa4\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x4b\x00\x4c\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x27\x00\x8f\x02\xb3\x00\xb4\x00\x90\x02\x91\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x4b\x00\x4c\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x1b\x00\x00\x00\x8d\x02\x00\x00\x00\x00\x8e\x02\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\xa3\x01\xde\x00\xa4\x01\xe0\x00\x39\x02\xa7\x00\x9d\x00\x67\x00\x00\x02\x00\x00\x24\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x8f\x02\x06\x00\x00\x00\x25\x00\x00\x00\x07\x00\xbb\x00\x03\x01\x09\x00\x57\x01\x24\x00\x42\x02\xdd\x00\xde\x00\x43\x02\xe0\x00\x00\x00\xe2\x01\x66\x00\x67\x00\xe1\x01\x00\x00\x00\x00\x26\x00\x00\x00\xb9\x00\x00\x00\x8f\x02\x18\x00\x19\x00\x25\x00\x00\x00\xba\x00\x61\x00\x62\x00\x00\x00\xa6\x01\x6e\x00\x00\x00\x27\x00\x00\x00\x63\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x4b\x00\x4c\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x27\x00\x6e\x01\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\x00\x00\x00\x00\x44\x02\x6e\x00\x00\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\xdc\x01\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x1b\x00\x05\x03\x00\x00\x00\x00\x00\x00\xdd\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x72\x01\x73\x01\x42\x02\xdd\x00\xde\x00\x24\x00\x1b\x00\x00\x00\xe2\x01\x66\x00\x67\x00\xe1\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\xac\x00\x23\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\xad\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x24\x00\x00\x00\x00\x00\x42\x02\xdd\x00\xde\x00\x00\x00\x00\x00\x00\x00\xe2\x01\x66\x00\x67\x00\xe1\x01\x26\x00\x00\x00\xae\x00\xaf\x00\x8f\x02\xb0\x00\x00\x00\x25\x00\x96\x02\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\x00\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x27\x03\x6e\x00\x71\x02\x00\x00\x00\x00\x8d\x00\x26\x00\x8f\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x27\x00\x00\x00\x72\x02\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\x00\x00\x00\x00\x97\x02\x0e\x03\x6e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\xdc\x01\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdd\x01\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x73\x02\x6e\x00\x00\x00\x00\x00\x24\x00\x1b\x00\x55\x01\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\xac\x00\x23\x00\x7b\x02\x00\x00\x00\x00\x25\x00\x00\x00\xad\x00\x00\x00\x06\x00\x00\x00\x00\x00\x24\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5e\x01\x75\x01\x00\x00\xb7\x00\x00\x00\x26\x00\x00\x00\xae\x00\xaf\x00\x00\x00\xb0\x00\x00\x00\x25\x00\x76\x01\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\x26\x00\x8f\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x27\x00\x27\xfe\x00\x00\xa3\x01\xde\x00\xa4\x01\xe0\x00\x40\x02\x27\xfe\x9d\x00\x67\x00\x00\x02\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x1b\x00\x00\x00\x27\xfe\x27\xfe\x00\x00\x27\xfe\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x1b\x00\x8f\x00\x69\x01\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\xa6\x01\x6e\x00\x23\x00\x00\x00\xbb\x00\x00\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\xe2\x01\x66\x00\x67\x00\xe1\x01\x00\x00\x00\x00\x00\x00\x75\x01\x00\x00\xb7\x00\x00\x00\x26\x00\x96\x02\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\x25\x00\x76\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x27\x00\xac\x00\x00\x00\x97\x02\x0d\x03\x6e\x00\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x11\x01\x00\x00\xae\x00\xaf\x00\x00\x00\xb0\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x06\x00\x00\x00\x00\x00\xb1\x00\x07\x00\x00\x00\x03\x01\x09\x00\x58\x01\x24\x00\x1b\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\xbb\x00\x18\x00\x19\x00\x25\x00\x00\x00\x42\x02\xdd\x00\xde\x00\x43\x02\xe0\x00\x24\x00\xe2\x01\x66\x00\x67\x00\x68\x00\x00\x00\xe3\x01\x6b\x00\x06\x00\x75\x01\x00\x00\xb7\x00\x07\x00\x26\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x5f\x01\x25\x00\x76\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x26\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x27\x00\x28\xfe\x00\x00\x44\x02\x6e\x00\x00\x00\x00\x00\x00\x00\x28\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x17\x01\x00\x00\x28\xfe\x28\xfe\x00\x00\x28\xfe\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x06\x00\x00\x00\x00\x00\x28\xfe\x07\x00\x00\x00\x03\x01\x09\x00\x12\x01\x24\x00\x1a\x01\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x18\x00\x19\x00\x25\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9e\x01\x24\x00\x00\x00\x00\x00\x9f\x01\xdd\x00\xde\x00\xa0\x01\xe0\x00\x00\x00\x9a\x00\x66\x00\x67\x00\x68\x00\x26\x00\x9b\x00\x6b\x00\x1e\x01\x59\x00\x00\x00\x1f\x01\x25\x00\x20\x01\x00\x00\x21\x01\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x27\x00\x00\x00\x00\x00\x06\x00\x63\x00\x00\x00\x00\x00\x07\x00\x22\x01\x18\x01\x09\x00\x26\x00\x00\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x27\x00\x06\x00\x99\x02\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x3a\x01\x6c\x00\xa1\x01\x6e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x5f\x03\x70\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x11\x01\x00\x00\x18\x00\x19\x00\x00\x00\x71\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\x00\x00\x23\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x25\x01\x6e\x00\x00\x00\x24\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x00\x00\xac\x00\x23\x00\x00\x00\x00\x00\x00\x00\x25\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\xe1\x02\x24\x00\x00\x00\x00\x00\x9f\x01\xdd\x00\xde\x00\x00\x00\x00\x00\x00\x00\x9a\x00\x66\x00\x67\x00\xe1\x01\x26\x00\x00\x00\xae\x00\xaf\x00\x00\x00\xb0\x00\x00\x00\x25\x00\x72\x02\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\x00\x00\x00\x00\x27\x00\x06\x00\x00\x00\x00\x00\xb1\x00\x07\x00\x70\x00\x1b\x01\x09\x00\x00\x00\x8d\x00\x26\x00\x8f\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x71\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x00\x00\x27\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\xe2\x02\x6e\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x00\x00\x00\x00\x2d\x00\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x72\x00\x00\x00\x73\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x1d\x02\x77\x00\xb7\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x1e\x02\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x85\x00\x86\x00\x00\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\x8e\x00\x8f\x00\x90\x00\x72\x00\x28\xfe\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x28\xfe\x18\x02\x77\x00\xb7\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x19\x02\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x28\xfe\x28\xfe\x81\x00\x28\xfe\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x28\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\x8e\x00\x8f\x00\x00\x00\x72\x00\x28\xfe\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x28\xfe\x18\x02\x77\x00\xb7\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x19\x02\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x28\xfe\x28\xfe\x81\x00\x28\xfe\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x28\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\x8e\x00\x8f\x00\x00\x00\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\xad\x00\x18\x02\x77\x00\xb7\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x19\x02\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xc0\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xc1\x00\x8f\x00\x00\x00\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\xad\x00\xdc\x01\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\xdd\x01\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xee\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xef\x00\x8f\x00\x00\x00\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\xad\x00\xdc\x01\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\xdd\x01\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xb7\x01\x89\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xb8\x01\x8f\x00\x00\x00\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\xad\x00\xdc\x01\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\xdd\x01\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xc0\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xc1\x00\x8f\x00\x00\x00\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\xad\x00\xdc\x01\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\xdd\x01\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xee\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xef\x00\x8f\x00\x00\x00\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\xad\x00\xdc\x01\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\xdd\x01\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xb7\x01\x89\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xb8\x01\x8f\x00\x00\x00\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\xad\x00\xdc\x01\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\xdd\x01\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xc0\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xc1\x00\x8f\x00\x00\x00\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\xad\x00\x75\x01\x77\x00\xb7\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x76\x01\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xee\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xef\x00\x8f\x00\x00\x00\x72\x00\x28\xfe\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x28\xfe\x70\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x71\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x28\xfe\x28\xfe\x81\x00\x28\xfe\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x28\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x8f\x00\x00\x00\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\xad\x00\x70\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x71\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xb7\x01\x89\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xb8\x01\x8f\x00\x00\x00\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\xad\x00\x70\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x71\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xc0\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xc1\x00\x8f\x00\x00\x00\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\xad\x00\x18\x02\x77\x00\xb7\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x19\x02\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xee\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xef\x00\x8f\x00\x00\x00\x72\x00\x00\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x1d\x02\x77\x00\xb7\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x1e\x02\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xa9\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xaa\x00\x8f\x00\x00\x00\x72\x00\x00\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x75\x01\x77\x00\xb7\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x76\x01\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xa9\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xaa\x00\x8f\x00\x00\x00\x72\x00\x00\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\xdc\x01\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\xdd\x01\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xa9\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xaa\x00\x8f\x00\x72\x00\x00\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x70\x00\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x71\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xa9\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xaa\x00\x8f\x00\x72\x00\x00\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x75\x01\x77\x00\xb7\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x76\x01\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xa9\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xaa\x00\x8f\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00\x75\x00\xdc\x01\x76\x00\xad\x00\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x00\x00\x7b\x00\xdd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\xae\x00\xaf\x00\x00\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x1c\x03\x00\x00\x1d\x02\x86\x00\xb7\x00\x00\x00\xc0\x00\x00\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x1e\x02\x00\x00\x00\x00\x00\x00\xc1\x00\x8f\x00\x06\x00\x00\x00\x00\x00\x75\x00\x07\x00\x76\x00\x1c\x01\x09\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x1d\x02\x7b\x00\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\x1e\x02\x18\x00\x19\x00\x00\x00\xac\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x86\x00\xad\x00\x00\x00\xa9\x00\x00\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x0d\x03\x00\x00\x00\x00\x8d\x00\xaa\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x3c\x02\xae\x00\xaf\x00\x0e\x02\xb0\x00\x18\x02\x28\xfe\xb7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3d\x02\x28\xfe\x06\x00\x00\x00\x00\x00\x19\x02\x07\x00\xb1\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x5c\x01\x8d\x00\xe6\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\xfe\x28\xfe\x00\x00\x28\xfe\x00\x00\x00\x00\xac\x00\xbd\x02\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\xac\x00\x00\x00\x00\x00\x28\xfe\x0e\x02\xac\x00\x00\x00\xad\x00\x00\x00\x8d\x00\xe6\x00\x8f\x00\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x00\xaf\x00\x00\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x46\x02\x00\x00\xae\x00\xaf\x00\x18\x02\xb0\x00\xb7\x00\xae\x00\xaf\x00\x00\x00\xb0\x00\xb1\x00\xe5\x00\x00\x00\x00\x00\xac\x00\x19\x02\x8d\x00\xe6\x00\x8f\x00\xb1\x00\x00\x00\xad\x00\x00\x00\x00\x00\xb1\x00\x8d\x00\xe6\x00\x8f\x00\x00\x00\x06\x00\x8d\x00\x00\x00\x8f\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x60\x01\xae\x00\xaf\x00\x00\x00\xb0\x00\x00\x00\x00\x00\xac\x00\x00\x00\x00\x00\x00\x00\x28\xfe\x00\x00\x00\x00\xad\x00\x00\x00\x18\x00\x19\x00\x28\xfe\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8d\x00\xe6\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x00\xaf\x00\x00\x00\xb0\x00\x28\xfe\x28\xfe\x00\x00\x28\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x28\xfe\x00\x00\x8d\x00\xe6\x00\x8f\x00\x00\x00\x8d\x00\x00\x00\x8f\x00\xc1\x01\xc2\x01\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\xc3\x01\x59\x00\x5a\x00\x5b\x00\xc4\x01\xc5\x01\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc6\x01\x00\x00\x00\x00\x00\x00\x00\x00\xa3\x01\xde\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9d\x00\x67\x00\x00\x02\x00\x00\x00\x00\x00\x00\xc7\x01\xc8\x01\xc9\x01\x00\x00\x00\x00\x00\x00\x74\x02\xb3\x00\xb4\x00\x75\x02\x76\x02\x00\x00\x00\x00\x00\x00\xc1\x01\xc2\x01\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\xc3\x01\x59\x00\x5a\x00\x5b\x00\xc4\x01\xc5\x01\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x00\x00\xa3\x01\xde\x00\xa4\x01\xe0\x00\xb9\x02\x63\x00\x9d\x00\x67\x00\x9e\x00\xc6\x01\x9f\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6c\x00\xe3\x02\x6e\x00\x9d\x00\x67\x00\x00\x02\x00\x00\x00\x00\x00\x00\xc7\x01\xc8\x01\xc9\x01\x00\x00\x00\x00\x00\x00\x74\x02\xb3\x00\xb4\x00\x75\x02\x76\x02\xc1\x01\xc2\x01\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\xc3\x01\x59\x00\x5a\x00\x5b\x00\xc4\x01\xc5\x01\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\xa6\x01\x6e\x00\xc6\x01\xa3\x01\xde\x00\xa4\x01\xe0\x00\x28\x03\x00\x00\x9d\x00\x67\x00\x00\x02\x00\x00\x6c\x00\xe8\x02\x6e\x00\x00\x00\x00\x00\x00\x00\xc7\x01\xc8\x01\xc9\x01\x00\x00\x00\x00\x00\x00\x74\x02\xb3\x00\xb4\x00\x75\x02\x76\x02\xc1\x01\xc2\x01\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\xc3\x01\x59\x00\x5a\x00\x5b\x00\xc4\x01\xc5\x01\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x63\x00\xa4\x02\x00\x00\x07\x00\xc6\x01\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x61\x01\xa6\x01\x6e\x00\x00\x00\x6c\x00\x77\x02\x6e\x00\x00\x00\x00\x00\x00\x00\xc7\x01\xc8\x01\xc9\x01\xca\x01\x00\x00\x18\x00\x19\x00\x00\x00\xc1\x01\xc2\x01\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\xc3\x01\x59\x00\x5a\x00\x5b\x00\xc4\x01\xc5\x01\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x00\x00\xda\x00\xc6\x01\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\x00\x00\xe1\x00\x66\x00\x67\x00\xe1\x01\x00\x00\x00\x00\x6c\x00\xcb\x01\x6e\x00\xc7\x01\xc8\x01\xc9\x01\x00\x00\x00\x00\x00\x00\xc1\x01\xc2\x01\x00\x00\x54\x00\x55\x00\x56\x00\x57\x00\xc3\x01\x59\x00\x5a\x00\x5b\x00\xc4\x01\xc5\x01\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x00\x00\xe7\x00\xc6\x01\xc6\x00\xc7\x00\xc8\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe9\x00\x61\x00\x62\x00\x00\x00\x6c\x00\xcb\x01\x6e\x00\xea\x02\x00\x00\x63\x00\x00\x00\x00\x00\xc9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x02\x66\x00\x67\x00\xe1\x01\x00\x00\x00\x00\xb8\x00\x55\x00\x56\x00\x57\x00\x00\x00\xb9\x00\x1f\x02\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\xba\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x02\x00\x00\x63\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x6c\x00\xcb\x01\x6e\x00\x9a\x00\x66\x00\x67\x00\xe1\x01\x00\x00\x00\x00\x13\x02\x66\x00\x67\x00\xe1\x01\x00\x00\x00\x00\x72\x02\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\x14\x02\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\xec\x00\xa2\x00\x55\x00\x56\x00\x57\x00\x00\x00\xa3\x00\xa2\x00\x55\x00\x56\x00\x57\x00\x00\x00\xa3\x00\xa4\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x61\x00\x62\x00\x63\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x00\x00\x3a\x02\xde\x00\x6c\x00\xe7\x02\x6e\x00\x00\x00\xd9\x01\x67\x00\xda\x01\x15\x02\x16\x02\x00\x00\xd9\x01\x67\x00\xda\x01\x00\x00\x00\x00\x00\x00\x8f\x02\xb3\x00\xb4\x00\x90\x02\x91\x02\x00\x00\x8f\x02\xb3\x00\xb4\x00\x90\x02\x91\x02\x00\x00\xb8\x00\x55\x00\x56\x00\x57\x00\x00\x00\xb9\x00\xb0\x01\x55\x00\x56\x00\x57\x00\xa6\x02\xb1\x01\xba\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\xb2\x01\x61\x00\x62\x00\x63\x00\x00\x00\x00\x00\xbb\x00\x00\x00\x00\x00\x63\x00\x00\x00\x00\x00\xb3\x01\x00\x00\x00\x00\x00\x00\xa7\x00\x09\x02\x66\x00\x67\x00\xe1\x01\x00\x00\xa7\x00\xf0\x02\x66\x00\x67\x00\xe1\x01\xa2\x00\x55\x00\x56\x00\x57\x00\x00\x00\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x63\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\x00\x00\xe1\x00\x66\x00\x67\x00\xe1\x01\x00\x00\x00\x00\x08\x02\x66\x00\x67\x00\xe1\x01\xa3\x01\xde\x00\xa4\x01\xe0\x00\xa5\x01\x00\x00\x9d\x00\x67\x00\x00\x02\x0a\x02\x6e\x00\x00\x00\x1e\x01\x59\x00\x00\x00\x1f\x01\xa7\x00\x20\x01\x00\x00\x21\x01\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x01\x59\x00\x63\x00\x1f\x01\x00\x00\x20\x01\x22\x01\x21\x01\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x63\x00\x00\x00\x00\x00\x07\x00\x22\x01\x03\x01\x09\x00\x0a\x00\x59\x01\x00\x00\xd2\x02\xa7\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa6\x01\x6e\x00\x00\x00\x00\x00\x00\x00\x06\x00\x9d\x02\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\xd3\x02\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x25\x01\x6e\x00\x1e\x01\x59\x00\x00\x00\x1f\x01\x00\x00\x20\x01\x00\x00\x21\x01\x60\x00\x61\x00\x62\x00\x00\x00\x6c\x00\x25\x01\x6e\x00\x00\x00\x00\x00\x63\x00\x00\x00\x00\x00\x00\x00\x22\x01\xa3\x01\xde\x00\xa4\x01\xe0\x00\x39\x02\x00\x00\x9d\x00\x67\x00\x9e\x00\x00\x00\x9f\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x01\x59\x00\x00\x00\x1f\x01\x06\x02\x20\x01\x00\x00\x21\x01\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x06\x00\x00\x00\x00\x00\x22\x01\x07\x00\x00\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\x00\x00\x07\x02\x00\x00\x33\x02\x00\x00\x00\x00\x18\x00\x19\x00\xa6\x01\x6e\x00\x00\x00\x6c\x00\x25\x01\x6e\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\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\x00\x00\x34\x02\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x25\x01\x6e\x00\x1e\x01\x59\x00\x00\x00\x1f\x01\x00\x00\x20\x01\x00\x00\x21\x01\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x00\x00\x00\x00\x22\x01\xa3\x01\xde\x00\xa4\x01\xe0\x00\x40\x02\x00\x00\x9d\x00\x67\x00\x9e\x00\x00\x00\x9f\x00\x6b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1e\x01\x59\x00\x00\x00\x1f\x01\x48\x02\x20\x01\x00\x00\x21\x01\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x06\x00\x00\x00\x00\x00\x22\x01\x07\x00\x00\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\x00\x00\x49\x02\x00\x00\xeb\x01\x00\x00\x00\x00\x18\x00\x19\x00\xa6\x01\x6e\x00\x00\x00\x6c\x00\x25\x01\x6e\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\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\x00\x00\xec\x01\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x25\x01\x6e\x00\x1e\x01\x59\x00\x00\x00\x1f\x01\x00\x00\x20\x01\x00\x00\x21\x01\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x1e\x01\x59\x00\x22\x01\x1f\x01\x00\x00\x20\x01\x00\x00\x21\x01\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x00\x00\x1e\x01\x59\x00\x22\x01\x1f\x01\xe5\x01\x20\x01\x00\x00\x21\x01\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x63\x00\x06\x00\x00\x00\x00\x00\x22\x01\x07\x00\x99\x02\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x01\x9a\x02\x9b\x02\x00\x00\x00\x00\xa0\x02\x00\x00\xe6\x01\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x25\x01\x6e\x00\x00\x00\x00\x00\x1e\x01\x59\x00\x00\x00\x1f\x01\x00\x00\x20\x01\x00\x00\x21\x01\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x25\x01\x6e\x00\x63\x00\x00\x00\x1e\x01\x59\x00\x22\x01\x1f\x01\xbb\x00\x20\x01\x00\x00\x21\x01\x60\x00\x61\x00\x62\x00\x00\x00\x00\x00\x00\x00\x6c\x00\x25\x01\x6e\x00\x63\x00\x88\x03\x00\x00\x00\x00\x22\x01\x00\x00\x7e\x01\x00\x00\x23\x03\x00\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\x00\x00\x0b\x02\x66\x00\x67\x00\xe1\x01\x00\x00\x00\x00\x06\x00\x00\x00\x7f\x01\x00\x00\x07\x00\x00\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\xbc\x01\xb3\x01\x00\x00\x00\x00\x00\x00\x29\x02\x00\x00\x18\x00\x19\x00\x6c\x00\x25\x01\x6e\x00\x2a\x02\x2b\x02\x6e\x00\xda\x00\x00\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\x00\x00\x0b\x02\x66\x00\x67\x00\xe1\x01\x6c\x00\x25\x01\x6e\x00\xbb\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\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\xbc\x01\x00\x00\x00\x00\x00\x00\xaa\x00\xd5\x02\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\xa7\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\xbc\x01\x00\x00\x00\x00\x00\x00\x00\x00\xbd\x01\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x06\x00\x6c\x00\xbe\x01\x6e\x00\x07\x00\x00\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\xdc\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\xa3\x01\xde\x00\xa4\x01\xe0\x00\xa5\x01\x00\x00\x9d\x00\x67\x00\x9e\x00\x06\x00\x9f\x00\x6b\x00\xcc\x02\x07\x00\x26\x03\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x62\x01\x75\x00\x00\x00\x76\x00\x00\x00\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x00\x00\x7b\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x88\x00\x00\x00\x8a\x00\x8b\x00\x8c\x00\xa6\x01\x6e\x00\xcc\x02\x00\x00\xcd\x02\x00\x00\x00\x00\x8e\x00\x8f\x00\xce\x02\x00\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x00\x00\x77\x00\x00\x00\x06\x00\x78\x00\x00\x00\x79\x00\x07\x00\x7b\x00\x03\x01\x09\x00\x0a\x00\x5a\x01\x00\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x86\x00\x18\x00\x19\x00\x88\x00\x00\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd2\x00\x00\x00\x8e\x00\x8f\x00\xce\x02\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\xcf\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\xac\x00\x00\x00\x74\x00\x00\x00\x84\x00\x00\x00\x00\x00\xad\x00\x87\x00\x00\x00\x89\x00\x00\x00\x00\x00\x00\x00\xb1\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x87\x00\x3e\x00\x89\x00\x00\x00\x00\x00\x72\x00\xb1\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x8f\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x85\x00\x86\x00\x00\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\xec\x02\x00\x00\x72\x00\x8e\x00\x8f\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x8f\x00\x72\x00\x28\xfe\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x28\xfe\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x28\xfe\x28\xfe\x81\x00\x28\xfe\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x28\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xcd\x01\x8e\x00\x8f\x00\x26\xfe\x26\xfe\x00\x00\x26\xfe\x00\x00\x26\xfe\x00\x00\x26\xfe\x26\xfe\x00\x00\x26\xfe\x00\x00\x00\x00\x26\xfe\x00\x00\x26\xfe\x26\xfe\x26\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x26\xfe\x26\xfe\x26\xfe\x26\xfe\x00\x00\x26\xfe\x26\xfe\x26\xfe\x26\xfe\x26\xfe\x00\x00\x26\xfe\x26\xfe\x00\x00\x26\xfe\x00\x00\x26\xfe\x00\x00\x26\xfe\x26\xfe\x26\xfe\x26\xfe\x26\xfe\x26\xfe\x26\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\xfe\x26\xfe\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\xad\x00\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xb7\x01\x89\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xb8\x01\x8f\x00\x72\x00\x28\xfe\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x28\xfe\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x28\xfe\x28\xfe\x81\x00\x28\xfe\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x28\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x72\x00\x8e\x00\x8f\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x85\x00\x86\x00\x00\x00\x87\x00\x88\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x8f\x00\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x75\x00\x00\x00\x76\x00\xad\x00\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x87\x00\x00\x00\x89\x00\x00\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x72\x00\x00\x00\x00\x00\x74\x00\x00\x00\x75\x00\x8f\x00\x76\x00\x00\x00\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x80\x00\x00\x00\x00\x00\x81\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x86\x00\x00\x00\x87\x00\xa9\x00\x89\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x72\x00\xac\x00\x00\x00\x74\x00\x00\x00\x00\x00\xaa\x00\x8f\x00\xad\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x87\x00\xac\x00\x89\x00\x74\x00\x00\x00\x75\x00\xb1\x00\x76\x00\xad\x00\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x8f\x00\x00\x00\x7a\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x87\x00\x00\x00\x89\x00\xac\x00\x8b\x00\x8c\x00\xb1\x00\x75\x00\x00\x00\x76\x00\xad\x00\x00\x00\x77\x00\x00\x00\x8f\x00\x78\x00\x00\x00\x79\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\xae\x00\xaf\x00\x00\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\xb7\x01\x00\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\xb8\x01\x8f\x00\x75\x00\x00\x00\x76\x00\xad\x00\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\xae\x00\xaf\x00\x00\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\xfe\x00\x00\xc1\x00\x8f\x00\x26\xfe\x00\x00\x26\xfe\x26\xfe\x00\x00\x26\xfe\x00\x00\x00\x00\x26\xfe\x00\x00\x26\xfe\x00\x00\x26\xfe\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x26\xfe\x26\xfe\x26\xfe\x00\x00\x00\x00\x26\xfe\x26\xfe\x00\x00\x26\xfe\x00\x00\x26\xfe\x26\xfe\x00\x00\x00\x00\x00\x00\x26\xfe\x00\x00\x00\x00\x26\xfe\x00\x00\x26\xfe\x26\xfe\x26\xfe\x26\xfe\x00\x00\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\x26\xfe\x26\xfe\x75\x00\x00\x00\x76\x00\xad\x00\x00\x00\x77\x00\x00\x00\x00\x00\x78\x00\x00\x00\x79\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\xae\x00\xaf\x00\x00\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\xb7\x01\x00\x00\x8a\x00\x8b\x00\x8c\x00\xb1\x00\x00\x00\x00\x00\x00\x00\x00\x00\xac\x00\x00\x00\xb8\x01\x8f\x00\x75\x00\x00\x00\x76\x00\xad\x00\x00\x00\x77\x00\x00\x00\xac\x00\x78\x00\x74\x00\x00\x00\x00\x00\x7b\x00\x00\x00\xad\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x7a\x00\xae\x00\xaf\x00\x00\x00\xb0\x00\x00\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00\x00\xae\x00\xaf\x00\x81\x00\xb0\x00\x00\x00\x8b\x00\x8c\x00\xb1\x00\x84\x00\x00\x00\x00\x00\x75\x00\x87\x00\x76\x00\x89\x00\x8f\x00\x77\x00\x00\x00\xb1\x00\x78\x00\x00\x00\x79\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x8f\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x88\x00\x00\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x8f\x00\xce\x02\x75\x00\x00\x00\x76\x00\x00\x00\x00\x00\x77\x00\x9d\x02\x00\x00\x78\x00\x00\x00\x79\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x88\x00\x00\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x00\x00\x77\x00\x8e\x00\x8f\x00\x78\x00\x00\x00\x79\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x88\x00\x00\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x00\x00\x77\x00\x8e\x00\x8f\x00\x78\x00\x00\x00\x79\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\xa9\x00\x00\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x75\x00\x00\x00\x76\x00\x00\x00\x00\x00\x77\x00\xaa\x00\x8f\x00\x78\x00\x00\x00\x79\x00\x00\x00\x7b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7d\x00\x7e\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x82\x00\x83\x00\x00\x00\x00\x00\x00\x00\x86\x00\x00\x00\x00\x00\x88\x00\x00\x00\x8a\x00\x8b\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8e\x00\x8f\x00\x84\x02\x00\x00\x4c\x03\x86\x02\x87\x02\x88\x02\x89\x02\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\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\x8a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x84\x02\x8b\x02\x85\x02\x86\x02\x87\x02\x88\x02\x89\x02\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\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\x8a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x56\x03\x00\x00\x8b\x02\x57\x03\x87\x02\x88\x02\x89\x02\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\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\x8a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x18\x00\x19\x00\x00\x00\x07\x00\x8b\x02\x01\x03\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\x03\x02\x03\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x03\x03\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\x8a\x02\x00\x00\x53\x03\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\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\x8a\x02\x00\x00\xf3\x02\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\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\x8a\x02\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\xbc\x01\x00\x00\x00\x00\x00\x00\x00\x00\x26\x02\x00\x00\x18\x00\x19\x00\x06\x00\x00\x00\x00\x00\x00\x00\x07\x00\xa7\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\x00\x00\xf9\x00\x00\x00\x6b\x03\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\xf9\x00\x00\x00\x6c\x03\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\xf9\x00\x00\x00\xaf\x02\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\xf9\x00\x00\x00\xb0\x02\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\xf9\x00\x00\x00\xfa\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\xa9\x03\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\xaa\x03\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\x90\x03\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\x62\x03\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\xae\x02\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\x51\x01\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x52\x01\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\x53\x01\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\x67\x01\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x6a\x01\x00\x00\x00\x00\x6b\x01\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\x8b\x01\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\x8d\x01\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\x8f\x01\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\x90\x01\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x00\x00\x17\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\x00\x84\x03\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x85\x03\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x87\x03\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x8a\x03\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x95\x03\x18\x00\x19\x00\x07\x00\x00\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\x5e\x03\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x60\x03\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x6f\x03\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x75\x03\x18\x00\x19\x00\x07\x00\x00\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\x79\x03\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x7c\x03\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x08\x03\x18\x00\x19\x00\x07\x00\x00\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\x0f\x03\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x4e\x03\x18\x00\x19\x00\x07\x00\x00\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\x81\x02\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x83\x02\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x57\x02\x18\x00\x19\x00\x07\x00\x00\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\x55\x01\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x79\x01\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\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\x7d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\xea\x01\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x04\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x05\x01\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x82\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x7c\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x69\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x11\x00\x66\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x10\x00\x65\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x0f\x00\x64\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x18\x00\x19\x00\x07\x00\x00\x00\x03\x01\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00\x0e\x00\x63\x01\x19\x02\xdd\x00\xde\x00\x00\x00\x00\x00\x00\x00\x1a\x02\x66\x00\x67\x00\xe1\x01\x00\x00\x00\x00\x00\x00\x18\x00\x19\x00\x00\x00\x00\x00\x00\x00\x1b\x02\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\x20\x02\xdd\x00\xde\x00\x00\x00\x00\x00\x00\x00\x21\x02\x66\x00\x67\x00\xe1\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\x03\x22\x02\x6f\x01\xb3\x00\xb4\x00\x70\x01\x71\x01\x23\x03\x00\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\x00\x00\x0b\x02\x66\x00\x67\x00\xe1\x01\xf0\x00\x00\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\x00\x00\x0b\x02\x66\x00\x67\x00\xe1\x01\x4e\x02\x00\x00\xdb\x00\xdc\x00\xdd\x00\xde\x00\xdf\x00\xe0\x00\x00\x00\x0b\x02\x66\x00\x67\x00\xe1\x01\x3d\x01\x3e\x01\x3f\x01\x40\x01\x41\x01\x42\x01\x43\x01\x44\x01\x45\x01\x46\x01\x47\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\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 (4, 488) [- (4 , happyReduce_4),- (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),- (140 , happyReduce_140),- (141 , happyReduce_141),- (142 , happyReduce_142),- (143 , happyReduce_143),- (144 , happyReduce_144),- (145 , happyReduce_145),- (146 , happyReduce_146),- (147 , happyReduce_147),- (148 , happyReduce_148),- (149 , happyReduce_149),- (150 , happyReduce_150),- (151 , happyReduce_151),- (152 , happyReduce_152),- (153 , happyReduce_153),- (154 , happyReduce_154),- (155 , happyReduce_155),- (156 , happyReduce_156),- (157 , happyReduce_157),- (158 , happyReduce_158),- (159 , happyReduce_159),- (160 , happyReduce_160),- (161 , happyReduce_161),- (162 , happyReduce_162),- (163 , happyReduce_163),- (164 , happyReduce_164),- (165 , happyReduce_165),- (166 , happyReduce_166),- (167 , happyReduce_167),- (168 , happyReduce_168),- (169 , happyReduce_169),- (170 , happyReduce_170),- (171 , happyReduce_171),- (172 , happyReduce_172),- (173 , happyReduce_173),- (174 , happyReduce_174),- (175 , happyReduce_175),- (176 , happyReduce_176),- (177 , happyReduce_177),- (178 , happyReduce_178),- (179 , happyReduce_179),- (180 , happyReduce_180),- (181 , happyReduce_181),- (182 , happyReduce_182),- (183 , happyReduce_183),- (184 , happyReduce_184),- (185 , happyReduce_185),- (186 , happyReduce_186),- (187 , happyReduce_187),- (188 , happyReduce_188),- (189 , happyReduce_189),- (190 , happyReduce_190),- (191 , happyReduce_191),- (192 , happyReduce_192),- (193 , happyReduce_193),- (194 , happyReduce_194),- (195 , happyReduce_195),- (196 , happyReduce_196),- (197 , happyReduce_197),- (198 , happyReduce_198),- (199 , happyReduce_199),- (200 , happyReduce_200),- (201 , happyReduce_201),- (202 , happyReduce_202),- (203 , happyReduce_203),- (204 , happyReduce_204),- (205 , happyReduce_205),- (206 , happyReduce_206),- (207 , happyReduce_207),- (208 , happyReduce_208),- (209 , happyReduce_209),- (210 , happyReduce_210),- (211 , happyReduce_211),- (212 , happyReduce_212),- (213 , happyReduce_213),- (214 , happyReduce_214),- (215 , happyReduce_215),- (216 , happyReduce_216),- (217 , happyReduce_217),- (218 , happyReduce_218),- (219 , happyReduce_219),- (220 , happyReduce_220),- (221 , happyReduce_221),- (222 , happyReduce_222),- (223 , happyReduce_223),- (224 , happyReduce_224),- (225 , happyReduce_225),- (226 , happyReduce_226),- (227 , happyReduce_227),- (228 , happyReduce_228),- (229 , happyReduce_229),- (230 , happyReduce_230),- (231 , happyReduce_231),- (232 , happyReduce_232),- (233 , happyReduce_233),- (234 , happyReduce_234),- (235 , happyReduce_235),- (236 , happyReduce_236),- (237 , happyReduce_237),- (238 , happyReduce_238),- (239 , happyReduce_239),- (240 , happyReduce_240),- (241 , happyReduce_241),- (242 , happyReduce_242),- (243 , happyReduce_243),- (244 , happyReduce_244),- (245 , happyReduce_245),- (246 , happyReduce_246),- (247 , happyReduce_247),- (248 , happyReduce_248),- (249 , happyReduce_249),- (250 , happyReduce_250),- (251 , happyReduce_251),- (252 , happyReduce_252),- (253 , happyReduce_253),- (254 , happyReduce_254),- (255 , happyReduce_255),- (256 , happyReduce_256),- (257 , happyReduce_257),- (258 , happyReduce_258),- (259 , happyReduce_259),- (260 , happyReduce_260),- (261 , happyReduce_261),- (262 , happyReduce_262),- (263 , happyReduce_263),- (264 , happyReduce_264),- (265 , happyReduce_265),- (266 , happyReduce_266),- (267 , happyReduce_267),- (268 , happyReduce_268),- (269 , happyReduce_269),- (270 , happyReduce_270),- (271 , happyReduce_271),- (272 , happyReduce_272),- (273 , happyReduce_273),- (274 , happyReduce_274),- (275 , happyReduce_275),- (276 , happyReduce_276),- (277 , happyReduce_277),- (278 , happyReduce_278),- (279 , happyReduce_279),- (280 , happyReduce_280),- (281 , happyReduce_281),- (282 , happyReduce_282),- (283 , happyReduce_283),- (284 , happyReduce_284),- (285 , happyReduce_285),- (286 , happyReduce_286),- (287 , happyReduce_287),- (288 , happyReduce_288),- (289 , happyReduce_289),- (290 , happyReduce_290),- (291 , happyReduce_291),- (292 , happyReduce_292),- (293 , happyReduce_293),- (294 , happyReduce_294),- (295 , happyReduce_295),- (296 , happyReduce_296),- (297 , happyReduce_297),- (298 , happyReduce_298),- (299 , happyReduce_299),- (300 , happyReduce_300),- (301 , happyReduce_301),- (302 , happyReduce_302),- (303 , happyReduce_303),- (304 , happyReduce_304),- (305 , happyReduce_305),- (306 , happyReduce_306),- (307 , happyReduce_307),- (308 , happyReduce_308),- (309 , happyReduce_309),- (310 , happyReduce_310),- (311 , happyReduce_311),- (312 , happyReduce_312),- (313 , happyReduce_313),- (314 , happyReduce_314),- (315 , happyReduce_315),- (316 , happyReduce_316),- (317 , happyReduce_317),- (318 , happyReduce_318),- (319 , happyReduce_319),- (320 , happyReduce_320),- (321 , happyReduce_321),- (322 , happyReduce_322),- (323 , happyReduce_323),- (324 , happyReduce_324),- (325 , happyReduce_325),- (326 , happyReduce_326),- (327 , happyReduce_327),- (328 , happyReduce_328),- (329 , happyReduce_329),- (330 , happyReduce_330),- (331 , happyReduce_331),- (332 , happyReduce_332),- (333 , happyReduce_333),- (334 , happyReduce_334),- (335 , happyReduce_335),- (336 , happyReduce_336),- (337 , happyReduce_337),- (338 , happyReduce_338),- (339 , happyReduce_339),- (340 , happyReduce_340),- (341 , happyReduce_341),- (342 , happyReduce_342),- (343 , happyReduce_343),- (344 , happyReduce_344),- (345 , happyReduce_345),- (346 , happyReduce_346),- (347 , happyReduce_347),- (348 , happyReduce_348),- (349 , happyReduce_349),- (350 , happyReduce_350),- (351 , happyReduce_351),- (352 , happyReduce_352),- (353 , happyReduce_353),- (354 , happyReduce_354),- (355 , happyReduce_355),- (356 , happyReduce_356),- (357 , happyReduce_357),- (358 , happyReduce_358),- (359 , happyReduce_359),- (360 , happyReduce_360),- (361 , happyReduce_361),- (362 , happyReduce_362),- (363 , happyReduce_363),- (364 , happyReduce_364),- (365 , happyReduce_365),- (366 , happyReduce_366),- (367 , happyReduce_367),- (368 , happyReduce_368),- (369 , happyReduce_369),- (370 , happyReduce_370),- (371 , happyReduce_371),- (372 , happyReduce_372),- (373 , happyReduce_373),- (374 , happyReduce_374),- (375 , happyReduce_375),- (376 , happyReduce_376),- (377 , happyReduce_377),- (378 , happyReduce_378),- (379 , happyReduce_379),- (380 , happyReduce_380),- (381 , happyReduce_381),- (382 , happyReduce_382),- (383 , happyReduce_383),- (384 , happyReduce_384),- (385 , happyReduce_385),- (386 , happyReduce_386),- (387 , happyReduce_387),- (388 , happyReduce_388),- (389 , happyReduce_389),- (390 , happyReduce_390),- (391 , happyReduce_391),- (392 , happyReduce_392),- (393 , happyReduce_393),- (394 , happyReduce_394),- (395 , happyReduce_395),- (396 , happyReduce_396),- (397 , happyReduce_397),- (398 , happyReduce_398),- (399 , happyReduce_399),- (400 , happyReduce_400),- (401 , happyReduce_401),- (402 , happyReduce_402),- (403 , happyReduce_403),- (404 , happyReduce_404),- (405 , happyReduce_405),- (406 , happyReduce_406),- (407 , happyReduce_407),- (408 , happyReduce_408),- (409 , happyReduce_409),- (410 , happyReduce_410),- (411 , happyReduce_411),- (412 , happyReduce_412),- (413 , happyReduce_413),- (414 , happyReduce_414),- (415 , happyReduce_415),- (416 , happyReduce_416),- (417 , happyReduce_417),- (418 , happyReduce_418),- (419 , happyReduce_419),- (420 , happyReduce_420),- (421 , happyReduce_421),- (422 , happyReduce_422),- (423 , happyReduce_423),- (424 , happyReduce_424),- (425 , happyReduce_425),- (426 , happyReduce_426),- (427 , happyReduce_427),- (428 , happyReduce_428),- (429 , happyReduce_429),- (430 , happyReduce_430),- (431 , happyReduce_431),- (432 , happyReduce_432),- (433 , happyReduce_433),- (434 , happyReduce_434),- (435 , happyReduce_435),- (436 , happyReduce_436),- (437 , happyReduce_437),- (438 , happyReduce_438),- (439 , happyReduce_439),- (440 , happyReduce_440),- (441 , happyReduce_441),- (442 , happyReduce_442),- (443 , happyReduce_443),- (444 , happyReduce_444),- (445 , happyReduce_445),- (446 , happyReduce_446),- (447 , happyReduce_447),- (448 , happyReduce_448),- (449 , happyReduce_449),- (450 , happyReduce_450),- (451 , happyReduce_451),- (452 , happyReduce_452),- (453 , happyReduce_453),- (454 , happyReduce_454),- (455 , happyReduce_455),- (456 , happyReduce_456),- (457 , happyReduce_457),- (458 , happyReduce_458),- (459 , happyReduce_459),- (460 , happyReduce_460),- (461 , happyReduce_461),- (462 , happyReduce_462),- (463 , happyReduce_463),- (464 , happyReduce_464),- (465 , happyReduce_465),- (466 , happyReduce_466),- (467 , happyReduce_467),- (468 , happyReduce_468),- (469 , happyReduce_469),- (470 , happyReduce_470),- (471 , happyReduce_471),- (472 , happyReduce_472),- (473 , happyReduce_473),- (474 , happyReduce_474),- (475 , happyReduce_475),- (476 , happyReduce_476),- (477 , happyReduce_477),- (478 , happyReduce_478),- (479 , happyReduce_479),- (480 , happyReduce_480),- (481 , happyReduce_481),- (482 , happyReduce_482),- (483 , happyReduce_483),- (484 , happyReduce_484),- (485 , happyReduce_485),- (486 , happyReduce_486),- (487 , happyReduce_487),- (488 , happyReduce_488)- ]--happy_n_terms = 111 :: Int-happy_n_nonterms = 131 :: Int--happyReduce_4 = happyMonadReduce 1# 0# happyReduction_4-happyReduction_4 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut8 happy_x_1 of { happy_var_1 -> - ( let decls = reverse happy_var_1 in- case decls of- [] -> do{ n <- getNewName; p <- getCurrentPosition; return $ CTranslUnit decls (mkNodeInfo' p (p,0) n) }- (d:ds) -> withNodeInfo d $ CTranslUnit decls)}- ) (\r -> happyReturn (happyIn7 r))--happyReduce_5 = happySpecReduce_0 1# happyReduction_5-happyReduction_5 = happyIn8- (empty- )--happyReduce_6 = happySpecReduce_2 1# happyReduction_6-happyReduction_6 happy_x_2- happy_x_1- = case happyOut8 happy_x_1 of { happy_var_1 -> - happyIn8- (happy_var_1- )}--happyReduce_7 = happySpecReduce_2 1# happyReduction_7-happyReduction_7 happy_x_2- happy_x_1- = case happyOut8 happy_x_1 of { happy_var_1 -> - case happyOut9 happy_x_2 of { happy_var_2 -> - happyIn8- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_8 = happySpecReduce_1 2# happyReduction_8-happyReduction_8 happy_x_1- = case happyOut10 happy_x_1 of { happy_var_1 -> - happyIn9- (CFDefExt happy_var_1- )}--happyReduce_9 = happySpecReduce_1 2# happyReduction_9-happyReduction_9 happy_x_1- = case happyOut32 happy_x_1 of { happy_var_1 -> - happyIn9- (CDeclExt happy_var_1- )}--happyReduce_10 = happySpecReduce_2 2# happyReduction_10-happyReduction_10 happy_x_2- happy_x_1- = case happyOut9 happy_x_2 of { happy_var_2 -> - happyIn9- (happy_var_2- )}--happyReduce_11 = happyMonadReduce 5# 2# happyReduction_11-happyReduction_11 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut128 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CAsmExt happy_var_3)}}- ) (\r -> happyReturn (happyIn9 r))--happyReduce_12 = happyMonadReduce 2# 3# happyReduction_12-happyReduction_12 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut11 happy_x_1 of { happy_var_1 -> - case happyOut14 happy_x_2 of { happy_var_2 -> - ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef [] happy_var_1 [] happy_var_2))}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_13 = happyMonadReduce 3# 3# happyReduction_13-happyReduction_13 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut133 happy_x_1 of { happy_var_1 -> - case happyOut11 happy_x_2 of { happy_var_2 -> - case happyOut14 happy_x_3 of { happy_var_3 -> - ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftCAttrs happy_var_1) happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_14 = happyMonadReduce 3# 3# happyReduction_14-happyReduction_14 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut11 happy_x_2 of { happy_var_2 -> - case happyOut14 happy_x_3 of { happy_var_3 -> - ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_15 = happyMonadReduce 3# 3# happyReduction_15-happyReduction_15 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut44 happy_x_1 of { happy_var_1 -> - case happyOut11 happy_x_2 of { happy_var_2 -> - case happyOut14 happy_x_3 of { happy_var_3 -> - ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_16 = happyMonadReduce 3# 3# happyReduction_16-happyReduction_16 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut11 happy_x_2 of { happy_var_2 -> - case happyOut14 happy_x_3 of { happy_var_3 -> - ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (reverse happy_var_1) happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_17 = happyMonadReduce 3# 3# happyReduction_17-happyReduction_17 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut11 happy_x_2 of { happy_var_2 -> - case happyOut14 happy_x_3 of { happy_var_3 -> - ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1) happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_18 = happyMonadReduce 4# 3# happyReduction_18-happyReduction_18 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut11 happy_x_3 of { happy_var_3 -> - case happyOut14 happy_x_4 of { happy_var_4 -> - ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) happy_var_3 [] happy_var_4))}}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_19 = happyMonadReduce 3# 3# happyReduction_19-happyReduction_19 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut79 happy_x_1 of { happy_var_1 -> - case happyOut33 happy_x_2 of { happy_var_2 -> - case happyOut14 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CFunDef [] happy_var_1 (reverse happy_var_2) happy_var_3)}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_20 = happyMonadReduce 4# 3# happyReduction_20-happyReduction_20 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut133 happy_x_1 of { happy_var_1 -> - case happyOut79 happy_x_2 of { happy_var_2 -> - case happyOut33 happy_x_3 of { happy_var_3 -> - case happyOut14 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_2 $ CFunDef (liftCAttrs happy_var_1) happy_var_2 (reverse happy_var_3) happy_var_4)}}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_21 = happyMonadReduce 4# 3# happyReduction_21-happyReduction_21 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut79 happy_x_2 of { happy_var_2 -> - case happyOut33 happy_x_3 of { happy_var_3 -> - case happyOut14 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 (reverse happy_var_3) happy_var_4)}}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_22 = happyMonadReduce 4# 3# happyReduction_22-happyReduction_22 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut44 happy_x_1 of { happy_var_1 -> - case happyOut79 happy_x_2 of { happy_var_2 -> - case happyOut33 happy_x_3 of { happy_var_3 -> - case happyOut14 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 (reverse happy_var_3) happy_var_4)}}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_23 = happyMonadReduce 4# 3# happyReduction_23-happyReduction_23 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut79 happy_x_2 of { happy_var_2 -> - case happyOut33 happy_x_3 of { happy_var_3 -> - case happyOut14 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ CFunDef (reverse happy_var_1) happy_var_2 (reverse happy_var_3) happy_var_4)}}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_24 = happyMonadReduce 4# 3# happyReduction_24-happyReduction_24 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut79 happy_x_2 of { happy_var_2 -> - case happyOut33 happy_x_3 of { happy_var_3 -> - case happyOut14 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1) happy_var_2 (reverse happy_var_3) happy_var_4)}}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_25 = happyMonadReduce 5# 3# happyReduction_25-happyReduction_25 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut79 happy_x_3 of { happy_var_3 -> - case happyOut33 happy_x_4 of { happy_var_4 -> - case happyOut14 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) happy_var_3 (reverse happy_var_4) happy_var_5)}}}}}- ) (\r -> happyReturn (happyIn10 r))--happyReduce_26 = happyMonadReduce 1# 4# happyReduction_26-happyReduction_26 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut75 happy_x_1 of { happy_var_1 -> - ( let declr = reverseDeclr happy_var_1 in- enterScope >> doFuncParamDeclIdent declr >> return declr)}- ) (\r -> happyReturn (happyIn11 r))--happyReduce_27 = happySpecReduce_1 5# happyReduction_27-happyReduction_27 happy_x_1- = case happyOut13 happy_x_1 of { happy_var_1 -> - happyIn12- (happy_var_1- )}--happyReduce_28 = happySpecReduce_1 5# happyReduction_28-happyReduction_28 happy_x_1- = case happyOut14 happy_x_1 of { happy_var_1 -> - happyIn12- (happy_var_1- )}--happyReduce_29 = happySpecReduce_1 5# happyReduction_29-happyReduction_29 happy_x_1- = case happyOut22 happy_x_1 of { happy_var_1 -> - happyIn12- (happy_var_1- )}--happyReduce_30 = happySpecReduce_1 5# happyReduction_30-happyReduction_30 happy_x_1- = case happyOut23 happy_x_1 of { happy_var_1 -> - happyIn12- (happy_var_1- )}--happyReduce_31 = happySpecReduce_1 5# happyReduction_31-happyReduction_31 happy_x_1- = case happyOut24 happy_x_1 of { happy_var_1 -> - happyIn12- (happy_var_1- )}--happyReduce_32 = happySpecReduce_1 5# happyReduction_32-happyReduction_32 happy_x_1- = case happyOut25 happy_x_1 of { happy_var_1 -> - happyIn12- (happy_var_1- )}--happyReduce_33 = happyMonadReduce 1# 5# happyReduction_33-happyReduction_33 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut26 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 (CAsm happy_var_1))}- ) (\r -> happyReturn (happyIn12 r))--happyReduce_34 = happyMonadReduce 4# 6# happyReduction_34-happyReduction_34 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut131 happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - case happyOut12 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ CLabel happy_var_1 happy_var_4 happy_var_3)}}}- ) (\r -> happyReturn (happyIn13 r))--happyReduce_35 = happyMonadReduce 4# 6# happyReduction_35-happyReduction_35 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut126 happy_x_2 of { happy_var_2 -> - case happyOut12 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ CCase happy_var_2 happy_var_4)}}}- ) (\r -> happyReturn (happyIn13 r))--happyReduce_36 = happyMonadReduce 3# 6# happyReduction_36-happyReduction_36 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut12 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CDefault happy_var_3)}}- ) (\r -> happyReturn (happyIn13 r))--happyReduce_37 = happyMonadReduce 6# 6# happyReduction_37-happyReduction_37 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut126 happy_x_2 of { happy_var_2 -> - case happyOut126 happy_x_4 of { happy_var_4 -> - case happyOut12 happy_x_6 of { happy_var_6 -> - ( withNodeInfo happy_var_1 $ CCases happy_var_2 happy_var_4 happy_var_6)}}}}- ) (\r -> happyReturn (happyIn13 r))--happyReduce_38 = happyMonadReduce 5# 7# happyReduction_38-happyReduction_38 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut17 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CCompound [] (reverse happy_var_3))}}- ) (\r -> happyReturn (happyIn14 r))--happyReduce_39 = happyMonadReduce 6# 7# happyReduction_39-happyReduction_39 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut21 happy_x_3 of { happy_var_3 -> - case happyOut17 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ CCompound (reverse happy_var_3) (reverse happy_var_4))}}}- ) (\r -> happyReturn (happyIn14 r))--happyReduce_40 = happyMonadReduce 0# 8# happyReduction_40-happyReduction_40 (happyRest) tk- = happyThen (( enterScope)- ) (\r -> happyReturn (happyIn15 r))--happyReduce_41 = happyMonadReduce 0# 9# happyReduction_41-happyReduction_41 (happyRest) tk- = happyThen (( leaveScope)- ) (\r -> happyReturn (happyIn16 r))--happyReduce_42 = happySpecReduce_0 10# happyReduction_42-happyReduction_42 = happyIn17- (empty- )--happyReduce_43 = happySpecReduce_2 10# happyReduction_43-happyReduction_43 happy_x_2- happy_x_1- = case happyOut17 happy_x_1 of { happy_var_1 -> - case happyOut18 happy_x_2 of { happy_var_2 -> - happyIn17- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_44 = happySpecReduce_1 11# happyReduction_44-happyReduction_44 happy_x_1- = case happyOut12 happy_x_1 of { happy_var_1 -> - happyIn18- (CBlockStmt happy_var_1- )}--happyReduce_45 = happySpecReduce_1 11# happyReduction_45-happyReduction_45 happy_x_1- = case happyOut19 happy_x_1 of { happy_var_1 -> - happyIn18- (happy_var_1- )}--happyReduce_46 = happySpecReduce_1 12# happyReduction_46-happyReduction_46 happy_x_1- = case happyOut32 happy_x_1 of { happy_var_1 -> - happyIn19- (CBlockDecl happy_var_1- )}--happyReduce_47 = happySpecReduce_1 12# happyReduction_47-happyReduction_47 happy_x_1- = case happyOut20 happy_x_1 of { happy_var_1 -> - happyIn19- (CNestedFunDef happy_var_1- )}--happyReduce_48 = happySpecReduce_2 12# happyReduction_48-happyReduction_48 happy_x_2- happy_x_1- = case happyOut19 happy_x_2 of { happy_var_2 -> - happyIn19- (happy_var_2- )}--happyReduce_49 = happyMonadReduce 3# 13# happyReduction_49-happyReduction_49 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut11 happy_x_2 of { happy_var_2 -> - case happyOut14 happy_x_3 of { happy_var_3 -> - ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn20 r))--happyReduce_50 = happyMonadReduce 3# 13# happyReduction_50-happyReduction_50 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut44 happy_x_1 of { happy_var_1 -> - case happyOut11 happy_x_2 of { happy_var_2 -> - case happyOut14 happy_x_3 of { happy_var_3 -> - ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef happy_var_1 happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn20 r))--happyReduce_51 = happyMonadReduce 3# 13# happyReduction_51-happyReduction_51 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut11 happy_x_2 of { happy_var_2 -> - case happyOut14 happy_x_3 of { happy_var_3 -> - ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (reverse happy_var_1) happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn20 r))--happyReduce_52 = happyMonadReduce 3# 13# happyReduction_52-happyReduction_52 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut11 happy_x_2 of { happy_var_2 -> - case happyOut14 happy_x_3 of { happy_var_3 -> - ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1) happy_var_2 [] happy_var_3))}}}- ) (\r -> happyReturn (happyIn20 r))--happyReduce_53 = happyMonadReduce 4# 13# happyReduction_53-happyReduction_53 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut11 happy_x_3 of { happy_var_3 -> - case happyOut14 happy_x_4 of { happy_var_4 -> - ( leaveScope >> (withNodeInfo happy_var_1 $ CFunDef (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) happy_var_3 [] happy_var_4))}}}}- ) (\r -> happyReturn (happyIn20 r))--happyReduce_54 = happySpecReduce_3 14# happyReduction_54-happyReduction_54 happy_x_3- happy_x_2- happy_x_1- = case happyOut85 happy_x_2 of { happy_var_2 -> - happyIn21- (happy_var_2- )}--happyReduce_55 = happyReduce 4# 14# happyReduction_55-happyReduction_55 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut21 happy_x_1 of { happy_var_1 -> - case happyOut85 happy_x_3 of { happy_var_3 -> - happyIn21- (happy_var_1 `rappendr` happy_var_3- ) `HappyStk` happyRest}}--happyReduce_56 = happyMonadReduce 1# 15# happyReduction_56-happyReduction_56 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CExpr Nothing)}- ) (\r -> happyReturn (happyIn22 r))--happyReduce_57 = happyMonadReduce 2# 15# happyReduction_57-happyReduction_57 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut122 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CExpr (Just happy_var_1))}- ) (\r -> happyReturn (happyIn22 r))--happyReduce_58 = happyMonadReduce 5# 16# happyReduction_58-happyReduction_58 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - case happyOut12 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CIf happy_var_3 happy_var_5 Nothing)}}}- ) (\r -> happyReturn (happyIn23 r))--happyReduce_59 = happyMonadReduce 7# 16# happyReduction_59-happyReduction_59 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - case happyOut12 happy_x_5 of { happy_var_5 -> - case happyOut12 happy_x_7 of { happy_var_7 -> - ( withNodeInfo happy_var_1 $ CIf happy_var_3 happy_var_5 (Just happy_var_7))}}}}- ) (\r -> happyReturn (happyIn23 r))--happyReduce_60 = happyMonadReduce 5# 16# happyReduction_60-happyReduction_60 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - case happyOut12 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CSwitch happy_var_3 happy_var_5)}}}- ) (\r -> happyReturn (happyIn23 r))--happyReduce_61 = happyMonadReduce 5# 17# happyReduction_61-happyReduction_61 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - case happyOut12 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CWhile happy_var_3 happy_var_5 False)}}}- ) (\r -> happyReturn (happyIn24 r))--happyReduce_62 = happyMonadReduce 7# 17# happyReduction_62-happyReduction_62 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut12 happy_x_2 of { happy_var_2 -> - case happyOut122 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CWhile happy_var_5 happy_var_2 True)}}}- ) (\r -> happyReturn (happyIn24 r))--happyReduce_63 = happyMonadReduce 9# 17# happyReduction_63-happyReduction_63 (happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut124 happy_x_3 of { happy_var_3 -> - case happyOut124 happy_x_5 of { happy_var_5 -> - case happyOut124 happy_x_7 of { happy_var_7 -> - case happyOut12 happy_x_9 of { happy_var_9 -> - ( withNodeInfo happy_var_1 $ CFor (Left happy_var_3) happy_var_5 happy_var_7 happy_var_9)}}}}}- ) (\r -> happyReturn (happyIn24 r))--happyReduce_64 = happyMonadReduce 10# 17# happyReduction_64-happyReduction_64 (happy_x_10 `HappyStk`- happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_4 of { happy_var_4 -> - case happyOut124 happy_x_5 of { happy_var_5 -> - case happyOut124 happy_x_7 of { happy_var_7 -> - case happyOut12 happy_x_9 of { happy_var_9 -> - ( withNodeInfo happy_var_1 $ CFor (Right happy_var_4) happy_var_5 happy_var_7 happy_var_9)}}}}}- ) (\r -> happyReturn (happyIn24 r))--happyReduce_65 = happyMonadReduce 3# 18# happyReduction_65-happyReduction_65 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut131 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CGoto happy_var_2)}}- ) (\r -> happyReturn (happyIn25 r))--happyReduce_66 = happyMonadReduce 4# 18# happyReduction_66-happyReduction_66 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CGotoPtr happy_var_3)}}- ) (\r -> happyReturn (happyIn25 r))--happyReduce_67 = happyMonadReduce 2# 18# happyReduction_67-happyReduction_67 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CCont)}- ) (\r -> happyReturn (happyIn25 r))--happyReduce_68 = happyMonadReduce 2# 18# happyReduction_68-happyReduction_68 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CBreak)}- ) (\r -> happyReturn (happyIn25 r))--happyReduce_69 = happyMonadReduce 3# 18# happyReduction_69-happyReduction_69 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut124 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CReturn happy_var_2)}}- ) (\r -> happyReturn (happyIn25 r))--happyReduce_70 = happyMonadReduce 6# 19# happyReduction_70-happyReduction_70 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut27 happy_x_2 of { happy_var_2 -> - case happyOut128 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ CAsmStmt happy_var_2 happy_var_4 [] [] [])}}}- ) (\r -> happyReturn (happyIn26 r))--happyReduce_71 = happyMonadReduce 8# 19# happyReduction_71-happyReduction_71 (happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut27 happy_x_2 of { happy_var_2 -> - case happyOut128 happy_x_4 of { happy_var_4 -> - case happyOut28 happy_x_6 of { happy_var_6 -> - ( withNodeInfo happy_var_1 $ CAsmStmt happy_var_2 happy_var_4 happy_var_6 [] [])}}}}- ) (\r -> happyReturn (happyIn26 r))--happyReduce_72 = happyMonadReduce 10# 19# happyReduction_72-happyReduction_72 (happy_x_10 `HappyStk`- happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut27 happy_x_2 of { happy_var_2 -> - case happyOut128 happy_x_4 of { happy_var_4 -> - case happyOut28 happy_x_6 of { happy_var_6 -> - case happyOut28 happy_x_8 of { happy_var_8 -> - ( withNodeInfo happy_var_1 $ CAsmStmt happy_var_2 happy_var_4 happy_var_6 happy_var_8 [])}}}}}- ) (\r -> happyReturn (happyIn26 r))--happyReduce_73 = happyMonadReduce 12# 19# happyReduction_73-happyReduction_73 (happy_x_12 `HappyStk`- happy_x_11 `HappyStk`- happy_x_10 `HappyStk`- happy_x_9 `HappyStk`- happy_x_8 `HappyStk`- happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut27 happy_x_2 of { happy_var_2 -> - case happyOut128 happy_x_4 of { happy_var_4 -> - case happyOut28 happy_x_6 of { happy_var_6 -> - case happyOut28 happy_x_8 of { happy_var_8 -> - case happyOut31 happy_x_10 of { happy_var_10 -> - ( withNodeInfo happy_var_1 $ CAsmStmt happy_var_2 happy_var_4 happy_var_6 happy_var_8 (reverse happy_var_10))}}}}}}- ) (\r -> happyReturn (happyIn26 r))--happyReduce_74 = happySpecReduce_0 20# happyReduction_74-happyReduction_74 = happyIn27- (Nothing- )--happyReduce_75 = happySpecReduce_1 20# happyReduction_75-happyReduction_75 happy_x_1- = case happyOut64 happy_x_1 of { happy_var_1 -> - happyIn27- (Just happy_var_1- )}--happyReduce_76 = happySpecReduce_0 21# happyReduction_76-happyReduction_76 = happyIn28- ([]- )--happyReduce_77 = happySpecReduce_1 21# happyReduction_77-happyReduction_77 happy_x_1- = case happyOut29 happy_x_1 of { happy_var_1 -> - happyIn28- (reverse happy_var_1- )}--happyReduce_78 = happySpecReduce_1 22# happyReduction_78-happyReduction_78 happy_x_1- = case happyOut30 happy_x_1 of { happy_var_1 -> - happyIn29- (singleton happy_var_1- )}--happyReduce_79 = happySpecReduce_3 22# happyReduction_79-happyReduction_79 happy_x_3- happy_x_2- happy_x_1- = case happyOut29 happy_x_1 of { happy_var_1 -> - case happyOut30 happy_x_3 of { happy_var_3 -> - happyIn29- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_80 = happyMonadReduce 4# 23# happyReduction_80-happyReduction_80 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut128 happy_x_1 of { happy_var_1 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CAsmOperand Nothing happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn30 r))--happyReduce_81 = happyMonadReduce 7# 23# happyReduction_81-happyReduction_81 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (CTokIdent _ happy_var_2) -> - case happyOut128 happy_x_4 of { happy_var_4 -> - case happyOut122 happy_x_6 of { happy_var_6 -> - ( withNodeInfo happy_var_1 $ CAsmOperand (Just happy_var_2) happy_var_4 happy_var_6)}}}}- ) (\r -> happyReturn (happyIn30 r))--happyReduce_82 = happyMonadReduce 7# 23# happyReduction_82-happyReduction_82 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (CTokTyIdent _ happy_var_2) -> - case happyOut128 happy_x_4 of { happy_var_4 -> - case happyOut122 happy_x_6 of { happy_var_6 -> - ( withNodeInfo happy_var_1 $ CAsmOperand (Just happy_var_2) happy_var_4 happy_var_6)}}}}- ) (\r -> happyReturn (happyIn30 r))--happyReduce_83 = happySpecReduce_1 24# happyReduction_83-happyReduction_83 happy_x_1- = case happyOut128 happy_x_1 of { happy_var_1 -> - happyIn31- (singleton happy_var_1- )}--happyReduce_84 = happySpecReduce_3 24# happyReduction_84-happyReduction_84 happy_x_3- happy_x_2- happy_x_1- = case happyOut31 happy_x_1 of { happy_var_1 -> - case happyOut128 happy_x_3 of { happy_var_3 -> - happyIn31- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_85 = happyMonadReduce 2# 25# happyReduction_85-happyReduction_85 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut48 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [])}- ) (\r -> happyReturn (happyIn32 r))--happyReduce_86 = happyMonadReduce 2# 25# happyReduction_86-happyReduction_86 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut49 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [])}- ) (\r -> happyReturn (happyIn32 r))--happyReduce_87 = happyMonadReduce 2# 25# happyReduction_87-happyReduction_87 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut36 happy_x_1 of { happy_var_1 -> - ( case happy_var_1 of CDecl declspecs dies at -> withLength at (CDecl declspecs (List.reverse dies)))}- ) (\r -> happyReturn (happyIn32 r))--happyReduce_88 = happyMonadReduce 2# 25# happyReduction_88-happyReduction_88 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut34 happy_x_1 of { happy_var_1 -> - ( case happy_var_1 of CDecl declspecs dies at -> withLength at (CDecl declspecs (List.reverse dies)))}- ) (\r -> happyReturn (happyIn32 r))--happyReduce_89 = happyMonadReduce 7# 25# happyReduction_89-happyReduction_89 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut126 happy_x_3 of { happy_var_3 -> - case happyOut128 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CStaticAssert happy_var_3 happy_var_5)}}}- ) (\r -> happyReturn (happyIn32 r))--happyReduce_90 = happySpecReduce_0 26# happyReduction_90-happyReduction_90 = happyIn33- (empty- )--happyReduce_91 = happySpecReduce_2 26# happyReduction_91-happyReduction_91 happy_x_2- happy_x_1- = case happyOut33 happy_x_1 of { happy_var_1 -> - case happyOut32 happy_x_2 of { happy_var_2 -> - happyIn33- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_92 = happyMonadReduce 4# 27# happyReduction_92-happyReduction_92 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut75 happy_x_2 of { happy_var_2 -> - case happyOut35 happy_x_3 of { happy_var_3 -> - case happyOut94 happy_x_4 of { happy_var_4 -> - ( let declspecs = reverse happy_var_1 in- do{ declr <- withAsmNameAttrs happy_var_3 happy_var_2- ; doDeclIdent declspecs declr- ; withNodeInfo happy_var_1 $- CDecl declspecs [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}}- ) (\r -> happyReturn (happyIn34 r))--happyReduce_93 = happyMonadReduce 4# 27# happyReduction_93-happyReduction_93 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut75 happy_x_2 of { happy_var_2 -> - case happyOut35 happy_x_3 of { happy_var_3 -> - case happyOut94 happy_x_4 of { happy_var_4 -> - ( let declspecs = liftTypeQuals happy_var_1 in- do{ declr <- withAsmNameAttrs happy_var_3 happy_var_2- ; doDeclIdent declspecs declr- ; withNodeInfo happy_var_1 $ CDecl declspecs [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}}- ) (\r -> happyReturn (happyIn34 r))--happyReduce_94 = happyMonadReduce 5# 27# happyReduction_94-happyReduction_94 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut75 happy_x_3 of { happy_var_3 -> - case happyOut35 happy_x_4 of { happy_var_4 -> - case happyOut94 happy_x_5 of { happy_var_5 -> - ( let declspecs = liftTypeQuals happy_var_1 in- do{ declr <- withAsmNameAttrs happy_var_4 happy_var_3- ; doDeclIdent declspecs declr- ; withNodeInfo happy_var_1 $ CDecl (declspecs ++ liftCAttrs happy_var_2) [(Just (reverseDeclr declr), happy_var_5, Nothing)] })}}}}}- ) (\r -> happyReturn (happyIn34 r))--happyReduce_95 = happyMonadReduce 4# 27# happyReduction_95-happyReduction_95 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut133 happy_x_1 of { happy_var_1 -> - case happyOut75 happy_x_2 of { happy_var_2 -> - case happyOut35 happy_x_3 of { happy_var_3 -> - case happyOut94 happy_x_4 of { happy_var_4 -> - ( let declspecs = liftCAttrs happy_var_1 in- do{ declr <- withAsmNameAttrs happy_var_3 happy_var_2- ; doDeclIdent declspecs declr- ; withNodeInfo happy_var_1 $ CDecl declspecs [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}}- ) (\r -> happyReturn (happyIn34 r))--happyReduce_96 = happyMonadReduce 6# 27# happyReduction_96-happyReduction_96 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut34 happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - case happyOut75 happy_x_4 of { happy_var_4 -> - case happyOut35 happy_x_5 of { happy_var_5 -> - case happyOut94 happy_x_6 of { happy_var_6 -> - ( case happy_var_1 of- CDecl declspecs dies at -> do- declr <- withAsmNameAttrs (fst happy_var_5, snd happy_var_5 ++ happy_var_3) happy_var_4- doDeclIdent declspecs declr- withLength at $ CDecl declspecs ((Just (reverseDeclr declr), happy_var_6, Nothing) : dies))}}}}}- ) (\r -> happyReturn (happyIn34 r))--happyReduce_97 = happySpecReduce_2 28# happyReduction_97-happyReduction_97 happy_x_2- happy_x_1- = case happyOut67 happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_2 of { happy_var_2 -> - happyIn35- ((happy_var_1,happy_var_2)- )}}--happyReduce_98 = happyMonadReduce 4# 29# happyReduction_98-happyReduction_98 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut66 happy_x_2 of { happy_var_2 -> - case happyOut35 happy_x_3 of { happy_var_3 -> - case happyOut94 happy_x_4 of { happy_var_4 -> - ( do{- declr <- withAsmNameAttrs happy_var_3 happy_var_2;- doDeclIdent happy_var_1 declr;- withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}}- ) (\r -> happyReturn (happyIn36 r))--happyReduce_99 = happyMonadReduce 4# 29# happyReduction_99-happyReduction_99 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut44 happy_x_1 of { happy_var_1 -> - case happyOut66 happy_x_2 of { happy_var_2 -> - case happyOut35 happy_x_3 of { happy_var_3 -> - case happyOut94 happy_x_4 of { happy_var_4 -> - ( do{- declr <- withAsmNameAttrs happy_var_3 happy_var_2;- doDeclIdent happy_var_1 declr;- withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr declr), happy_var_4, Nothing)] })}}}}- ) (\r -> happyReturn (happyIn36 r))--happyReduce_100 = happyMonadReduce 6# 29# happyReduction_100-happyReduction_100 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut36 happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - case happyOut66 happy_x_4 of { happy_var_4 -> - case happyOut35 happy_x_5 of { happy_var_5 -> - case happyOut94 happy_x_6 of { happy_var_6 -> - ( case happy_var_1 of- CDecl declspecs dies at -> do- declr <- withAsmNameAttrs (fst happy_var_5, snd happy_var_5 ++ happy_var_3) happy_var_4- doDeclIdent declspecs declr- return (CDecl declspecs ((Just (reverseDeclr declr), happy_var_6, Nothing) : dies) at))}}}}}- ) (\r -> happyReturn (happyIn36 r))--happyReduce_101 = happySpecReduce_1 30# happyReduction_101-happyReduction_101 happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 -> - happyIn37- (reverse happy_var_1- )}--happyReduce_102 = happySpecReduce_1 30# happyReduction_102-happyReduction_102 happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 -> - happyIn37- (reverse happy_var_1- )}--happyReduce_103 = happySpecReduce_1 30# happyReduction_103-happyReduction_103 happy_x_1- = case happyOut50 happy_x_1 of { happy_var_1 -> - happyIn37- (reverse happy_var_1- )}--happyReduce_104 = happySpecReduce_1 31# happyReduction_104-happyReduction_104 happy_x_1- = case happyOut40 happy_x_1 of { happy_var_1 -> - happyIn38- (singleton happy_var_1- )}--happyReduce_105 = happySpecReduce_2 31# happyReduction_105-happyReduction_105 happy_x_2- happy_x_1- = case happyOut133 happy_x_1 of { happy_var_1 -> - case happyOut40 happy_x_2 of { happy_var_2 -> - happyIn38- (reverseList (liftCAttrs happy_var_1) `snoc` happy_var_2- )}}--happyReduce_106 = happySpecReduce_2 31# happyReduction_106-happyReduction_106 happy_x_2- happy_x_1- = case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut40 happy_x_2 of { happy_var_2 -> - happyIn38- (rmap CTypeQual happy_var_1 `snoc` happy_var_2- )}}--happyReduce_107 = happySpecReduce_3 31# happyReduction_107-happyReduction_107 happy_x_3- happy_x_2- happy_x_1- = case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut40 happy_x_3 of { happy_var_3 -> - happyIn38- ((rmap CTypeQual happy_var_1 `rappend` liftCAttrs happy_var_2) `snoc` happy_var_3- )}}}--happyReduce_108 = happySpecReduce_2 31# happyReduction_108-happyReduction_108 happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut39 happy_x_2 of { happy_var_2 -> - happyIn38- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_109 = happySpecReduce_2 31# happyReduction_109-happyReduction_109 happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn38- (addTrailingAttrs happy_var_1 happy_var_2- )}}--happyReduce_110 = happySpecReduce_1 32# happyReduction_110-happyReduction_110 happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - happyIn39- (CStorageSpec happy_var_1- )}--happyReduce_111 = happySpecReduce_1 32# happyReduction_111-happyReduction_111 happy_x_1- = case happyOut64 happy_x_1 of { happy_var_1 -> - happyIn39- (CTypeQual happy_var_1- )}--happyReduce_112 = happySpecReduce_1 32# happyReduction_112-happyReduction_112 happy_x_1- = case happyOut42 happy_x_1 of { happy_var_1 -> - happyIn39- (CFunSpec happy_var_1- )}--happyReduce_113 = happySpecReduce_1 32# happyReduction_113-happyReduction_113 happy_x_1- = case happyOut43 happy_x_1 of { happy_var_1 -> - happyIn39- (CAlignSpec happy_var_1- )}--happyReduce_114 = happySpecReduce_1 33# happyReduction_114-happyReduction_114 happy_x_1- = case happyOut41 happy_x_1 of { happy_var_1 -> - happyIn40- (CStorageSpec happy_var_1- )}--happyReduce_115 = happySpecReduce_1 33# happyReduction_115-happyReduction_115 happy_x_1- = case happyOut42 happy_x_1 of { happy_var_1 -> - happyIn40- (CFunSpec happy_var_1- )}--happyReduce_116 = happySpecReduce_1 33# happyReduction_116-happyReduction_116 happy_x_1- = case happyOut43 happy_x_1 of { happy_var_1 -> - happyIn40- (CAlignSpec happy_var_1- )}--happyReduce_117 = happyMonadReduce 1# 34# happyReduction_117-happyReduction_117 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CTypedef)}- ) (\r -> happyReturn (happyIn41 r))--happyReduce_118 = happyMonadReduce 1# 34# happyReduction_118-happyReduction_118 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CExtern)}- ) (\r -> happyReturn (happyIn41 r))--happyReduce_119 = happyMonadReduce 1# 34# happyReduction_119-happyReduction_119 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CStatic)}- ) (\r -> happyReturn (happyIn41 r))--happyReduce_120 = happyMonadReduce 1# 34# happyReduction_120-happyReduction_120 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CAuto)}- ) (\r -> happyReturn (happyIn41 r))--happyReduce_121 = happyMonadReduce 1# 34# happyReduction_121-happyReduction_121 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CRegister)}- ) (\r -> happyReturn (happyIn41 r))--happyReduce_122 = happyMonadReduce 1# 34# happyReduction_122-happyReduction_122 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CThread)}- ) (\r -> happyReturn (happyIn41 r))--happyReduce_123 = happyMonadReduce 1# 35# happyReduction_123-happyReduction_123 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CInlineQual)}- ) (\r -> happyReturn (happyIn42 r))--happyReduce_124 = happyMonadReduce 1# 35# happyReduction_124-happyReduction_124 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CNoreturnQual)}- ) (\r -> happyReturn (happyIn42 r))--happyReduce_125 = happyMonadReduce 4# 36# happyReduction_125-happyReduction_125 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut86 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CAlignAsType happy_var_3)}}- ) (\r -> happyReturn (happyIn43 r))--happyReduce_126 = happyMonadReduce 4# 36# happyReduction_126-happyReduction_126 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut126 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CAlignAsExpr happy_var_3)}}- ) (\r -> happyReturn (happyIn43 r))--happyReduce_127 = happySpecReduce_1 37# happyReduction_127-happyReduction_127 happy_x_1- = case happyOut47 happy_x_1 of { happy_var_1 -> - happyIn44- (reverse happy_var_1- )}--happyReduce_128 = happySpecReduce_1 37# happyReduction_128-happyReduction_128 happy_x_1- = case happyOut49 happy_x_1 of { happy_var_1 -> - happyIn44- (reverse happy_var_1- )}--happyReduce_129 = happySpecReduce_1 37# happyReduction_129-happyReduction_129 happy_x_1- = case happyOut51 happy_x_1 of { happy_var_1 -> - happyIn44- (reverse happy_var_1- )}--happyReduce_130 = happyMonadReduce 1# 38# happyReduction_130-happyReduction_130 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CVoidType)}- ) (\r -> happyReturn (happyIn45 r))--happyReduce_131 = happyMonadReduce 1# 38# happyReduction_131-happyReduction_131 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CCharType)}- ) (\r -> happyReturn (happyIn45 r))--happyReduce_132 = happyMonadReduce 1# 38# happyReduction_132-happyReduction_132 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CShortType)}- ) (\r -> happyReturn (happyIn45 r))--happyReduce_133 = happyMonadReduce 1# 38# happyReduction_133-happyReduction_133 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CIntType)}- ) (\r -> happyReturn (happyIn45 r))--happyReduce_134 = happyMonadReduce 1# 38# happyReduction_134-happyReduction_134 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CLongType)}- ) (\r -> happyReturn (happyIn45 r))--happyReduce_135 = happyMonadReduce 1# 38# happyReduction_135-happyReduction_135 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CFloatType)}- ) (\r -> happyReturn (happyIn45 r))--happyReduce_136 = happyMonadReduce 1# 38# happyReduction_136-happyReduction_136 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CDoubleType)}- ) (\r -> happyReturn (happyIn45 r))--happyReduce_137 = happyMonadReduce 1# 38# happyReduction_137-happyReduction_137 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CSignedType)}- ) (\r -> happyReturn (happyIn45 r))--happyReduce_138 = happyMonadReduce 1# 38# happyReduction_138-happyReduction_138 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CUnsigType)}- ) (\r -> happyReturn (happyIn45 r))--happyReduce_139 = happyMonadReduce 1# 38# happyReduction_139-happyReduction_139 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CBoolType)}- ) (\r -> happyReturn (happyIn45 r))--happyReduce_140 = happyMonadReduce 1# 38# happyReduction_140-happyReduction_140 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CComplexType)}- ) (\r -> happyReturn (happyIn45 r))--happyReduce_141 = happyMonadReduce 1# 38# happyReduction_141-happyReduction_141 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CInt128Type)}- ) (\r -> happyReturn (happyIn45 r))--happyReduce_142 = happySpecReduce_2 39# happyReduction_142-happyReduction_142 happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn46- (happy_var_1 `snoc` CTypeSpec happy_var_2- )}}--happyReduce_143 = happySpecReduce_2 39# happyReduction_143-happyReduction_143 happy_x_2- happy_x_1- = case happyOut47 happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_2 of { happy_var_2 -> - happyIn46- (happy_var_1 `snoc` CStorageSpec happy_var_2- )}}--happyReduce_144 = happySpecReduce_2 39# happyReduction_144-happyReduction_144 happy_x_2- happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 -> - case happyOut39 happy_x_2 of { happy_var_2 -> - happyIn46- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_145 = happySpecReduce_2 39# happyReduction_145-happyReduction_145 happy_x_2- happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn46- (happy_var_1 `snoc` CTypeSpec happy_var_2- )}}--happyReduce_146 = happySpecReduce_2 39# happyReduction_146-happyReduction_146 happy_x_2- happy_x_1- = case happyOut46 happy_x_1 of { happy_var_1 -> - case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn46- (addTrailingAttrs happy_var_1 happy_var_2- )}}--happyReduce_147 = happySpecReduce_1 40# happyReduction_147-happyReduction_147 happy_x_1- = case happyOut45 happy_x_1 of { happy_var_1 -> - happyIn47- (singleton (CTypeSpec happy_var_1)- )}--happyReduce_148 = happySpecReduce_2 40# happyReduction_148-happyReduction_148 happy_x_2- happy_x_1- = case happyOut133 happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn47- ((reverseList $ liftCAttrs happy_var_1) `snoc` (CTypeSpec happy_var_2)- )}}--happyReduce_149 = happySpecReduce_2 40# happyReduction_149-happyReduction_149 happy_x_2- happy_x_1- = case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn47- (rmap CTypeQual happy_var_1 `snoc` CTypeSpec happy_var_2- )}}--happyReduce_150 = happySpecReduce_3 40# happyReduction_150-happyReduction_150 happy_x_3- happy_x_2- happy_x_1- = case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut45 happy_x_3 of { happy_var_3 -> - happyIn47- (rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec happy_var_3- )}}}--happyReduce_151 = happySpecReduce_2 40# happyReduction_151-happyReduction_151 happy_x_2- happy_x_1- = case happyOut47 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_2 of { happy_var_2 -> - happyIn47- (happy_var_1 `snoc` CTypeQual happy_var_2- )}}--happyReduce_152 = happySpecReduce_2 40# happyReduction_152-happyReduction_152 happy_x_2- happy_x_1- = case happyOut47 happy_x_1 of { happy_var_1 -> - case happyOut45 happy_x_2 of { happy_var_2 -> - happyIn47- (happy_var_1 `snoc` CTypeSpec happy_var_2- )}}--happyReduce_153 = happySpecReduce_2 40# happyReduction_153-happyReduction_153 happy_x_2- happy_x_1- = case happyOut47 happy_x_1 of { happy_var_1 -> - case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn47- (addTrailingAttrs happy_var_1 happy_var_2- )}}--happyReduce_154 = happySpecReduce_2 41# happyReduction_154-happyReduction_154 happy_x_2- happy_x_1- = case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut52 happy_x_2 of { happy_var_2 -> - happyIn48- (happy_var_1 `snoc` CTypeSpec happy_var_2- )}}--happyReduce_155 = happySpecReduce_2 41# happyReduction_155-happyReduction_155 happy_x_2- happy_x_1- = case happyOut49 happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_2 of { happy_var_2 -> - happyIn48- (happy_var_1 `snoc` CStorageSpec happy_var_2- )}}--happyReduce_156 = happySpecReduce_2 41# happyReduction_156-happyReduction_156 happy_x_2- happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 -> - case happyOut39 happy_x_2 of { happy_var_2 -> - happyIn48- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_157 = happySpecReduce_2 41# happyReduction_157-happyReduction_157 happy_x_2- happy_x_1- = case happyOut48 happy_x_1 of { happy_var_1 -> - case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn48- (addTrailingAttrs happy_var_1 happy_var_2- )}}--happyReduce_158 = happySpecReduce_1 42# happyReduction_158-happyReduction_158 happy_x_1- = case happyOut52 happy_x_1 of { happy_var_1 -> - happyIn49- (singleton (CTypeSpec happy_var_1)- )}--happyReduce_159 = happySpecReduce_2 42# happyReduction_159-happyReduction_159 happy_x_2- happy_x_1- = case happyOut133 happy_x_1 of { happy_var_1 -> - case happyOut52 happy_x_2 of { happy_var_2 -> - happyIn49- ((reverseList $ liftCAttrs happy_var_1) `snoc` (CTypeSpec happy_var_2)- )}}--happyReduce_160 = happySpecReduce_2 42# happyReduction_160-happyReduction_160 happy_x_2- happy_x_1- = case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut52 happy_x_2 of { happy_var_2 -> - happyIn49- (rmap CTypeQual happy_var_1 `snoc` CTypeSpec happy_var_2- )}}--happyReduce_161 = happySpecReduce_3 42# happyReduction_161-happyReduction_161 happy_x_3- happy_x_2- happy_x_1- = case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut52 happy_x_3 of { happy_var_3 -> - happyIn49- (rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec happy_var_3- )}}}--happyReduce_162 = happySpecReduce_2 42# happyReduction_162-happyReduction_162 happy_x_2- happy_x_1- = case happyOut49 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_2 of { happy_var_2 -> - happyIn49- (happy_var_1 `snoc` CTypeQual happy_var_2- )}}--happyReduce_163 = happySpecReduce_2 42# happyReduction_163-happyReduction_163 happy_x_2- happy_x_1- = case happyOut49 happy_x_1 of { happy_var_1 -> - case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn49- (addTrailingAttrs happy_var_1 happy_var_2- )}}--happyReduce_164 = happySpecReduce_2 43# happyReduction_164-happyReduction_164 happy_x_2- happy_x_1- = case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut41 happy_x_2 of { happy_var_2 -> - happyIn50- (happy_var_1 `snoc` CStorageSpec happy_var_2- )}}--happyReduce_165 = happyMonadReduce 2# 43# happyReduction_165-happyReduction_165 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (CTokTyIdent _ happy_var_2) -> - ( withNodeInfo happy_var_2 $ \at -> happy_var_1 `snoc` CTypeSpec (CTypeDef happy_var_2 at))}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_166 = happyMonadReduce 5# 43# happyReduction_166-happyReduction_166 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOut122 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_2 $ \at -> happy_var_1 `snoc` CTypeSpec (CTypeOfExpr happy_var_4 at))}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_167 = happyMonadReduce 5# 43# happyReduction_167-happyReduction_167 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOut86 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_2 $ \at -> happy_var_1 `snoc` CTypeSpec (CTypeOfType happy_var_4 at))}}}- ) (\r -> happyReturn (happyIn50 r))--happyReduce_168 = happySpecReduce_2 43# happyReduction_168-happyReduction_168 happy_x_2- happy_x_1- = case happyOut50 happy_x_1 of { happy_var_1 -> - case happyOut39 happy_x_2 of { happy_var_2 -> - happyIn50- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_169 = happySpecReduce_2 43# happyReduction_169-happyReduction_169 happy_x_2- happy_x_1- = case happyOut50 happy_x_1 of { happy_var_1 -> - case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn50- (addTrailingAttrs happy_var_1 happy_var_2- )}}--happyReduce_170 = happyMonadReduce 1# 44# happyReduction_170-happyReduction_170 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) -> - ( withNodeInfo happy_var_1 $ \at -> singleton (CTypeSpec (CTypeDef happy_var_1 at)))}- ) (\r -> happyReturn (happyIn51 r))--happyReduce_171 = happyMonadReduce 4# 44# happyReduction_171-happyReduction_171 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ \at -> singleton (CTypeSpec (CTypeOfExpr happy_var_3 at)))}}- ) (\r -> happyReturn (happyIn51 r))--happyReduce_172 = happyMonadReduce 4# 44# happyReduction_172-happyReduction_172 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut86 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ \at -> singleton (CTypeSpec (CTypeOfType happy_var_3 at)))}}- ) (\r -> happyReturn (happyIn51 r))--happyReduce_173 = happyMonadReduce 2# 44# happyReduction_173-happyReduction_173 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (CTokTyIdent _ happy_var_2) -> - ( withNodeInfo happy_var_2 $ \at -> rmap CTypeQual happy_var_1 `snoc` CTypeSpec (CTypeDef happy_var_2 at))}}- ) (\r -> happyReturn (happyIn51 r))--happyReduce_174 = happyMonadReduce 5# 44# happyReduction_174-happyReduction_174 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOut122 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_2 $ \at -> rmap CTypeQual happy_var_1 `snoc` CTypeSpec (CTypeOfExpr happy_var_4 at))}}}- ) (\r -> happyReturn (happyIn51 r))--happyReduce_175 = happyMonadReduce 5# 44# happyReduction_175-happyReduction_175 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOut86 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_2 $ \at -> rmap CTypeQual happy_var_1 `snoc` CTypeSpec (CTypeOfType happy_var_4 at))}}}- ) (\r -> happyReturn (happyIn51 r))--happyReduce_176 = happyMonadReduce 2# 44# happyReduction_176-happyReduction_176 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut133 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { (CTokTyIdent _ happy_var_2) -> - ( withNodeInfo happy_var_2 $ \at -> reverseList (liftCAttrs happy_var_1) `snoc` (CTypeSpec (CTypeDef happy_var_2 at)))}}- ) (\r -> happyReturn (happyIn51 r))--happyReduce_177 = happyMonadReduce 5# 44# happyReduction_177-happyReduction_177 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut133 happy_x_1 of { happy_var_1 -> - case happyOut122 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ \at -> reverseList (liftCAttrs happy_var_1) `snoc` (CTypeSpec (CTypeOfExpr happy_var_4 at)))}}- ) (\r -> happyReturn (happyIn51 r))--happyReduce_178 = happyMonadReduce 5# 44# happyReduction_178-happyReduction_178 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut133 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { happy_var_2 -> - case happyOut86 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_2 $ \at -> reverseList (liftCAttrs happy_var_1) `snoc` (CTypeSpec (CTypeOfType happy_var_4 at)))}}}- ) (\r -> happyReturn (happyIn51 r))--happyReduce_179 = happyMonadReduce 3# 44# happyReduction_179-happyReduction_179 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { (CTokTyIdent _ happy_var_3) -> - ( withNodeInfo happy_var_3 $ \at -> rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec (CTypeDef happy_var_3 at))}}}- ) (\r -> happyReturn (happyIn51 r))--happyReduce_180 = happyMonadReduce 6# 44# happyReduction_180-happyReduction_180 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { happy_var_3 -> - case happyOut122 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_3 $ \at -> rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec (CTypeOfExpr happy_var_5 at))}}}}- ) (\r -> happyReturn (happyIn51 r))--happyReduce_181 = happyMonadReduce 6# 44# happyReduction_181-happyReduction_181 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOutTok happy_x_3 of { happy_var_3 -> - case happyOut86 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_3 $ \at -> rmap CTypeQual happy_var_1 `rappend` (liftCAttrs happy_var_2) `snoc` CTypeSpec (CTypeOfType happy_var_5 at))}}}}- ) (\r -> happyReturn (happyIn51 r))--happyReduce_182 = happySpecReduce_2 44# happyReduction_182-happyReduction_182 happy_x_2- happy_x_1- = case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_2 of { happy_var_2 -> - happyIn51- (happy_var_1 `snoc` CTypeQual happy_var_2- )}}--happyReduce_183 = happySpecReduce_2 44# happyReduction_183-happyReduction_183 happy_x_2- happy_x_1- = case happyOut51 happy_x_1 of { happy_var_1 -> - case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn51- (addTrailingAttrs happy_var_1 happy_var_2- )}}--happyReduce_184 = happyMonadReduce 1# 45# happyReduction_184-happyReduction_184 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut53 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CSUType happy_var_1)}- ) (\r -> happyReturn (happyIn52 r))--happyReduce_185 = happyMonadReduce 1# 45# happyReduction_185-happyReduction_185 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut61 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CEnumType happy_var_1)}- ) (\r -> happyReturn (happyIn52 r))--happyReduce_186 = happyMonadReduce 6# 46# happyReduction_186-happyReduction_186 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut54 happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_2 of { happy_var_2 -> - case happyOut131 happy_x_3 of { happy_var_3 -> - case happyOut55 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CStruct (unL happy_var_1) (Just happy_var_3) (Just$ reverse happy_var_5) happy_var_2)}}}}- ) (\r -> happyReturn (happyIn53 r))--happyReduce_187 = happyMonadReduce 5# 46# happyReduction_187-happyReduction_187 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut54 happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_2 of { happy_var_2 -> - case happyOut55 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ CStruct (unL happy_var_1) Nothing (Just$ reverse happy_var_4) happy_var_2)}}}- ) (\r -> happyReturn (happyIn53 r))--happyReduce_188 = happyMonadReduce 3# 46# happyReduction_188-happyReduction_188 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut54 happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_2 of { happy_var_2 -> - case happyOut131 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CStruct (unL happy_var_1) (Just happy_var_3) Nothing happy_var_2)}}}- ) (\r -> happyReturn (happyIn53 r))--happyReduce_189 = happySpecReduce_1 47# happyReduction_189-happyReduction_189 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn54- (L CStructTag (posOf happy_var_1)- )}--happyReduce_190 = happySpecReduce_1 47# happyReduction_190-happyReduction_190 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn54- (L CUnionTag (posOf happy_var_1)- )}--happyReduce_191 = happySpecReduce_0 48# happyReduction_191-happyReduction_191 = happyIn55- (empty- )--happyReduce_192 = happySpecReduce_2 48# happyReduction_192-happyReduction_192 happy_x_2- happy_x_1- = case happyOut55 happy_x_1 of { happy_var_1 -> - happyIn55- (happy_var_1- )}--happyReduce_193 = happySpecReduce_2 48# happyReduction_193-happyReduction_193 happy_x_2- happy_x_1- = case happyOut55 happy_x_1 of { happy_var_1 -> - case happyOut56 happy_x_2 of { happy_var_2 -> - happyIn55- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_194 = happySpecReduce_2 49# happyReduction_194-happyReduction_194 happy_x_2- happy_x_1- = case happyOut58 happy_x_1 of { happy_var_1 -> - happyIn56- (case happy_var_1 of CDecl declspecs dies at -> CDecl declspecs (List.reverse dies) at- )}--happyReduce_195 = happySpecReduce_2 49# happyReduction_195-happyReduction_195 happy_x_2- happy_x_1- = case happyOut57 happy_x_1 of { happy_var_1 -> - happyIn56- (case happy_var_1 of CDecl declspecs dies at -> CDecl declspecs (List.reverse dies) at- )}--happyReduce_196 = happySpecReduce_2 49# happyReduction_196-happyReduction_196 happy_x_2- happy_x_1- = case happyOut56 happy_x_2 of { happy_var_2 -> - happyIn56- (happy_var_2- )}--happyReduce_197 = happyMonadReduce 3# 50# happyReduction_197-happyReduction_197 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_2 of { happy_var_2 -> - case happyOut60 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ case happy_var_3 of (d,s) -> CDecl (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) [(d,Nothing,s)])}}}- ) (\r -> happyReturn (happyIn57 r))--happyReduce_198 = happyMonadReduce 2# 50# happyReduction_198-happyReduction_198 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut133 happy_x_1 of { happy_var_1 -> - case happyOut60 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ case happy_var_2 of (d,s) -> CDecl (liftCAttrs happy_var_1) [(d,Nothing,s)])}}- ) (\r -> happyReturn (happyIn57 r))--happyReduce_199 = happyReduce 4# 50# happyReduction_199-happyReduction_199 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut57 happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - case happyOut60 happy_x_4 of { happy_var_4 -> - happyIn57- (case happy_var_1 of- CDecl declspecs dies at ->- case happy_var_4 of- (Just d,s) -> CDecl declspecs ((Just $ appendObjAttrs happy_var_3 d,Nothing,s) : dies) at- (Nothing,s) -> CDecl declspecs ((Nothing,Nothing,s) : dies) at- ) `HappyStk` happyRest}}}--happyReduce_200 = happyMonadReduce 3# 51# happyReduction_200-happyReduction_200 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut44 happy_x_1 of { happy_var_1 -> - case happyOut59 happy_x_2 of { happy_var_2 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ case happy_var_2 of { (Just d,s) -> CDecl happy_var_1 [(Just $! appendObjAttrs happy_var_3 d,Nothing,s)]- ; (Nothing,s) -> CDecl happy_var_1 [(Nothing,Nothing,s)] })}}}- ) (\r -> happyReturn (happyIn58 r))--happyReduce_201 = happyReduce 5# 51# happyReduction_201-happyReduction_201 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut58 happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - case happyOut59 happy_x_4 of { happy_var_4 -> - case happyOut132 happy_x_5 of { happy_var_5 -> - happyIn58- (case happy_var_1 of- CDecl declspecs dies attr ->- case happy_var_4 of- (Just d,s) -> CDecl declspecs ((Just$ appendObjAttrs (happy_var_3++happy_var_5) d,Nothing,s) : dies) attr- (Nothing,s) -> CDecl declspecs ((Nothing,Nothing,s) : dies) attr- ) `HappyStk` happyRest}}}}--happyReduce_202 = happyMonadReduce 1# 51# happyReduction_202-happyReduction_202 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut44 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [])}- ) (\r -> happyReturn (happyIn58 r))--happyReduce_203 = happySpecReduce_1 52# happyReduction_203-happyReduction_203 happy_x_1- = case happyOut66 happy_x_1 of { happy_var_1 -> - happyIn59- ((Just (reverseDeclr happy_var_1), Nothing)- )}--happyReduce_204 = happySpecReduce_2 52# happyReduction_204-happyReduction_204 happy_x_2- happy_x_1- = case happyOut126 happy_x_2 of { happy_var_2 -> - happyIn59- ((Nothing, Just happy_var_2)- )}--happyReduce_205 = happySpecReduce_3 52# happyReduction_205-happyReduction_205 happy_x_3- happy_x_2- happy_x_1- = case happyOut66 happy_x_1 of { happy_var_1 -> - case happyOut126 happy_x_3 of { happy_var_3 -> - happyIn59- ((Just (reverseDeclr happy_var_1), Just happy_var_3)- )}}--happyReduce_206 = happySpecReduce_1 53# happyReduction_206-happyReduction_206 happy_x_1- = case happyOut75 happy_x_1 of { happy_var_1 -> - happyIn60- ((Just (reverseDeclr happy_var_1), Nothing)- )}--happyReduce_207 = happySpecReduce_2 53# happyReduction_207-happyReduction_207 happy_x_2- happy_x_1- = case happyOut126 happy_x_2 of { happy_var_2 -> - happyIn60- ((Nothing, Just happy_var_2)- )}--happyReduce_208 = happySpecReduce_3 53# happyReduction_208-happyReduction_208 happy_x_3- happy_x_2- happy_x_1- = case happyOut75 happy_x_1 of { happy_var_1 -> - case happyOut126 happy_x_3 of { happy_var_3 -> - happyIn60- ((Just (reverseDeclr happy_var_1), Just happy_var_3)- )}}--happyReduce_209 = happySpecReduce_2 53# happyReduction_209-happyReduction_209 happy_x_2- happy_x_1- = case happyOut60 happy_x_1 of { happy_var_1 -> - case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn60- (case happy_var_1 of { (Nothing,expr) -> (Nothing,expr) {- FIXME -}- ; (Just (CDeclr name derived asmname attrs node), bsz) ->- (Just (CDeclr name derived asmname (attrs++happy_var_2) node),bsz)- }- )}}--happyReduce_210 = happyMonadReduce 5# 54# happyReduction_210-happyReduction_210 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_2 of { happy_var_2 -> - case happyOut62 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ CEnum Nothing (Just$ reverse happy_var_4) happy_var_2)}}}- ) (\r -> happyReturn (happyIn61 r))--happyReduce_211 = happyMonadReduce 6# 54# happyReduction_211-happyReduction_211 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_2 of { happy_var_2 -> - case happyOut62 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ CEnum Nothing (Just$ reverse happy_var_4) happy_var_2)}}}- ) (\r -> happyReturn (happyIn61 r))--happyReduce_212 = happyMonadReduce 6# 54# happyReduction_212-happyReduction_212 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_2 of { happy_var_2 -> - case happyOut131 happy_x_3 of { happy_var_3 -> - case happyOut62 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CEnum (Just happy_var_3) (Just$ reverse happy_var_5) happy_var_2)}}}}- ) (\r -> happyReturn (happyIn61 r))--happyReduce_213 = happyMonadReduce 7# 54# happyReduction_213-happyReduction_213 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_2 of { happy_var_2 -> - case happyOut131 happy_x_3 of { happy_var_3 -> - case happyOut62 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CEnum (Just happy_var_3) (Just$ reverse happy_var_5) happy_var_2)}}}}- ) (\r -> happyReturn (happyIn61 r))--happyReduce_214 = happyMonadReduce 3# 54# happyReduction_214-happyReduction_214 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_2 of { happy_var_2 -> - case happyOut131 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CEnum (Just happy_var_3) Nothing happy_var_2)}}}- ) (\r -> happyReturn (happyIn61 r))--happyReduce_215 = happySpecReduce_1 55# happyReduction_215-happyReduction_215 happy_x_1- = case happyOut63 happy_x_1 of { happy_var_1 -> - happyIn62- (singleton happy_var_1- )}--happyReduce_216 = happySpecReduce_3 55# happyReduction_216-happyReduction_216 happy_x_3- happy_x_2- happy_x_1- = case happyOut62 happy_x_1 of { happy_var_1 -> - case happyOut63 happy_x_3 of { happy_var_3 -> - happyIn62- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_217 = happySpecReduce_1 56# happyReduction_217-happyReduction_217 happy_x_1- = case happyOut131 happy_x_1 of { happy_var_1 -> - happyIn63- ((happy_var_1, Nothing)- )}--happyReduce_218 = happySpecReduce_2 56# happyReduction_218-happyReduction_218 happy_x_2- happy_x_1- = case happyOut131 happy_x_1 of { happy_var_1 -> - happyIn63- ((happy_var_1, Nothing)- )}--happyReduce_219 = happyReduce 4# 56# happyReduction_219-happyReduction_219 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut131 happy_x_1 of { happy_var_1 -> - case happyOut126 happy_x_4 of { happy_var_4 -> - happyIn63- ((happy_var_1, Just happy_var_4)- ) `HappyStk` happyRest}}--happyReduce_220 = happySpecReduce_3 56# happyReduction_220-happyReduction_220 happy_x_3- happy_x_2- happy_x_1- = case happyOut131 happy_x_1 of { happy_var_1 -> - case happyOut126 happy_x_3 of { happy_var_3 -> - happyIn63- ((happy_var_1, Just happy_var_3)- )}}--happyReduce_221 = happyMonadReduce 1# 57# happyReduction_221-happyReduction_221 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CConstQual)}- ) (\r -> happyReturn (happyIn64 r))--happyReduce_222 = happyMonadReduce 1# 57# happyReduction_222-happyReduction_222 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CVolatQual)}- ) (\r -> happyReturn (happyIn64 r))--happyReduce_223 = happyMonadReduce 1# 57# happyReduction_223-happyReduction_223 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CRestrQual)}- ) (\r -> happyReturn (happyIn64 r))--happyReduce_224 = happyMonadReduce 1# 57# happyReduction_224-happyReduction_224 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CNullableQual)}- ) (\r -> happyReturn (happyIn64 r))--happyReduce_225 = happyMonadReduce 1# 57# happyReduction_225-happyReduction_225 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CNonnullQual)}- ) (\r -> happyReturn (happyIn64 r))--happyReduce_226 = happyMonadReduce 1# 57# happyReduction_226-happyReduction_226 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CAtomicQual)}- ) (\r -> happyReturn (happyIn64 r))--happyReduce_227 = happySpecReduce_2 58# happyReduction_227-happyReduction_227 happy_x_2- happy_x_1- = case happyOut132 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_2 of { happy_var_2 -> - happyIn65- (reverseList (map CAttrQual happy_var_1) `snoc` happy_var_2- )}}--happyReduce_228 = happySpecReduce_2 58# happyReduction_228-happyReduction_228 happy_x_2- happy_x_1- = case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut64 happy_x_2 of { happy_var_2 -> - happyIn65- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_229 = happySpecReduce_3 58# happyReduction_229-happyReduction_229 happy_x_3- happy_x_2- happy_x_1- = case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut64 happy_x_3 of { happy_var_3 -> - happyIn65- ((happy_var_1 `rappend` map CAttrQual happy_var_2) `snoc` happy_var_3- )}}}--happyReduce_230 = happySpecReduce_1 59# happyReduction_230-happyReduction_230 happy_x_1- = case happyOut75 happy_x_1 of { happy_var_1 -> - happyIn66- (happy_var_1- )}--happyReduce_231 = happySpecReduce_1 59# happyReduction_231-happyReduction_231 happy_x_1- = case happyOut68 happy_x_1 of { happy_var_1 -> - happyIn66- (happy_var_1- )}--happyReduce_232 = happySpecReduce_0 60# happyReduction_232-happyReduction_232 = happyIn67- (Nothing- )--happyReduce_233 = happyReduce 4# 60# happyReduction_233-happyReduction_233 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut128 happy_x_3 of { happy_var_3 -> - happyIn67- (Just happy_var_3- ) `HappyStk` happyRest}--happyReduce_234 = happySpecReduce_1 61# happyReduction_234-happyReduction_234 happy_x_1- = case happyOut72 happy_x_1 of { happy_var_1 -> - happyIn68- (happy_var_1- )}--happyReduce_235 = happySpecReduce_1 61# happyReduction_235-happyReduction_235 happy_x_1- = case happyOut69 happy_x_1 of { happy_var_1 -> - happyIn68- (happy_var_1- )}--happyReduce_236 = happyMonadReduce 1# 62# happyReduction_236-happyReduction_236 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) -> - ( withNodeInfo happy_var_1 $ mkVarDeclr happy_var_1)}- ) (\r -> happyReturn (happyIn69 r))--happyReduce_237 = happyMonadReduce 2# 62# happyReduction_237-happyReduction_237 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) -> - case happyOut88 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ \at -> happy_var_2 (mkVarDeclr happy_var_1 at))}}- ) (\r -> happyReturn (happyIn69 r))--happyReduce_238 = happySpecReduce_1 62# happyReduction_238-happyReduction_238 happy_x_1- = case happyOut70 happy_x_1 of { happy_var_1 -> - happyIn69- (happy_var_1- )}--happyReduce_239 = happySpecReduce_1 63# happyReduction_239-happyReduction_239 happy_x_1- = case happyOut71 happy_x_1 of { happy_var_1 -> - happyIn70- (happy_var_1- )}--happyReduce_240 = happyMonadReduce 2# 63# happyReduction_240-happyReduction_240 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut69 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}}- ) (\r -> happyReturn (happyIn70 r))--happyReduce_241 = happyMonadReduce 3# 63# happyReduction_241-happyReduction_241 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut69 happy_x_3 of { happy_var_3 -> - ( withAttribute happy_var_1 happy_var_2 $ ptrDeclr happy_var_3 [])}}}- ) (\r -> happyReturn (happyIn70 r))--happyReduce_242 = happyMonadReduce 3# 63# happyReduction_242-happyReduction_242 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut69 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}}- ) (\r -> happyReturn (happyIn70 r))--happyReduce_243 = happyMonadReduce 4# 63# happyReduction_243-happyReduction_243 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut133 happy_x_3 of { happy_var_3 -> - case happyOut69 happy_x_4 of { happy_var_4 -> - ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr happy_var_4 (reverse happy_var_2))}}}}- ) (\r -> happyReturn (happyIn70 r))--happyReduce_244 = happySpecReduce_3 64# happyReduction_244-happyReduction_244 happy_x_3- happy_x_2- happy_x_1- = case happyOut70 happy_x_2 of { happy_var_2 -> - happyIn71- (happy_var_2- )}--happyReduce_245 = happyReduce 4# 64# happyReduction_245-happyReduction_245 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut70 happy_x_2 of { happy_var_2 -> - case happyOut88 happy_x_4 of { happy_var_4 -> - happyIn71- (happy_var_4 happy_var_2- ) `HappyStk` happyRest}}--happyReduce_246 = happyReduce 4# 64# happyReduction_246-happyReduction_246 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut70 happy_x_3 of { happy_var_3 -> - happyIn71- (appendDeclrAttrs happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--happyReduce_247 = happyReduce 5# 64# happyReduction_247-happyReduction_247 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut70 happy_x_3 of { happy_var_3 -> - case happyOut88 happy_x_5 of { happy_var_5 -> - happyIn71- (appendDeclrAttrs happy_var_2 (happy_var_5 happy_var_3)- ) `HappyStk` happyRest}}}--happyReduce_248 = happySpecReduce_1 65# happyReduction_248-happyReduction_248 happy_x_1- = case happyOut73 happy_x_1 of { happy_var_1 -> - happyIn72- (happy_var_1- )}--happyReduce_249 = happyMonadReduce 4# 65# happyReduction_249-happyReduction_249 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut74 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 [])}}- ) (\r -> happyReturn (happyIn72 r))--happyReduce_250 = happyMonadReduce 5# 65# happyReduction_250-happyReduction_250 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut74 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_4 (reverse happy_var_2))}}}- ) (\r -> happyReturn (happyIn72 r))--happyReduce_251 = happyMonadReduce 6# 65# happyReduction_251-happyReduction_251 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut133 happy_x_3 of { happy_var_3 -> - case happyOut74 happy_x_5 of { happy_var_5 -> - ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr happy_var_5 (reverse happy_var_2))}}}}- ) (\r -> happyReturn (happyIn72 r))--happyReduce_252 = happyMonadReduce 2# 65# happyReduction_252-happyReduction_252 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut72 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}}- ) (\r -> happyReturn (happyIn72 r))--happyReduce_253 = happyMonadReduce 3# 65# happyReduction_253-happyReduction_253 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut72 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}}- ) (\r -> happyReturn (happyIn72 r))--happyReduce_254 = happyMonadReduce 4# 65# happyReduction_254-happyReduction_254 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut133 happy_x_3 of { happy_var_3 -> - case happyOut72 happy_x_4 of { happy_var_4 -> - ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr happy_var_4 (reverse happy_var_2))}}}}- ) (\r -> happyReturn (happyIn72 r))--happyReduce_255 = happySpecReduce_3 66# happyReduction_255-happyReduction_255 happy_x_3- happy_x_2- happy_x_1- = case happyOut72 happy_x_2 of { happy_var_2 -> - happyIn73- (happy_var_2- )}--happyReduce_256 = happyReduce 4# 66# happyReduction_256-happyReduction_256 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut74 happy_x_2 of { happy_var_2 -> - case happyOut88 happy_x_3 of { happy_var_3 -> - happyIn73- (happy_var_3 happy_var_2- ) `HappyStk` happyRest}}--happyReduce_257 = happyReduce 4# 66# happyReduction_257-happyReduction_257 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut72 happy_x_2 of { happy_var_2 -> - case happyOut88 happy_x_4 of { happy_var_4 -> - happyIn73- (happy_var_4 happy_var_2- ) `HappyStk` happyRest}}--happyReduce_258 = happyMonadReduce 1# 67# happyReduction_258-happyReduction_258 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) -> - ( withNodeInfo happy_var_1 $ mkVarDeclr happy_var_1)}- ) (\r -> happyReturn (happyIn74 r))--happyReduce_259 = happySpecReduce_3 67# happyReduction_259-happyReduction_259 happy_x_3- happy_x_2- happy_x_1- = case happyOut74 happy_x_2 of { happy_var_2 -> - happyIn74- (happy_var_2- )}--happyReduce_260 = happySpecReduce_1 68# happyReduction_260-happyReduction_260 happy_x_1- = case happyOut76 happy_x_1 of { happy_var_1 -> - happyIn75- (happy_var_1- )}--happyReduce_261 = happySpecReduce_1 68# happyReduction_261-happyReduction_261 happy_x_1- = case happyOut78 happy_x_1 of { happy_var_1 -> - happyIn75- (happy_var_1- )}--happyReduce_262 = happySpecReduce_1 69# happyReduction_262-happyReduction_262 happy_x_1- = case happyOut77 happy_x_1 of { happy_var_1 -> - happyIn76- (happy_var_1- )}--happyReduce_263 = happyMonadReduce 2# 69# happyReduction_263-happyReduction_263 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut75 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}}- ) (\r -> happyReturn (happyIn76 r))--happyReduce_264 = happyMonadReduce 3# 69# happyReduction_264-happyReduction_264 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut75 happy_x_3 of { happy_var_3 -> - ( withAttribute happy_var_1 happy_var_2 $ ptrDeclr happy_var_3 [])}}}- ) (\r -> happyReturn (happyIn76 r))--happyReduce_265 = happyMonadReduce 3# 69# happyReduction_265-happyReduction_265 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut75 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}}- ) (\r -> happyReturn (happyIn76 r))--happyReduce_266 = happyMonadReduce 4# 69# happyReduction_266-happyReduction_266 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut133 happy_x_3 of { happy_var_3 -> - case happyOut75 happy_x_4 of { happy_var_4 -> - ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr happy_var_4 (reverse happy_var_2))}}}}- ) (\r -> happyReturn (happyIn76 r))--happyReduce_267 = happySpecReduce_2 70# happyReduction_267-happyReduction_267 happy_x_2- happy_x_1- = case happyOut78 happy_x_1 of { happy_var_1 -> - case happyOut88 happy_x_2 of { happy_var_2 -> - happyIn77- (happy_var_2 happy_var_1- )}}--happyReduce_268 = happySpecReduce_3 70# happyReduction_268-happyReduction_268 happy_x_3- happy_x_2- happy_x_1- = case happyOut76 happy_x_2 of { happy_var_2 -> - happyIn77- (happy_var_2- )}--happyReduce_269 = happyReduce 4# 70# happyReduction_269-happyReduction_269 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut76 happy_x_2 of { happy_var_2 -> - case happyOut88 happy_x_4 of { happy_var_4 -> - happyIn77- (happy_var_4 happy_var_2- ) `HappyStk` happyRest}}--happyReduce_270 = happyReduce 4# 70# happyReduction_270-happyReduction_270 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut76 happy_x_3 of { happy_var_3 -> - happyIn77- (appendDeclrAttrs happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--happyReduce_271 = happyReduce 5# 70# happyReduction_271-happyReduction_271 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut76 happy_x_3 of { happy_var_3 -> - case happyOut88 happy_x_5 of { happy_var_5 -> - happyIn77- (appendDeclrAttrs happy_var_2 (happy_var_5 happy_var_3)- ) `HappyStk` happyRest}}}--happyReduce_272 = happyMonadReduce 1# 71# happyReduction_272-happyReduction_272 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) -> - ( withNodeInfo happy_var_1 $ mkVarDeclr happy_var_1)}- ) (\r -> happyReturn (happyIn78 r))--happyReduce_273 = happySpecReduce_3 71# happyReduction_273-happyReduction_273 happy_x_3- happy_x_2- happy_x_1- = case happyOut78 happy_x_2 of { happy_var_2 -> - happyIn78- (happy_var_2- )}--happyReduce_274 = happyReduce 4# 71# happyReduction_274-happyReduction_274 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut78 happy_x_3 of { happy_var_3 -> - happyIn78- (appendDeclrAttrs happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--happyReduce_275 = happySpecReduce_1 72# happyReduction_275-happyReduction_275 happy_x_1- = case happyOut80 happy_x_1 of { happy_var_1 -> - happyIn79- (reverseDeclr happy_var_1- )}--happyReduce_276 = happySpecReduce_1 73# happyReduction_276-happyReduction_276 happy_x_1- = case happyOut81 happy_x_1 of { happy_var_1 -> - happyIn80- (happy_var_1- )}--happyReduce_277 = happyMonadReduce 2# 73# happyReduction_277-happyReduction_277 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut80 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}}- ) (\r -> happyReturn (happyIn80 r))--happyReduce_278 = happyMonadReduce 3# 73# happyReduction_278-happyReduction_278 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut80 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}}- ) (\r -> happyReturn (happyIn80 r))--happyReduce_279 = happyMonadReduce 4# 74# happyReduction_279-happyReduction_279 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut78 happy_x_1 of { happy_var_1 -> - case happyOut85 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ funDeclr happy_var_1 (Left $ reverse happy_var_3) [])}}- ) (\r -> happyReturn (happyIn81 r))--happyReduce_280 = happySpecReduce_3 74# happyReduction_280-happyReduction_280 happy_x_3- happy_x_2- happy_x_1- = case happyOut80 happy_x_2 of { happy_var_2 -> - happyIn81- (happy_var_2- )}--happyReduce_281 = happyReduce 4# 74# happyReduction_281-happyReduction_281 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut80 happy_x_2 of { happy_var_2 -> - case happyOut88 happy_x_4 of { happy_var_4 -> - happyIn81- (happy_var_4 happy_var_2- ) `HappyStk` happyRest}}--happyReduce_282 = happySpecReduce_0 75# happyReduction_282-happyReduction_282 = happyIn82- (([], False)- )--happyReduce_283 = happySpecReduce_1 75# happyReduction_283-happyReduction_283 happy_x_1- = case happyOut83 happy_x_1 of { happy_var_1 -> - happyIn82- ((reverse happy_var_1, False)- )}--happyReduce_284 = happySpecReduce_3 75# happyReduction_284-happyReduction_284 happy_x_3- happy_x_2- happy_x_1- = case happyOut83 happy_x_1 of { happy_var_1 -> - happyIn82- ((reverse happy_var_1, True)- )}--happyReduce_285 = happySpecReduce_1 76# happyReduction_285-happyReduction_285 happy_x_1- = case happyOut84 happy_x_1 of { happy_var_1 -> - happyIn83- (singleton happy_var_1- )}--happyReduce_286 = happySpecReduce_3 76# happyReduction_286-happyReduction_286 happy_x_3- happy_x_2- happy_x_1- = case happyOut83 happy_x_1 of { happy_var_1 -> - case happyOut84 happy_x_3 of { happy_var_3 -> - happyIn83- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_287 = happyMonadReduce 1# 77# happyReduction_287-happyReduction_287 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [])}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_288 = happyMonadReduce 2# 77# happyReduction_288-happyReduction_288 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut87 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_289 = happyMonadReduce 3# 77# happyReduction_289-happyReduction_289 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut75 happy_x_2 of { happy_var_2 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_290 = happyMonadReduce 3# 77# happyReduction_290-happyReduction_290 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut37 happy_x_1 of { happy_var_1 -> - case happyOut69 happy_x_2 of { happy_var_2 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_291 = happyMonadReduce 1# 77# happyReduction_291-happyReduction_291 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [])}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_292 = happyMonadReduce 2# 77# happyReduction_292-happyReduction_292 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut87 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_293 = happyMonadReduce 3# 77# happyReduction_293-happyReduction_293 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut38 happy_x_1 of { happy_var_1 -> - case happyOut75 happy_x_2 of { happy_var_2 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CDecl (reverse happy_var_1) [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_294 = happyMonadReduce 1# 77# happyReduction_294-happyReduction_294 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut44 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [])}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_295 = happyMonadReduce 2# 77# happyReduction_295-happyReduction_295 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut44 happy_x_1 of { happy_var_1 -> - case happyOut87 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_296 = happyMonadReduce 3# 77# happyReduction_296-happyReduction_296 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut44 happy_x_1 of { happy_var_1 -> - case happyOut75 happy_x_2 of { happy_var_2 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_297 = happyMonadReduce 3# 77# happyReduction_297-happyReduction_297 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut44 happy_x_1 of { happy_var_1 -> - case happyOut69 happy_x_2 of { happy_var_2 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr $! appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_298 = happyMonadReduce 1# 77# happyReduction_298-happyReduction_298 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1) [])}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_299 = happyMonadReduce 2# 77# happyReduction_299-happyReduction_299 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut134 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) [])}}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_300 = happyMonadReduce 2# 77# happyReduction_300-happyReduction_300 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut87 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1) [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_301 = happyMonadReduce 3# 77# happyReduction_301-happyReduction_301 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut75 happy_x_2 of { happy_var_2 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1) [(Just (reverseDeclr$ appendDeclrAttrs happy_var_3 happy_var_2), Nothing, Nothing)])}}}- ) (\r -> happyReturn (happyIn84 r))--happyReduce_302 = happySpecReduce_1 78# happyReduction_302-happyReduction_302 happy_x_1- = case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) -> - happyIn85- (singleton happy_var_1- )}--happyReduce_303 = happySpecReduce_3 78# happyReduction_303-happyReduction_303 happy_x_3- happy_x_2- happy_x_1- = case happyOut85 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_3 of { (CTokIdent _ happy_var_3) -> - happyIn85- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_304 = happyMonadReduce 1# 79# happyReduction_304-happyReduction_304 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut44 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [])}- ) (\r -> happyReturn (happyIn86 r))--happyReduce_305 = happyMonadReduce 2# 79# happyReduction_305-happyReduction_305 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut44 happy_x_1 of { happy_var_1 -> - case happyOut87 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CDecl happy_var_1 [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}}- ) (\r -> happyReturn (happyIn86 r))--happyReduce_306 = happyMonadReduce 2# 79# happyReduction_306-happyReduction_306 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut134 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1 ++ liftCAttrs happy_var_2) [])}}- ) (\r -> happyReturn (happyIn86 r))--happyReduce_307 = happyMonadReduce 2# 79# happyReduction_307-happyReduction_307 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut65 happy_x_1 of { happy_var_1 -> - case happyOut87 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CDecl (liftTypeQuals happy_var_1) [(Just (reverseDeclr happy_var_2), Nothing, Nothing)])}}- ) (\r -> happyReturn (happyIn86 r))--happyReduce_308 = happySpecReduce_1 80# happyReduction_308-happyReduction_308 happy_x_1- = case happyOut91 happy_x_1 of { happy_var_1 -> - happyIn87- (happy_var_1- )}--happyReduce_309 = happySpecReduce_1 80# happyReduction_309-happyReduction_309 happy_x_1- = case happyOut92 happy_x_1 of { happy_var_1 -> - happyIn87- (happy_var_1- )}--happyReduce_310 = happySpecReduce_1 80# happyReduction_310-happyReduction_310 happy_x_1- = case happyOut88 happy_x_1 of { happy_var_1 -> - happyIn87- (happy_var_1 emptyDeclr- )}--happyReduce_311 = happySpecReduce_1 81# happyReduction_311-happyReduction_311 happy_x_1- = case happyOut89 happy_x_1 of { happy_var_1 -> - happyIn88- (happy_var_1- )}--happyReduce_312 = happyMonadReduce 3# 81# happyReduction_312-happyReduction_312 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut82 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ \at declr -> case happy_var_2 of- (params, variadic) -> funDeclr declr (Right (params,variadic)) [] at)}}- ) (\r -> happyReturn (happyIn88 r))--happyReduce_313 = happySpecReduce_1 82# happyReduction_313-happyReduction_313 happy_x_1- = case happyOut90 happy_x_1 of { happy_var_1 -> - happyIn89- (happy_var_1- )}--happyReduce_314 = happySpecReduce_2 82# happyReduction_314-happyReduction_314 happy_x_2- happy_x_1- = case happyOut89 happy_x_1 of { happy_var_1 -> - case happyOut90 happy_x_2 of { happy_var_2 -> - happyIn89- (\decl -> happy_var_2 (happy_var_1 decl)- )}}--happyReduce_315 = happyMonadReduce 3# 83# happyReduction_315-happyReduction_315 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut125 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ \at declr -> arrDeclr declr [] False False happy_var_2 at)}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_316 = happyMonadReduce 4# 83# happyReduction_316-happyReduction_316 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut125 happy_x_3 of { happy_var_3 -> - ( withAttributePF happy_var_1 happy_var_2 $ \at declr -> arrDeclr declr [] False False happy_var_3 at)}}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_317 = happyMonadReduce 4# 83# happyReduction_317-happyReduction_317 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut125 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ \at declr -> arrDeclr declr (reverse happy_var_2) False False happy_var_3 at)}}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_318 = happyMonadReduce 5# 83# happyReduction_318-happyReduction_318 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut133 happy_x_3 of { happy_var_3 -> - case happyOut125 happy_x_4 of { happy_var_4 -> - ( withAttributePF happy_var_1 happy_var_3 $ \at declr -> arrDeclr declr (reverse happy_var_2) False False happy_var_4 at)}}}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_319 = happyMonadReduce 5# 83# happyReduction_319-happyReduction_319 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - case happyOut120 happy_x_4 of { happy_var_4 -> - ( withAttributePF happy_var_1 happy_var_3 $ \at declr -> arrDeclr declr [] False True (Just happy_var_4) at)}}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_320 = happyMonadReduce 6# 83# happyReduction_320-happyReduction_320 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_3 of { happy_var_3 -> - case happyOut132 happy_x_4 of { happy_var_4 -> - case happyOut120 happy_x_5 of { happy_var_5 -> - ( withAttributePF happy_var_1 happy_var_4 $ \at declr -> arrDeclr declr (reverse happy_var_3) False True (Just happy_var_5) at)}}}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_321 = happyMonadReduce 7# 83# happyReduction_321-happyReduction_321 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - case happyOut132 happy_x_5 of { happy_var_5 -> - case happyOut120 happy_x_6 of { happy_var_6 -> - ( withAttributePF happy_var_1 (happy_var_3 ++ happy_var_5) $ \at declr -> arrDeclr declr (reverse happy_var_2) False True (Just happy_var_6) at)}}}}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_322 = happyMonadReduce 4# 83# happyReduction_322-happyReduction_322 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - ( withAttributePF happy_var_1 happy_var_3 $ \at declr -> arrDeclr declr [] True False Nothing at)}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_323 = happyMonadReduce 5# 83# happyReduction_323-happyReduction_323 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut132 happy_x_4 of { happy_var_4 -> - ( withAttributePF happy_var_1 (happy_var_2 ++ happy_var_4) $ \at declr -> arrDeclr declr [] True False Nothing at)}}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_324 = happyMonadReduce 5# 83# happyReduction_324-happyReduction_324 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut132 happy_x_4 of { happy_var_4 -> - ( withAttributePF happy_var_1 happy_var_4 $ \at declr -> arrDeclr declr (reverse happy_var_2) True False Nothing at)}}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_325 = happyMonadReduce 6# 83# happyReduction_325-happyReduction_325 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut133 happy_x_3 of { happy_var_3 -> - case happyOut132 happy_x_5 of { happy_var_5 -> - ( withAttributePF happy_var_1 (happy_var_3 ++ happy_var_5) $ \at declr -> arrDeclr declr (reverse happy_var_2) True False Nothing at)}}}}- ) (\r -> happyReturn (happyIn90 r))--happyReduce_326 = happyMonadReduce 1# 84# happyReduction_326-happyReduction_326 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ ptrDeclr emptyDeclr [])}- ) (\r -> happyReturn (happyIn91 r))--happyReduce_327 = happyMonadReduce 3# 84# happyReduction_327-happyReduction_327 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut132 happy_x_3 of { happy_var_3 -> - ( withAttribute happy_var_1 happy_var_3 $ ptrDeclr emptyDeclr (reverse happy_var_2))}}}- ) (\r -> happyReturn (happyIn91 r))--happyReduce_328 = happyMonadReduce 2# 84# happyReduction_328-happyReduction_328 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut87 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_2 [])}}- ) (\r -> happyReturn (happyIn91 r))--happyReduce_329 = happyMonadReduce 3# 84# happyReduction_329-happyReduction_329 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut65 happy_x_2 of { happy_var_2 -> - case happyOut87 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ ptrDeclr happy_var_3 (reverse happy_var_2))}}}- ) (\r -> happyReturn (happyIn91 r))--happyReduce_330 = happyMonadReduce 2# 84# happyReduction_330-happyReduction_330 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - ( withAttribute happy_var_1 happy_var_2 $ ptrDeclr emptyDeclr [])}}- ) (\r -> happyReturn (happyIn91 r))--happyReduce_331 = happyMonadReduce 3# 84# happyReduction_331-happyReduction_331 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut87 happy_x_3 of { happy_var_3 -> - ( withAttribute happy_var_1 happy_var_2 $ ptrDeclr happy_var_3 [])}}}- ) (\r -> happyReturn (happyIn91 r))--happyReduce_332 = happySpecReduce_3 85# happyReduction_332-happyReduction_332 happy_x_3- happy_x_2- happy_x_1- = case happyOut91 happy_x_2 of { happy_var_2 -> - happyIn92- (happy_var_2- )}--happyReduce_333 = happySpecReduce_3 85# happyReduction_333-happyReduction_333 happy_x_3- happy_x_2- happy_x_1- = case happyOut92 happy_x_2 of { happy_var_2 -> - happyIn92- (happy_var_2- )}--happyReduce_334 = happySpecReduce_3 85# happyReduction_334-happyReduction_334 happy_x_3- happy_x_2- happy_x_1- = case happyOut88 happy_x_2 of { happy_var_2 -> - happyIn92- (happy_var_2 emptyDeclr- )}--happyReduce_335 = happyReduce 4# 85# happyReduction_335-happyReduction_335 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut91 happy_x_2 of { happy_var_2 -> - case happyOut88 happy_x_4 of { happy_var_4 -> - happyIn92- (happy_var_4 happy_var_2- ) `HappyStk` happyRest}}--happyReduce_336 = happyReduce 4# 85# happyReduction_336-happyReduction_336 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut91 happy_x_3 of { happy_var_3 -> - happyIn92- (appendDeclrAttrs happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--happyReduce_337 = happyReduce 4# 85# happyReduction_337-happyReduction_337 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut92 happy_x_3 of { happy_var_3 -> - happyIn92- (appendDeclrAttrs happy_var_2 happy_var_3- ) `HappyStk` happyRest}}--happyReduce_338 = happyReduce 4# 85# happyReduction_338-happyReduction_338 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut88 happy_x_3 of { happy_var_3 -> - happyIn92- (appendDeclrAttrs happy_var_2 (happy_var_3 emptyDeclr)- ) `HappyStk` happyRest}}--happyReduce_339 = happyReduce 5# 85# happyReduction_339-happyReduction_339 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut133 happy_x_2 of { happy_var_2 -> - case happyOut91 happy_x_3 of { happy_var_3 -> - case happyOut88 happy_x_5 of { happy_var_5 -> - happyIn92- (appendDeclrAttrs happy_var_2 (happy_var_5 happy_var_3)- ) `HappyStk` happyRest}}}--happyReduce_340 = happySpecReduce_2 85# happyReduction_340-happyReduction_340 happy_x_2- happy_x_1- = case happyOut92 happy_x_1 of { happy_var_1 -> - case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn92- (appendDeclrAttrs happy_var_2 happy_var_1- )}}--happyReduce_341 = happyMonadReduce 1# 86# happyReduction_341-happyReduction_341 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut120 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CInitExpr happy_var_1)}- ) (\r -> happyReturn (happyIn93 r))--happyReduce_342 = happyMonadReduce 3# 86# happyReduction_342-happyReduction_342 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut95 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CInitList (reverse happy_var_2))}}- ) (\r -> happyReturn (happyIn93 r))--happyReduce_343 = happyMonadReduce 4# 86# happyReduction_343-happyReduction_343 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut95 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CInitList (reverse happy_var_2))}}- ) (\r -> happyReturn (happyIn93 r))--happyReduce_344 = happySpecReduce_0 87# happyReduction_344-happyReduction_344 = happyIn94- (Nothing- )--happyReduce_345 = happySpecReduce_2 87# happyReduction_345-happyReduction_345 happy_x_2- happy_x_1- = case happyOut93 happy_x_2 of { happy_var_2 -> - happyIn94- (Just happy_var_2- )}--happyReduce_346 = happySpecReduce_0 88# happyReduction_346-happyReduction_346 = happyIn95- (empty- )--happyReduce_347 = happySpecReduce_1 88# happyReduction_347-happyReduction_347 happy_x_1- = case happyOut93 happy_x_1 of { happy_var_1 -> - happyIn95- (singleton ([],happy_var_1)- )}--happyReduce_348 = happySpecReduce_2 88# happyReduction_348-happyReduction_348 happy_x_2- happy_x_1- = case happyOut96 happy_x_1 of { happy_var_1 -> - case happyOut93 happy_x_2 of { happy_var_2 -> - happyIn95- (singleton (happy_var_1,happy_var_2)- )}}--happyReduce_349 = happySpecReduce_3 88# happyReduction_349-happyReduction_349 happy_x_3- happy_x_2- happy_x_1- = case happyOut95 happy_x_1 of { happy_var_1 -> - case happyOut93 happy_x_3 of { happy_var_3 -> - happyIn95- (happy_var_1 `snoc` ([],happy_var_3)- )}}--happyReduce_350 = happyReduce 4# 88# happyReduction_350-happyReduction_350 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut95 happy_x_1 of { happy_var_1 -> - case happyOut96 happy_x_3 of { happy_var_3 -> - case happyOut93 happy_x_4 of { happy_var_4 -> - happyIn95- (happy_var_1 `snoc` (happy_var_3,happy_var_4)- ) `HappyStk` happyRest}}}--happyReduce_351 = happySpecReduce_2 89# happyReduction_351-happyReduction_351 happy_x_2- happy_x_1- = case happyOut97 happy_x_1 of { happy_var_1 -> - happyIn96- (reverse happy_var_1- )}--happyReduce_352 = happyMonadReduce 2# 89# happyReduction_352-happyReduction_352 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut131 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ \at -> [CMemberDesig happy_var_1 at])}- ) (\r -> happyReturn (happyIn96 r))--happyReduce_353 = happySpecReduce_1 89# happyReduction_353-happyReduction_353 happy_x_1- = case happyOut99 happy_x_1 of { happy_var_1 -> - happyIn96- ([happy_var_1]- )}--happyReduce_354 = happySpecReduce_1 90# happyReduction_354-happyReduction_354 happy_x_1- = case happyOut98 happy_x_1 of { happy_var_1 -> - happyIn97- (singleton happy_var_1- )}--happyReduce_355 = happySpecReduce_2 90# happyReduction_355-happyReduction_355 happy_x_2- happy_x_1- = case happyOut97 happy_x_1 of { happy_var_1 -> - case happyOut98 happy_x_2 of { happy_var_2 -> - happyIn97- (happy_var_1 `snoc` happy_var_2- )}}--happyReduce_356 = happyMonadReduce 3# 91# happyReduction_356-happyReduction_356 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut126 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CArrDesig happy_var_2)}}- ) (\r -> happyReturn (happyIn98 r))--happyReduce_357 = happyMonadReduce 2# 91# happyReduction_357-happyReduction_357 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut131 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CMemberDesig happy_var_2)}}- ) (\r -> happyReturn (happyIn98 r))--happyReduce_358 = happySpecReduce_1 91# happyReduction_358-happyReduction_358 happy_x_1- = case happyOut99 happy_x_1 of { happy_var_1 -> - happyIn98- (happy_var_1- )}--happyReduce_359 = happyMonadReduce 5# 92# happyReduction_359-happyReduction_359 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut126 happy_x_2 of { happy_var_2 -> - case happyOut126 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ CRangeDesig happy_var_2 happy_var_4)}}}- ) (\r -> happyReturn (happyIn99 r))--happyReduce_360 = happyMonadReduce 1# 93# happyReduction_360-happyReduction_360 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) -> - ( withNodeInfo happy_var_1 $ CVar happy_var_1)}- ) (\r -> happyReturn (happyIn100 r))--happyReduce_361 = happySpecReduce_1 93# happyReduction_361-happyReduction_361 happy_x_1- = case happyOut127 happy_x_1 of { happy_var_1 -> - happyIn100- (CConst happy_var_1- )}--happyReduce_362 = happySpecReduce_1 93# happyReduction_362-happyReduction_362 happy_x_1- = case happyOut128 happy_x_1 of { happy_var_1 -> - happyIn100- (CConst (liftStrLit happy_var_1)- )}--happyReduce_363 = happySpecReduce_3 93# happyReduction_363-happyReduction_363 happy_x_3- happy_x_2- happy_x_1- = case happyOut122 happy_x_2 of { happy_var_2 -> - happyIn100- (happy_var_2- )}--happyReduce_364 = happyMonadReduce 6# 93# happyReduction_364-happyReduction_364 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut120 happy_x_3 of { happy_var_3 -> - case happyOut101 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CGenericSelection happy_var_3 (reverse happy_var_5))}}}- ) (\r -> happyReturn (happyIn100 r))--happyReduce_365 = happyMonadReduce 3# 93# happyReduction_365-happyReduction_365 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut14 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CStatExpr happy_var_2)}}- ) (\r -> happyReturn (happyIn100 r))--happyReduce_366 = happyMonadReduce 6# 93# happyReduction_366-happyReduction_366 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut120 happy_x_3 of { happy_var_3 -> - case happyOut86 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CBuiltinExpr . CBuiltinVaArg happy_var_3 happy_var_5)}}}- ) (\r -> happyReturn (happyIn100 r))--happyReduce_367 = happyMonadReduce 6# 93# happyReduction_367-happyReduction_367 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut86 happy_x_3 of { happy_var_3 -> - case happyOut103 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CBuiltinExpr . CBuiltinOffsetOf happy_var_3 (reverse happy_var_5))}}}- ) (\r -> happyReturn (happyIn100 r))--happyReduce_368 = happyMonadReduce 6# 93# happyReduction_368-happyReduction_368 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut86 happy_x_3 of { happy_var_3 -> - case happyOut86 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CBuiltinExpr . CBuiltinTypesCompatible happy_var_3 happy_var_5)}}}- ) (\r -> happyReturn (happyIn100 r))--happyReduce_369 = happySpecReduce_3 94# happyReduction_369-happyReduction_369 happy_x_3- happy_x_2- happy_x_1- = case happyOut101 happy_x_1 of { happy_var_1 -> - case happyOut102 happy_x_3 of { happy_var_3 -> - happyIn101- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_370 = happySpecReduce_1 94# happyReduction_370-happyReduction_370 happy_x_1- = case happyOut102 happy_x_1 of { happy_var_1 -> - happyIn101- (singleton happy_var_1- )}--happyReduce_371 = happySpecReduce_3 95# happyReduction_371-happyReduction_371 happy_x_3- happy_x_2- happy_x_1- = case happyOut86 happy_x_1 of { happy_var_1 -> - case happyOut120 happy_x_3 of { happy_var_3 -> - happyIn102- ((Just happy_var_1, happy_var_3)- )}}--happyReduce_372 = happySpecReduce_3 95# happyReduction_372-happyReduction_372 happy_x_3- happy_x_2- happy_x_1- = case happyOut120 happy_x_3 of { happy_var_3 -> - happyIn102- ((Nothing, happy_var_3)- )}--happyReduce_373 = happyMonadReduce 1# 96# happyReduction_373-happyReduction_373 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut131 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ singleton . CMemberDesig happy_var_1)}- ) (\r -> happyReturn (happyIn103 r))--happyReduce_374 = happyMonadReduce 3# 96# happyReduction_374-happyReduction_374 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut103 happy_x_1 of { happy_var_1 -> - case happyOut131 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_3 $ (happy_var_1 `snoc`) . CMemberDesig happy_var_3)}}- ) (\r -> happyReturn (happyIn103 r))--happyReduce_375 = happyMonadReduce 4# 96# happyReduction_375-happyReduction_375 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut103 happy_x_1 of { happy_var_1 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_3 $ (happy_var_1 `snoc`) . CArrDesig happy_var_3)}}- ) (\r -> happyReturn (happyIn103 r))--happyReduce_376 = happySpecReduce_1 97# happyReduction_376-happyReduction_376 happy_x_1- = case happyOut100 happy_x_1 of { happy_var_1 -> - happyIn104- (happy_var_1- )}--happyReduce_377 = happyMonadReduce 4# 97# happyReduction_377-happyReduction_377 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut104 happy_x_1 of { happy_var_1 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CIndex happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn104 r))--happyReduce_378 = happyMonadReduce 3# 97# happyReduction_378-happyReduction_378 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut104 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CCall happy_var_1 [])}- ) (\r -> happyReturn (happyIn104 r))--happyReduce_379 = happyMonadReduce 4# 97# happyReduction_379-happyReduction_379 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut104 happy_x_1 of { happy_var_1 -> - case happyOut105 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CCall happy_var_1 (reverse happy_var_3))}}- ) (\r -> happyReturn (happyIn104 r))--happyReduce_380 = happyMonadReduce 3# 97# happyReduction_380-happyReduction_380 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut104 happy_x_1 of { happy_var_1 -> - case happyOut131 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CMember happy_var_1 happy_var_3 False)}}- ) (\r -> happyReturn (happyIn104 r))--happyReduce_381 = happyMonadReduce 3# 97# happyReduction_381-happyReduction_381 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut104 happy_x_1 of { happy_var_1 -> - case happyOut131 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CMember happy_var_1 happy_var_3 True)}}- ) (\r -> happyReturn (happyIn104 r))--happyReduce_382 = happyMonadReduce 2# 97# happyReduction_382-happyReduction_382 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut104 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CUnary CPostIncOp happy_var_1)}- ) (\r -> happyReturn (happyIn104 r))--happyReduce_383 = happyMonadReduce 2# 97# happyReduction_383-happyReduction_383 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut104 happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ CUnary CPostDecOp happy_var_1)}- ) (\r -> happyReturn (happyIn104 r))--happyReduce_384 = happyMonadReduce 6# 97# happyReduction_384-happyReduction_384 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut86 happy_x_2 of { happy_var_2 -> - case happyOut95 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CCompoundLit happy_var_2 (reverse happy_var_5))}}}- ) (\r -> happyReturn (happyIn104 r))--happyReduce_385 = happyMonadReduce 7# 97# happyReduction_385-happyReduction_385 (happy_x_7 `HappyStk`- happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut86 happy_x_2 of { happy_var_2 -> - case happyOut95 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CCompoundLit happy_var_2 (reverse happy_var_5))}}}- ) (\r -> happyReturn (happyIn104 r))--happyReduce_386 = happySpecReduce_1 98# happyReduction_386-happyReduction_386 happy_x_1- = case happyOut120 happy_x_1 of { happy_var_1 -> - happyIn105- (singleton happy_var_1- )}--happyReduce_387 = happySpecReduce_3 98# happyReduction_387-happyReduction_387 happy_x_3- happy_x_2- happy_x_1- = case happyOut105 happy_x_1 of { happy_var_1 -> - case happyOut120 happy_x_3 of { happy_var_3 -> - happyIn105- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_388 = happySpecReduce_1 99# happyReduction_388-happyReduction_388 happy_x_1- = case happyOut104 happy_x_1 of { happy_var_1 -> - happyIn106- (happy_var_1- )}--happyReduce_389 = happyMonadReduce 2# 99# happyReduction_389-happyReduction_389 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut106 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CUnary CPreIncOp happy_var_2)}}- ) (\r -> happyReturn (happyIn106 r))--happyReduce_390 = happyMonadReduce 2# 99# happyReduction_390-happyReduction_390 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut106 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CUnary CPreDecOp happy_var_2)}}- ) (\r -> happyReturn (happyIn106 r))--happyReduce_391 = happySpecReduce_2 99# happyReduction_391-happyReduction_391 happy_x_2- happy_x_1- = case happyOut108 happy_x_2 of { happy_var_2 -> - happyIn106- (happy_var_2- )}--happyReduce_392 = happyMonadReduce 2# 99# happyReduction_392-happyReduction_392 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut107 happy_x_1 of { happy_var_1 -> - case happyOut108 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CUnary (unL happy_var_1) happy_var_2)}}- ) (\r -> happyReturn (happyIn106 r))--happyReduce_393 = happyMonadReduce 2# 99# happyReduction_393-happyReduction_393 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut106 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CSizeofExpr happy_var_2)}}- ) (\r -> happyReturn (happyIn106 r))--happyReduce_394 = happyMonadReduce 4# 99# happyReduction_394-happyReduction_394 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut86 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CSizeofType happy_var_3)}}- ) (\r -> happyReturn (happyIn106 r))--happyReduce_395 = happyMonadReduce 2# 99# happyReduction_395-happyReduction_395 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut106 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CAlignofExpr happy_var_2)}}- ) (\r -> happyReturn (happyIn106 r))--happyReduce_396 = happyMonadReduce 4# 99# happyReduction_396-happyReduction_396 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut86 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CAlignofType happy_var_3)}}- ) (\r -> happyReturn (happyIn106 r))--happyReduce_397 = happyMonadReduce 2# 99# happyReduction_397-happyReduction_397 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut106 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CComplexReal happy_var_2)}}- ) (\r -> happyReturn (happyIn106 r))--happyReduce_398 = happyMonadReduce 2# 99# happyReduction_398-happyReduction_398 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut106 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CComplexImag happy_var_2)}}- ) (\r -> happyReturn (happyIn106 r))--happyReduce_399 = happyMonadReduce 2# 99# happyReduction_399-happyReduction_399 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut131 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ CLabAddrExpr happy_var_2)}}- ) (\r -> happyReturn (happyIn106 r))--happyReduce_400 = happySpecReduce_1 100# happyReduction_400-happyReduction_400 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn107- (L CAdrOp (posOf happy_var_1)- )}--happyReduce_401 = happySpecReduce_1 100# happyReduction_401-happyReduction_401 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn107- (L CIndOp (posOf happy_var_1)- )}--happyReduce_402 = happySpecReduce_1 100# happyReduction_402-happyReduction_402 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn107- (L CPlusOp (posOf happy_var_1)- )}--happyReduce_403 = happySpecReduce_1 100# happyReduction_403-happyReduction_403 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn107- (L CMinOp (posOf happy_var_1)- )}--happyReduce_404 = happySpecReduce_1 100# happyReduction_404-happyReduction_404 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn107- (L CCompOp (posOf happy_var_1)- )}--happyReduce_405 = happySpecReduce_1 100# happyReduction_405-happyReduction_405 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn107- (L CNegOp (posOf happy_var_1)- )}--happyReduce_406 = happySpecReduce_1 101# happyReduction_406-happyReduction_406 happy_x_1- = case happyOut106 happy_x_1 of { happy_var_1 -> - happyIn108- (happy_var_1- )}--happyReduce_407 = happyMonadReduce 4# 101# happyReduction_407-happyReduction_407 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut86 happy_x_2 of { happy_var_2 -> - case happyOut108 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ CCast happy_var_2 happy_var_4)}}}- ) (\r -> happyReturn (happyIn108 r))--happyReduce_408 = happySpecReduce_1 102# happyReduction_408-happyReduction_408 happy_x_1- = case happyOut108 happy_x_1 of { happy_var_1 -> - happyIn109- (happy_var_1- )}--happyReduce_409 = happyMonadReduce 3# 102# happyReduction_409-happyReduction_409 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut109 happy_x_1 of { happy_var_1 -> - case happyOut108 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CMulOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn109 r))--happyReduce_410 = happyMonadReduce 3# 102# happyReduction_410-happyReduction_410 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut109 happy_x_1 of { happy_var_1 -> - case happyOut108 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CDivOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn109 r))--happyReduce_411 = happyMonadReduce 3# 102# happyReduction_411-happyReduction_411 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut109 happy_x_1 of { happy_var_1 -> - case happyOut108 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CRmdOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn109 r))--happyReduce_412 = happySpecReduce_1 103# happyReduction_412-happyReduction_412 happy_x_1- = case happyOut109 happy_x_1 of { happy_var_1 -> - happyIn110- (happy_var_1- )}--happyReduce_413 = happyMonadReduce 3# 103# happyReduction_413-happyReduction_413 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut110 happy_x_1 of { happy_var_1 -> - case happyOut109 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CAddOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn110 r))--happyReduce_414 = happyMonadReduce 3# 103# happyReduction_414-happyReduction_414 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut110 happy_x_1 of { happy_var_1 -> - case happyOut109 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CSubOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn110 r))--happyReduce_415 = happySpecReduce_1 104# happyReduction_415-happyReduction_415 happy_x_1- = case happyOut110 happy_x_1 of { happy_var_1 -> - happyIn111- (happy_var_1- )}--happyReduce_416 = happyMonadReduce 3# 104# happyReduction_416-happyReduction_416 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut111 happy_x_1 of { happy_var_1 -> - case happyOut110 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CShlOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn111 r))--happyReduce_417 = happyMonadReduce 3# 104# happyReduction_417-happyReduction_417 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut111 happy_x_1 of { happy_var_1 -> - case happyOut110 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CShrOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn111 r))--happyReduce_418 = happySpecReduce_1 105# happyReduction_418-happyReduction_418 happy_x_1- = case happyOut111 happy_x_1 of { happy_var_1 -> - happyIn112- (happy_var_1- )}--happyReduce_419 = happyMonadReduce 3# 105# happyReduction_419-happyReduction_419 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut112 happy_x_1 of { happy_var_1 -> - case happyOut111 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CLeOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn112 r))--happyReduce_420 = happyMonadReduce 3# 105# happyReduction_420-happyReduction_420 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut112 happy_x_1 of { happy_var_1 -> - case happyOut111 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CGrOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn112 r))--happyReduce_421 = happyMonadReduce 3# 105# happyReduction_421-happyReduction_421 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut112 happy_x_1 of { happy_var_1 -> - case happyOut111 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CLeqOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn112 r))--happyReduce_422 = happyMonadReduce 3# 105# happyReduction_422-happyReduction_422 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut112 happy_x_1 of { happy_var_1 -> - case happyOut111 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CGeqOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn112 r))--happyReduce_423 = happySpecReduce_1 106# happyReduction_423-happyReduction_423 happy_x_1- = case happyOut112 happy_x_1 of { happy_var_1 -> - happyIn113- (happy_var_1- )}--happyReduce_424 = happyMonadReduce 3# 106# happyReduction_424-happyReduction_424 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut113 happy_x_1 of { happy_var_1 -> - case happyOut112 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CEqOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn113 r))--happyReduce_425 = happyMonadReduce 3# 106# happyReduction_425-happyReduction_425 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut113 happy_x_1 of { happy_var_1 -> - case happyOut112 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CNeqOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn113 r))--happyReduce_426 = happySpecReduce_1 107# happyReduction_426-happyReduction_426 happy_x_1- = case happyOut113 happy_x_1 of { happy_var_1 -> - happyIn114- (happy_var_1- )}--happyReduce_427 = happyMonadReduce 3# 107# happyReduction_427-happyReduction_427 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut114 happy_x_1 of { happy_var_1 -> - case happyOut113 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CAndOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn114 r))--happyReduce_428 = happySpecReduce_1 108# happyReduction_428-happyReduction_428 happy_x_1- = case happyOut114 happy_x_1 of { happy_var_1 -> - happyIn115- (happy_var_1- )}--happyReduce_429 = happyMonadReduce 3# 108# happyReduction_429-happyReduction_429 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut115 happy_x_1 of { happy_var_1 -> - case happyOut114 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CXorOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn115 r))--happyReduce_430 = happySpecReduce_1 109# happyReduction_430-happyReduction_430 happy_x_1- = case happyOut115 happy_x_1 of { happy_var_1 -> - happyIn116- (happy_var_1- )}--happyReduce_431 = happyMonadReduce 3# 109# happyReduction_431-happyReduction_431 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut116 happy_x_1 of { happy_var_1 -> - case happyOut115 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary COrOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn116 r))--happyReduce_432 = happySpecReduce_1 110# happyReduction_432-happyReduction_432 happy_x_1- = case happyOut116 happy_x_1 of { happy_var_1 -> - happyIn117- (happy_var_1- )}--happyReduce_433 = happyMonadReduce 3# 110# happyReduction_433-happyReduction_433 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut117 happy_x_1 of { happy_var_1 -> - case happyOut116 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CLndOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn117 r))--happyReduce_434 = happySpecReduce_1 111# happyReduction_434-happyReduction_434 happy_x_1- = case happyOut117 happy_x_1 of { happy_var_1 -> - happyIn118- (happy_var_1- )}--happyReduce_435 = happyMonadReduce 3# 111# happyReduction_435-happyReduction_435 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut118 happy_x_1 of { happy_var_1 -> - case happyOut117 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CBinary CLorOp happy_var_1 happy_var_3)}}- ) (\r -> happyReturn (happyIn118 r))--happyReduce_436 = happySpecReduce_1 112# happyReduction_436-happyReduction_436 happy_x_1- = case happyOut118 happy_x_1 of { happy_var_1 -> - happyIn119- (happy_var_1- )}--happyReduce_437 = happyMonadReduce 5# 112# happyReduction_437-happyReduction_437 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut118 happy_x_1 of { happy_var_1 -> - case happyOut122 happy_x_3 of { happy_var_3 -> - case happyOut119 happy_x_5 of { happy_var_5 -> - ( withNodeInfo happy_var_1 $ CCond happy_var_1 (Just happy_var_3) happy_var_5)}}}- ) (\r -> happyReturn (happyIn119 r))--happyReduce_438 = happyMonadReduce 4# 112# happyReduction_438-happyReduction_438 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut118 happy_x_1 of { happy_var_1 -> - case happyOut119 happy_x_4 of { happy_var_4 -> - ( withNodeInfo happy_var_1 $ CCond happy_var_1 Nothing happy_var_4)}}- ) (\r -> happyReturn (happyIn119 r))--happyReduce_439 = happySpecReduce_1 113# happyReduction_439-happyReduction_439 happy_x_1- = case happyOut119 happy_x_1 of { happy_var_1 -> - happyIn120- (happy_var_1- )}--happyReduce_440 = happyMonadReduce 3# 113# happyReduction_440-happyReduction_440 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut106 happy_x_1 of { happy_var_1 -> - case happyOut121 happy_x_2 of { happy_var_2 -> - case happyOut120 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ CAssign (unL happy_var_2) happy_var_1 happy_var_3)}}}- ) (\r -> happyReturn (happyIn120 r))--happyReduce_441 = happySpecReduce_1 114# happyReduction_441-happyReduction_441 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn121- (L CAssignOp (posOf happy_var_1)- )}--happyReduce_442 = happySpecReduce_1 114# happyReduction_442-happyReduction_442 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn121- (L CMulAssOp (posOf happy_var_1)- )}--happyReduce_443 = happySpecReduce_1 114# happyReduction_443-happyReduction_443 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn121- (L CDivAssOp (posOf happy_var_1)- )}--happyReduce_444 = happySpecReduce_1 114# happyReduction_444-happyReduction_444 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn121- (L CRmdAssOp (posOf happy_var_1)- )}--happyReduce_445 = happySpecReduce_1 114# happyReduction_445-happyReduction_445 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn121- (L CAddAssOp (posOf happy_var_1)- )}--happyReduce_446 = happySpecReduce_1 114# happyReduction_446-happyReduction_446 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn121- (L CSubAssOp (posOf happy_var_1)- )}--happyReduce_447 = happySpecReduce_1 114# happyReduction_447-happyReduction_447 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn121- (L CShlAssOp (posOf happy_var_1)- )}--happyReduce_448 = happySpecReduce_1 114# happyReduction_448-happyReduction_448 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn121- (L CShrAssOp (posOf happy_var_1)- )}--happyReduce_449 = happySpecReduce_1 114# happyReduction_449-happyReduction_449 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn121- (L CAndAssOp (posOf happy_var_1)- )}--happyReduce_450 = happySpecReduce_1 114# happyReduction_450-happyReduction_450 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn121- (L CXorAssOp (posOf happy_var_1)- )}--happyReduce_451 = happySpecReduce_1 114# happyReduction_451-happyReduction_451 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn121- (L COrAssOp (posOf happy_var_1)- )}--happyReduce_452 = happySpecReduce_1 115# happyReduction_452-happyReduction_452 happy_x_1- = case happyOut120 happy_x_1 of { happy_var_1 -> - happyIn122- (happy_var_1- )}--happyReduce_453 = happyMonadReduce 3# 115# happyReduction_453-happyReduction_453 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOut120 happy_x_1 of { happy_var_1 -> - case happyOut123 happy_x_3 of { happy_var_3 -> - ( let es = reverse happy_var_3 in withNodeInfo es $ CComma (happy_var_1:es))}}- ) (\r -> happyReturn (happyIn122 r))--happyReduce_454 = happySpecReduce_1 116# happyReduction_454-happyReduction_454 happy_x_1- = case happyOut120 happy_x_1 of { happy_var_1 -> - happyIn123- (singleton happy_var_1- )}--happyReduce_455 = happySpecReduce_3 116# happyReduction_455-happyReduction_455 happy_x_3- happy_x_2- happy_x_1- = case happyOut123 happy_x_1 of { happy_var_1 -> - case happyOut120 happy_x_3 of { happy_var_3 -> - happyIn123- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_456 = happySpecReduce_0 117# happyReduction_456-happyReduction_456 = happyIn124- (Nothing- )--happyReduce_457 = happySpecReduce_1 117# happyReduction_457-happyReduction_457 happy_x_1- = case happyOut122 happy_x_1 of { happy_var_1 -> - happyIn124- (Just happy_var_1- )}--happyReduce_458 = happySpecReduce_0 118# happyReduction_458-happyReduction_458 = happyIn125- (Nothing- )--happyReduce_459 = happySpecReduce_1 118# happyReduction_459-happyReduction_459 happy_x_1- = case happyOut120 happy_x_1 of { happy_var_1 -> - happyIn125- (Just happy_var_1- )}--happyReduce_460 = happySpecReduce_1 119# happyReduction_460-happyReduction_460 happy_x_1- = case happyOut119 happy_x_1 of { happy_var_1 -> - happyIn126- (happy_var_1- )}--happyReduce_461 = happyMonadReduce 1# 120# happyReduction_461-happyReduction_461 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokILit _ i -> CIntConst i)}- ) (\r -> happyReturn (happyIn127 r))--happyReduce_462 = happyMonadReduce 1# 120# happyReduction_462-happyReduction_462 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokCLit _ c -> CCharConst c)}- ) (\r -> happyReturn (happyIn127 r))--happyReduce_463 = happyMonadReduce 1# 120# happyReduction_463-happyReduction_463 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokFLit _ f -> CFloatConst f)}- ) (\r -> happyReturn (happyIn127 r))--happyReduce_464 = happyMonadReduce 1# 121# happyReduction_464-happyReduction_464 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokSLit _ s -> CStrLit s)}- ) (\r -> happyReturn (happyIn128 r))--happyReduce_465 = happyMonadReduce 2# 121# happyReduction_465-happyReduction_465 (happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - case happyOut129 happy_x_2 of { happy_var_2 -> - ( withNodeInfo happy_var_1 $ case happy_var_1 of CTokSLit _ s -> CStrLit (concatCStrings (s : reverse happy_var_2)))}}- ) (\r -> happyReturn (happyIn128 r))--happyReduce_466 = happySpecReduce_1 122# happyReduction_466-happyReduction_466 happy_x_1- = case happyOutTok happy_x_1 of { happy_var_1 -> - happyIn129- (case happy_var_1 of CTokSLit _ s -> singleton s- )}--happyReduce_467 = happySpecReduce_2 122# happyReduction_467-happyReduction_467 happy_x_2- happy_x_1- = case happyOut129 happy_x_1 of { happy_var_1 -> - case happyOutTok happy_x_2 of { happy_var_2 -> - happyIn129- (case happy_var_2 of CTokSLit _ s -> happy_var_1 `snoc` s- )}}--happyReduce_468 = happySpecReduce_1 123# happyReduction_468-happyReduction_468 happy_x_1- = case happyOutTok happy_x_1 of { (CTokClangC _ (ClangCVersionTok happy_var_1)) -> - happyIn130- (happy_var_1- )}--happyReduce_469 = happySpecReduce_1 124# happyReduction_469-happyReduction_469 happy_x_1- = case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) -> - happyIn131- (happy_var_1- )}--happyReduce_470 = happySpecReduce_1 124# happyReduction_470-happyReduction_470 happy_x_1- = case happyOutTok happy_x_1 of { (CTokTyIdent _ happy_var_1) -> - happyIn131- (happy_var_1- )}--happyReduce_471 = happySpecReduce_0 125# happyReduction_471-happyReduction_471 = happyIn132- ([]- )--happyReduce_472 = happySpecReduce_1 125# happyReduction_472-happyReduction_472 happy_x_1- = case happyOut133 happy_x_1 of { happy_var_1 -> - happyIn132- (happy_var_1- )}--happyReduce_473 = happySpecReduce_1 126# happyReduction_473-happyReduction_473 happy_x_1- = case happyOut134 happy_x_1 of { happy_var_1 -> - happyIn133- (happy_var_1- )}--happyReduce_474 = happySpecReduce_2 126# happyReduction_474-happyReduction_474 happy_x_2- happy_x_1- = case happyOut133 happy_x_1 of { happy_var_1 -> - case happyOut134 happy_x_2 of { happy_var_2 -> - happyIn133- (happy_var_1 ++ happy_var_2- )}}--happyReduce_475 = happyReduce 6# 127# happyReduction_475-happyReduction_475 (happy_x_6 `HappyStk`- happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut135 happy_x_4 of { happy_var_4 -> - happyIn134- (reverse happy_var_4- ) `HappyStk` happyRest}--happyReduce_476 = happySpecReduce_1 128# happyReduction_476-happyReduction_476 happy_x_1- = case happyOut136 happy_x_1 of { happy_var_1 -> - happyIn135- (case happy_var_1 of Nothing -> empty; Just attr -> singleton attr- )}--happyReduce_477 = happySpecReduce_3 128# happyReduction_477-happyReduction_477 happy_x_3- happy_x_2- happy_x_1- = case happyOut135 happy_x_1 of { happy_var_1 -> - case happyOut136 happy_x_3 of { happy_var_3 -> - happyIn135- ((maybe id (flip snoc) happy_var_3) happy_var_1- )}}--happyReduce_478 = happySpecReduce_0 129# happyReduction_478-happyReduction_478 = happyIn136- (Nothing- )--happyReduce_479 = happyMonadReduce 1# 129# happyReduction_479-happyReduction_479 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) -> - ( withNodeInfo happy_var_1 $ Just . CAttr happy_var_1 [])}- ) (\r -> happyReturn (happyIn136 r))--happyReduce_480 = happyMonadReduce 1# 129# happyReduction_480-happyReduction_480 (happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { happy_var_1 -> - ( withNodeInfo happy_var_1 $ Just . CAttr (internalIdent "const") [])}- ) (\r -> happyReturn (happyIn136 r))--happyReduce_481 = happyMonadReduce 4# 129# happyReduction_481-happyReduction_481 (happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) -> - case happyOut137 happy_x_3 of { happy_var_3 -> - ( withNodeInfo happy_var_1 $ Just . CAttr happy_var_1 (reverse happy_var_3))}}- ) (\r -> happyReturn (happyIn136 r))--happyReduce_482 = happyMonadReduce 3# 129# happyReduction_482-happyReduction_482 (happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest) tk- = happyThen (case happyOutTok happy_x_1 of { (CTokIdent _ happy_var_1) -> - ( withNodeInfo happy_var_1 $ Just . CAttr happy_var_1 [])}- ) (\r -> happyReturn (happyIn136 r))--happyReduce_483 = happySpecReduce_1 130# happyReduction_483-happyReduction_483 happy_x_1- = case happyOut126 happy_x_1 of { happy_var_1 -> - happyIn137- (singleton happy_var_1- )}--happyReduce_484 = happySpecReduce_3 130# happyReduction_484-happyReduction_484 happy_x_3- happy_x_2- happy_x_1- = happyIn137- (Reversed []- )--happyReduce_485 = happySpecReduce_3 130# happyReduction_485-happyReduction_485 happy_x_3- happy_x_2- happy_x_1- = happyIn137- (Reversed []- )--happyReduce_486 = happySpecReduce_3 130# happyReduction_486-happyReduction_486 happy_x_3- happy_x_2- happy_x_1- = case happyOut137 happy_x_1 of { happy_var_1 -> - case happyOut126 happy_x_3 of { happy_var_3 -> - happyIn137- (happy_var_1 `snoc` happy_var_3- )}}--happyReduce_487 = happyReduce 5# 130# happyReduction_487-happyReduction_487 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut137 happy_x_1 of { happy_var_1 -> - happyIn137- (happy_var_1- ) `HappyStk` happyRest}--happyReduce_488 = happyReduce 5# 130# happyReduction_488-happyReduction_488 (happy_x_5 `HappyStk`- happy_x_4 `HappyStk`- happy_x_3 `HappyStk`- happy_x_2 `HappyStk`- happy_x_1 `HappyStk`- happyRest)- = case happyOut137 happy_x_1 of { happy_var_1 -> - happyIn137- (happy_var_1- ) `HappyStk` happyRest}--happyNewToken action sts stk- = lexC(\tk -> - let cont i = happyDoAction i tk action sts stk in- case tk of {- CTokEof -> happyDoAction 110# tk action sts stk;- CTokLParen _ -> cont 1#;- CTokRParen _ -> cont 2#;- CTokLBracket _ -> cont 3#;- CTokRBracket _ -> cont 4#;- CTokArrow _ -> cont 5#;- CTokDot _ -> cont 6#;- CTokExclam _ -> cont 7#;- CTokTilde _ -> cont 8#;- CTokInc _ -> cont 9#;- CTokDec _ -> cont 10#;- CTokPlus _ -> cont 11#;- CTokMinus _ -> cont 12#;- CTokStar _ -> cont 13#;- CTokSlash _ -> cont 14#;- CTokPercent _ -> cont 15#;- CTokAmper _ -> cont 16#;- CTokShiftL _ -> cont 17#;- CTokShiftR _ -> cont 18#;- CTokLess _ -> cont 19#;- CTokLessEq _ -> cont 20#;- CTokHigh _ -> cont 21#;- CTokHighEq _ -> cont 22#;- CTokEqual _ -> cont 23#;- CTokUnequal _ -> cont 24#;- CTokHat _ -> cont 25#;- CTokBar _ -> cont 26#;- CTokAnd _ -> cont 27#;- CTokOr _ -> cont 28#;- CTokQuest _ -> cont 29#;- CTokColon _ -> cont 30#;- CTokAssign _ -> cont 31#;- CTokPlusAss _ -> cont 32#;- CTokMinusAss _ -> cont 33#;- CTokStarAss _ -> cont 34#;- CTokSlashAss _ -> cont 35#;- CTokPercAss _ -> cont 36#;- CTokAmpAss _ -> cont 37#;- CTokHatAss _ -> cont 38#;- CTokBarAss _ -> cont 39#;- CTokSLAss _ -> cont 40#;- CTokSRAss _ -> cont 41#;- CTokComma _ -> cont 42#;- CTokSemic _ -> cont 43#;- CTokLBrace _ -> cont 44#;- CTokRBrace _ -> cont 45#;- CTokEllipsis _ -> cont 46#;- CTokAlignof _ -> cont 47#;- CTokAlignas _ -> cont 48#;- CTokAtomic _ -> cont 49#;- CTokAsm _ -> cont 50#;- CTokAuto _ -> cont 51#;- CTokBreak _ -> cont 52#;- CTokBool _ -> cont 53#;- CTokCase _ -> cont 54#;- CTokChar _ -> cont 55#;- CTokConst _ -> cont 56#;- CTokContinue _ -> cont 57#;- CTokComplex _ -> cont 58#;- CTokDefault _ -> cont 59#;- CTokDo _ -> cont 60#;- CTokDouble _ -> cont 61#;- CTokElse _ -> cont 62#;- CTokEnum _ -> cont 63#;- CTokExtern _ -> cont 64#;- CTokFloat _ -> cont 65#;- CTokFor _ -> cont 66#;- CTokGeneric _ -> cont 67#;- CTokGoto _ -> cont 68#;- CTokIf _ -> cont 69#;- CTokInline _ -> cont 70#;- CTokInt _ -> cont 71#;- CTokInt128 _ -> cont 72#;- CTokLong _ -> cont 73#;- CTokLabel _ -> cont 74#;- CTokNoreturn _ -> cont 75#;- CTokNullable _ -> cont 76#;- CTokNonnull _ -> cont 77#;- CTokRegister _ -> cont 78#;- CTokRestrict _ -> cont 79#;- CTokReturn _ -> cont 80#;- CTokShort _ -> cont 81#;- CTokSigned _ -> cont 82#;- CTokSizeof _ -> cont 83#;- CTokStatic _ -> cont 84#;- CTokStaticAssert _ -> cont 85#;- CTokStruct _ -> cont 86#;- CTokSwitch _ -> cont 87#;- CTokTypedef _ -> cont 88#;- CTokTypeof _ -> cont 89#;- CTokThread _ -> cont 90#;- CTokUnion _ -> cont 91#;- CTokUnsigned _ -> cont 92#;- CTokVoid _ -> cont 93#;- CTokVolatile _ -> cont 94#;- CTokWhile _ -> cont 95#;- CTokCLit _ _ -> cont 96#;- CTokILit _ _ -> cont 97#;- CTokFLit _ _ -> cont 98#;- CTokSLit _ _ -> cont 99#;- CTokIdent _ happy_dollar_dollar -> cont 100#;- CTokTyIdent _ happy_dollar_dollar -> cont 101#;- CTokGnuC GnuCAttrTok _ -> cont 102#;- CTokGnuC GnuCExtTok _ -> cont 103#;- CTokGnuC GnuCComplexReal _ -> cont 104#;- CTokGnuC GnuCComplexImag _ -> cont 105#;- CTokGnuC GnuCVaArg _ -> cont 106#;- CTokGnuC GnuCOffsetof _ -> cont 107#;- CTokGnuC GnuCTyCompat _ -> cont 108#;- CTokClangC _ (ClangCVersionTok happy_dollar_dollar) -> cont 109#;- _ -> happyError' tk- })--happyError_ 110# tk = happyError' tk-happyError_ _ tk = happyError' tk--happyThen :: () => P a -> (a -> P b) -> P b-happyThen = (>>=)-happyReturn :: () => a -> P a-happyReturn = (return)-happyThen1 = happyThen-happyReturn1 :: () => a -> P a-happyReturn1 = happyReturn-happyError' :: () => (CToken) -> P a-happyError' tk = (\token -> happyError) tk--translation_unit = happySomeParser where- happySomeParser = happyThen (happyParse 0#) (\x -> happyReturn (happyOut7 x))--external_declaration = happySomeParser where- happySomeParser = happyThen (happyParse 1#) (\x -> happyReturn (happyOut9 x))--statement = happySomeParser where- happySomeParser = happyThen (happyParse 2#) (\x -> happyReturn (happyOut12 x))--expression = happySomeParser where- happySomeParser = happyThen (happyParse 3#) (\x -> happyReturn (happyOut122 x))--happySeq = happyDontSeq----- sometimes it is neccessary to reverse an unreversed list-reverseList :: [a] -> Reversed [a]-reverseList = Reversed . List.reverse---- We occasionally need things to have a location when they don't naturally--- have one built in as tokens and most AST elements do.----data Located a = L !a !Position--unL :: Located a -> a-unL (L a pos) = a--instance Pos (Located a) where- posOf (L _ pos) = pos---- FIXME: the next 3 inlines here increase the object file size by 70%--- Check whether the speed win is worth it-{-# INLINE withNodeInfo #-}-withNodeInfo :: Pos node => node -> (NodeInfo -> a) -> P a-withNodeInfo node mkAttrNode = do- name <- getNewName- lastTok <- getSavedToken- let firstPos = posOf node- let attrs = mkNodeInfo' firstPos (posLenOfTok $! lastTok) name- attrs `seq` return (mkAttrNode attrs)--{-# INLINE withLength #-}-withLength :: NodeInfo -> (NodeInfo -> a) -> P a-withLength nodeinfo mkAttrNode = do- lastTok <- getSavedToken- let firstPos = posOfNode nodeinfo- let attrs = mkNodeInfo' firstPos (posLenOfTok $! lastTok)- (maybe (error "nameOfNode") id (nameOfNode nodeinfo))- attrs `seq` return (mkAttrNode attrs)--data CDeclrR = CDeclrR (Maybe Ident) (Reversed [CDerivedDeclr]) (Maybe CStrLit) [CAttr] NodeInfo-reverseDeclr :: CDeclrR -> CDeclr-reverseDeclr (CDeclrR ide reversedDDs asmname cattrs at)- = CDeclr ide (reverse reversedDDs) asmname cattrs at-instance CNode (CDeclrR) where- nodeInfo (CDeclrR _ _ _ _ n) = n-instance Pos (CDeclrR) where- posOf (CDeclrR _ _ _ _ n) = posOf n--{-# INLINE withAttribute #-}-withAttribute :: Pos node => node -> [CAttr] -> (NodeInfo -> CDeclrR) -> P CDeclrR-withAttribute node cattrs mkDeclrNode = do- name <- getNewName- let attrs = mkNodeInfo (posOf node) name- let newDeclr = appendDeclrAttrs cattrs $ mkDeclrNode attrs- attrs `seq` newDeclr `seq` return newDeclr---- postfixing variant-{-# INLINE withAttributePF #-}-withAttributePF :: Pos node => node -> [CAttr] -> (NodeInfo -> CDeclrR -> CDeclrR) -> P (CDeclrR -> CDeclrR)-withAttributePF node cattrs mkDeclrCtor = do- name <- getNewName- let attrs = mkNodeInfo (posOf node) name- let newDeclr = appendDeclrAttrs cattrs . mkDeclrCtor attrs- attrs `seq` newDeclr `seq` return newDeclr---- add top level attributes for a declarator.------ In the following example------ > int declr1, __attribute__((a1)) * __attribute__((a2)) y() __asm__("$" "y") __attribute__((a3));------ the attributes `a1' and `a3' are top-level attributes for y.--- The (pseudo)-AST for the second declarator is------ > CDeclr "y"--- > [CFunDeclr ..., CPtrDeclr __attribute__((a2)) ... ]--- > (asm "$y")--- > [__attribute__((a1)), __attribute__((a3)) ]------ So assembler names and preceeding and trailing attributes are recorded in object declarator.----appendObjAttrs :: [CAttr] -> CDeclr -> CDeclr-appendObjAttrs newAttrs (CDeclr ident indirections asmname cAttrs at)- = CDeclr ident indirections asmname (cAttrs ++ newAttrs) at-appendObjAttrsR :: [CAttr] -> CDeclrR -> CDeclrR-appendObjAttrsR newAttrs (CDeclrR ident indirections asmname cAttrs at)- = CDeclrR ident indirections asmname (cAttrs ++ newAttrs) at--setAsmName :: Maybe CStrLit -> CDeclrR -> P CDeclrR-setAsmName mAsmName (CDeclrR ident indirections oldName cattrs at) =- case combineName mAsmName oldName of- Left (n1,n2) -> failP (posOf n2) ["Duplicate assembler name: ",showName n1,showName n2]- Right newName -> return $ CDeclrR ident indirections newName cattrs at- where- combineName Nothing Nothing = Right Nothing- combineName Nothing oldname@(Just _) = Right oldname- combineName newname@(Just _) Nothing = Right newname- combineName (Just n1) (Just n2) = Left (n1,n2)- showName (CStrLit cstr _) = show cstr--withAsmNameAttrs :: (Maybe CStrLit, [CAttr]) -> CDeclrR -> P CDeclrR-withAsmNameAttrs (mAsmName, newAttrs) declr = setAsmName mAsmName (appendObjAttrsR newAttrs declr)--appendDeclrAttrs :: [CAttr] -> CDeclrR -> CDeclrR-appendDeclrAttrs newAttrs (CDeclrR ident (Reversed []) asmname cattrs at)- = CDeclrR ident empty asmname (cattrs ++ newAttrs) at-appendDeclrAttrs newAttrs (CDeclrR ident (Reversed (x:xs)) asmname cattrs at)- = CDeclrR ident (Reversed (appendAttrs x : xs)) asmname cattrs at where- appendAttrs (CPtrDeclr typeQuals at) = CPtrDeclr (typeQuals ++ map CAttrQual newAttrs) at- appendAttrs (CArrDeclr typeQuals arraySize at) = CArrDeclr (typeQuals ++ map CAttrQual newAttrs) arraySize at- appendAttrs (CFunDeclr parameters cattrs at) = CFunDeclr parameters (cattrs ++ newAttrs) at--ptrDeclr :: CDeclrR -> [CTypeQual] -> NodeInfo -> CDeclrR-ptrDeclr (CDeclrR ident derivedDeclrs asmname cattrs dat) tyquals at- = CDeclrR ident (derivedDeclrs `snoc` CPtrDeclr tyquals at) asmname cattrs dat-funDeclr :: CDeclrR -> (Either [Ident] ([CDecl],Bool)) -> [CAttr] -> NodeInfo -> CDeclrR-funDeclr (CDeclrR ident derivedDeclrs asmname dcattrs dat) params cattrs at- = CDeclrR ident (derivedDeclrs `snoc` CFunDeclr params cattrs at) asmname dcattrs dat-arrDeclr :: CDeclrR -> [CTypeQual] -> Bool -> Bool -> Maybe CExpr -> NodeInfo -> CDeclrR-arrDeclr (CDeclrR ident derivedDeclrs asmname cattrs dat) tyquals var_sized static_size size_expr_opt at- = arr_sz `seq` ( CDeclrR ident (derivedDeclrs `snoc` CArrDeclr tyquals arr_sz at) asmname cattrs dat )- where- arr_sz = case size_expr_opt of- Just e -> CArrSize static_size e- Nothing -> CNoArrSize var_sized--liftTypeQuals :: Reversed [CTypeQual] -> [CDeclSpec]-liftTypeQuals = map CTypeQual . reverse---- lift CAttrs to DeclSpecs----liftCAttrs :: [CAttr] -> [CDeclSpec]-liftCAttrs = map (CTypeQual . CAttrQual)---- when we parsed (decl_spec_1,...,decl_spec_n,attrs), add the __attributes__s to the declspec list--- needs special care when @decl_spec_n@ is a SUE definition-addTrailingAttrs :: Reversed [CDeclSpec] -> [CAttr] -> Reversed [CDeclSpec]-addTrailingAttrs declspecs new_attrs =- case viewr declspecs of- (specs_init, CTypeSpec (CSUType (CStruct tag name (Just def) def_attrs su_node) node))- -> (specs_init `snoc` CTypeSpec (CSUType (CStruct tag name (Just def) (def_attrs ++ new_attrs) su_node) node))- (specs_init, CTypeSpec (CEnumType (CEnum name (Just def) def_attrs e_node) node))- -> (specs_init `snoc` CTypeSpec (CEnumType (CEnum name (Just def) (def_attrs ++ new_attrs) e_node) node))- _ -> declspecs `rappend` (liftCAttrs new_attrs)---- convenient instance, the position of a list of things is the position of--- the first thing in the list----instance Pos a => Pos [a] where- posOf (x:_) = posOf x--instance Pos a => Pos (Reversed a) where- posOf (Reversed x) = posOf x--emptyDeclr :: CDeclrR-emptyDeclr = CDeclrR Nothing empty Nothing [] undefNode-mkVarDeclr :: Ident -> NodeInfo -> CDeclrR-mkVarDeclr ident = CDeclrR (Just ident) empty Nothing []---- Take the identifiers and use them to update the typedef'ed identifier set--- if the decl is defining a typedef then we add it to the set,--- if it's a var decl then that shadows typedefed identifiers----doDeclIdent :: [CDeclSpec] -> CDeclrR -> P ()-doDeclIdent declspecs (CDeclrR mIdent _ _ _ _) =- case mIdent of- Nothing -> return ()- Just ident | any iypedef declspecs -> addTypedef ident- | otherwise -> shadowTypedef ident-- where iypedef (CStorageSpec (CTypedef _)) = True- iypedef _ = False--doFuncParamDeclIdent :: CDeclr -> P ()-doFuncParamDeclIdent (CDeclr _ (CFunDeclr params _ _ : _) _ _ _) =- sequence_- [ case getCDeclrIdent declr of- Nothing -> return ()- Just ident -> shadowTypedef ident- | CDecl _ dle _ <- either (const []) fst params- , (Just declr, _, _) <- dle ]-doFuncParamDeclIdent _ = return ()---- extract all identifiers-getCDeclrIdent :: CDeclr -> Maybe Ident-getCDeclrIdent (CDeclr mIdent _ _ _ _) = mIdent--happyError :: P a-happyError = parseError---- * public interface---- | @parseC input initialPos@ parses the given preprocessed C-source input and returns the AST or a list of parse errors.-parseC :: InputStream -> Position -> Either ParseError CTranslUnit-parseC input initialPosition =- fmap fst $ execParser translUnitP input initialPosition builtinTypeNames (namesStartingFrom 0)---- | @translUnitP@ provides a parser for a complete C translation unit, i.e. a list of external declarations.-translUnitP :: P CTranslUnit-translUnitP = translation_unit--- | @extDeclP@ provides a parser for an external (file-scope) declaration-extDeclP :: P CExtDecl-extDeclP = external_declaration--- | @statementP@ provides a parser for C statements-statementP :: P CStat-statementP = statement--- | @expressionP@ provides a parser for C expressions-expressionP :: P CExpr-expressionP = expression-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}-{-# LINE 1 "<built-in>" #-}-{-# LINE 1 "<command-line>" #-}-{-# LINE 8 "<command-line>" #-}-# 1 "/usr/include/stdc-predef.h" 1 3 4--# 17 "/usr/include/stdc-predef.h" 3 4-------------------------------------------{-# LINE 8 "<command-line>" #-}-{-# LINE 1 "templates/GenericTemplate.hs" #-}--- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp --{-# LINE 13 "templates/GenericTemplate.hs" #-}-------- Do not remove this comment. Required to fix CPP parsing when using GCC and a clang-compiled alex.-#if __GLASGOW_HASKELL__ > 706-#define LT(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.<# m)) :: Bool)-#define GTE(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.>=# m)) :: Bool)-#define EQ(n,m) ((Happy_GHC_Exts.tagToEnum# (n Happy_GHC_Exts.==# m)) :: Bool)-#else-#define LT(n,m) (n Happy_GHC_Exts.<# m)-#define GTE(n,m) (n Happy_GHC_Exts.>=# m)-#define EQ(n,m) (n Happy_GHC_Exts.==# m)-#endif-{-# LINE 46 "templates/GenericTemplate.hs" #-}---data Happy_IntList = HappyCons Happy_GHC_Exts.Int# Happy_IntList------{-# LINE 67 "templates/GenericTemplate.hs" #-}--{-# LINE 77 "templates/GenericTemplate.hs" #-}--{-# LINE 86 "templates/GenericTemplate.hs" #-}--infixr 9 `HappyStk`-data HappyStk a = HappyStk a (HappyStk a)---------------------------------------------------------------------------------- starting the parse--happyParse start_state = happyNewToken start_state notHappyAtAll notHappyAtAll---------------------------------------------------------------------------------- Accepting the parse---- If the current token is 0#, it means we've just accepted a partial--- parse (a %partial parser). We must ignore the saved token on the top of--- the stack in this case.-happyAccept 0# tk st sts (_ `HappyStk` ans `HappyStk` _) =- happyReturn1 ans-happyAccept j tk st sts (HappyStk ans _) = - (happyTcHack j (happyTcHack st)) (happyReturn1 ans)---------------------------------------------------------------------------------- Arrays only: do the next action----happyDoAction i tk st- = {- nothing -}--- case action of- 0# -> {- nothing -}- happyFail i tk st- -1# -> {- nothing -}- happyAccept i tk st- n | LT(n,(0# :: Happy_GHC_Exts.Int#)) -> {- nothing -}-- (happyReduceArr Happy_Data_Array.! rule) i tk st- where rule = (Happy_GHC_Exts.I# ((Happy_GHC_Exts.negateInt# ((n Happy_GHC_Exts.+# (1# :: Happy_GHC_Exts.Int#))))))- n -> {- nothing -}--- happyShift new_state i tk st- where new_state = (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#))- where off = indexShortOffAddr happyActOffsets st- off_i = (off Happy_GHC_Exts.+# i)- check = if GTE(off_i,(0# :: Happy_GHC_Exts.Int#))- then EQ(indexShortOffAddr happyCheck off_i, i)- else False- action- | check = indexShortOffAddr happyTable off_i- | otherwise = indexShortOffAddr happyDefActions st---indexShortOffAddr (HappyA# arr) off =- Happy_GHC_Exts.narrow16Int# i- where- i = Happy_GHC_Exts.word2Int# (Happy_GHC_Exts.or# (Happy_GHC_Exts.uncheckedShiftL# high 8#) low)- high = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr (off' Happy_GHC_Exts.+# 1#)))- low = Happy_GHC_Exts.int2Word# (Happy_GHC_Exts.ord# (Happy_GHC_Exts.indexCharOffAddr# arr off'))- off' = off Happy_GHC_Exts.*# 2#------data HappyAddr = HappyA# Happy_GHC_Exts.Addr#------------------------------------------------------------------------------------- HappyState data type (not arrays)--{-# LINE 170 "templates/GenericTemplate.hs" #-}---------------------------------------------------------------------------------- Shifting a token--happyShift new_state 0# tk st sts stk@(x `HappyStk` _) =- let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in--- trace "shifting the error token" $- happyDoAction i tk new_state (HappyCons (st) (sts)) (stk)--happyShift new_state i tk st sts stk =- happyNewToken new_state (HappyCons (st) (sts)) ((happyInTok (tk))`HappyStk`stk)---- happyReduce is specialised for the common cases.--happySpecReduce_0 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_0 nt fn j tk st@((action)) sts stk- = happyGoto nt j tk st (HappyCons (st) (sts)) (fn `HappyStk` stk)--happySpecReduce_1 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_1 nt fn j tk _ sts@((HappyCons (st@(action)) (_))) (v1`HappyStk`stk')- = let r = fn v1 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_2 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_2 nt fn j tk _ (HappyCons (_) (sts@((HappyCons (st@(action)) (_))))) (v1`HappyStk`v2`HappyStk`stk')- = let r = fn v1 v2 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happySpecReduce_3 i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happySpecReduce_3 nt fn j tk _ (HappyCons (_) ((HappyCons (_) (sts@((HappyCons (st@(action)) (_))))))) (v1`HappyStk`v2`HappyStk`v3`HappyStk`stk')- = let r = fn v1 v2 v3 in- happySeq r (happyGoto nt j tk st sts (r `HappyStk` stk'))--happyReduce k i fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyReduce k nt fn j tk st sts stk- = case happyDrop (k Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) sts of- sts1@((HappyCons (st1@(action)) (_))) ->- let r = fn stk in -- it doesn't hurt to always seq here...- happyDoSeq r (happyGoto nt j tk st1 sts1 r)--happyMonadReduce k nt fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyMonadReduce k nt fn j tk st sts stk =- case happyDrop k (HappyCons (st) (sts)) of- sts1@((HappyCons (st1@(action)) (_))) ->- let drop_stk = happyDropStk k stk in- happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk))--happyMonad2Reduce k nt fn 0# tk st sts stk- = happyFail 0# tk st sts stk-happyMonad2Reduce k nt fn j tk st sts stk =- case happyDrop k (HappyCons (st) (sts)) of- sts1@((HappyCons (st1@(action)) (_))) ->- let drop_stk = happyDropStk k stk-- off = indexShortOffAddr happyGotoOffsets st1- off_i = (off Happy_GHC_Exts.+# nt)- new_state = indexShortOffAddr happyTable off_i---- in- happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk))--happyDrop 0# l = l-happyDrop n (HappyCons (_) (t)) = happyDrop (n Happy_GHC_Exts.-# (1# :: Happy_GHC_Exts.Int#)) t--happyDropStk 0# l = l-happyDropStk n (x `HappyStk` xs) = happyDropStk (n Happy_GHC_Exts.-# (1#::Happy_GHC_Exts.Int#)) xs---------------------------------------------------------------------------------- Moving to a new state after a reduction---happyGoto nt j tk st = - {- nothing -}- happyDoAction j tk new_state- where off = indexShortOffAddr happyGotoOffsets st- off_i = (off Happy_GHC_Exts.+# nt)- new_state = indexShortOffAddr happyTable off_i------------------------------------------------------------------------------------- Error recovery (0# is the error token)---- parse error if we are in recovery and we fail again-happyFail 0# tk old_st _ stk@(x `HappyStk` _) =- let i = (case Happy_GHC_Exts.unsafeCoerce# x of { (Happy_GHC_Exts.I# (i)) -> i }) in--- trace "failing" $ - happyError_ i tk--{- We don't need state discarding for our restricted implementation of- "error". In fact, it can cause some bogus parses, so I've disabled it- for now --SDM---- discard a state-happyFail 0# tk old_st (HappyCons ((action)) (sts)) - (saved_tok `HappyStk` _ `HappyStk` stk) =--- trace ("discarding state, depth " ++ show (length stk)) $- happyDoAction 0# tk action sts ((saved_tok`HappyStk`stk))--}---- Enter error recovery: generate an error token,--- save the old token and carry on.-happyFail i tk (action) sts stk =--- trace "entering error recovery" $- happyDoAction 0# tk action sts ( (Happy_GHC_Exts.unsafeCoerce# (Happy_GHC_Exts.I# (i))) `HappyStk` stk)---- Internal happy errors:--notHappyAtAll :: a-notHappyAtAll = error "Internal Happy error\n"---------------------------------------------------------------------------------- Hack to get the typechecker to accept our action functions---happyTcHack :: Happy_GHC_Exts.Int# -> a -> a-happyTcHack x y = y-{-# INLINE happyTcHack #-}----------------------------------------------------------------------------------- Seq-ing. If the --strict flag is given, then Happy emits --- happySeq = happyDoSeq--- otherwise it emits--- happySeq = happyDontSeq--happyDoSeq, happyDontSeq :: a -> b -> b-happyDoSeq a b = a `seq` b-happyDontSeq a b = b---------------------------------------------------------------------------------- Don't inline any functions from the template. GHC has a nasty habit--- of deciding to inline happyGoto everywhere, which increases the size of--- the generated parser quite a bit.---{-# NOINLINE happyDoAction #-}-{-# NOINLINE happyTable #-}-{-# NOINLINE happyCheck #-}-{-# NOINLINE happyActOffsets #-}-{-# NOINLINE happyGotoOffsets #-}-{-# NOINLINE happyDefActions #-}--{-# NOINLINE happyShift #-}-{-# NOINLINE happySpecReduce_0 #-}-{-# NOINLINE happySpecReduce_1 #-}-{-# NOINLINE happySpecReduce_2 #-}-{-# NOINLINE happySpecReduce_3 #-}-{-# NOINLINE happyReduce #-}-{-# NOINLINE happyMonadReduce #-}-{-# NOINLINE happyGoto #-}-{-# NOINLINE happyFail #-}---- end of Happy Template.
language-c.cabal view
@@ -1,121 +1,125 @@-Name: language-c-Version: 0.6.1-Cabal-Version: >= 1.8-Build-Type: Simple-License: BSD3-License-File: LICENSE-Copyright: LICENSE-Author: AUTHORS-Maintainer: benedikt.huber@gmail.com-Stability: experimental-Homepage: http://visq.github.io/language-c/-Bug-reports: https://github.com/visq/language-c/issues/+cabal-version: 2.2+name: language-c+version: 0.10.2+license: BSD-3-Clause+license-file: LICENSE+copyright: LICENSE+maintainer: language.c@monoid.al+author: AUTHORS+tested-with:+ ghc ==9.14.1 ghc ==9.12.2 ghc ==9.10.3 ghc ==9.8.4 ghc ==9.6.7+ ghc ==9.4.8 ghc ==9.2.8 ghc ==9.0.2 ghc ==8.10.7 ghc ==8.8.4+ ghc ==8.6.5 ghc ==8.4.4 ghc ==8.2.2 ghc ==8.0.2 -Synopsis: Analysis and generation of C code-Description: Language C is a haskell library for the analysis and generation of C code.- It features a complete, well tested parser and pretty printer for all of C99 and a large- set of C11 and clang/GNU extensions.-Category: Language-Tested-With: GHC == 7.8.*, GHC == 7.10.*, GHC == 8.0.*+homepage: https://visq.github.io/language-c/+bug-reports: https://github.com/visq/language-c/issues/+synopsis: Analysis and generation of C code+description:+ Language C is a Haskell library for the analysis and generation of C code.+ It features a complete, well tested parser and pretty printer for all of C99 and a large+ set of C11 and clang/GNU extensions. -Extra-Source-Files: AUTHORS AUTHORS.c2hs ChangeLog README- src/Language/C/Parser/Lexer.x- src/Language/C/Parser/Parser.y+category: Language+build-type: Simple+extra-doc-files:+ ChangeLog.md+ README.md+ AUTHORS+ AUTHORS.c2hs -Source-Repository head- type: git- location: https://github.com/visq/language-c.git+source-repository head+ type: git+ location: https://github.com/visq/language-c.git -Flag splitBase- Description: Choose the new smaller, split-up base package.-Flag useByteStrings- Description: Use ByteString as InputStream datatype- Default: True-Flag separateSYB- description: Data.Generics available in separate package.-Flag allWarnings- Description: Turn on all warnings for building (development)- Default: False-Library- Extensions: CPP, DeriveDataTypeable, PatternGuards, BangPatterns, ExistentialQuantification, GeneralizedNewtypeDeriving, ScopedTypeVariables- Build-Depends: filepath- if flag(allWarnings)- if impl(ghc >= 8.0)- ghc-options: -Wall -Wno-redundant-constraints- else- ghc-options: -Wall- if flag(splitBase)- Build-Depends: base >= 3 && < 5, process, directory, array, containers, pretty+flag usebytestrings+ description: Use ByteString as InputStream datatype+ manual: True - If flag(separateSYB)- Build-Depends:- base >=4 && <5,- syb- Else- Build-Depends:- base <4- else- Build-Depends: base < 3+flag iecfpextension+ description:+ Support IEC 60559 floating point extension (defines _Float128) - if flag(useByteStrings)- Build-Depends: bytestring >= 0.9.0+ manual: True++library+ exposed-modules:+ Language.C+ Language.C.Data+ Language.C.Data.Position+ Language.C.Data.Ident+ Language.C.Data.Error+ Language.C.Data.Name+ Language.C.Data.Node+ Language.C.Data.InputStream+ Language.C.Syntax+ Language.C.Syntax.AST+ Language.C.Syntax.Constants+ Language.C.Syntax.Ops+ Language.C.Syntax.Utils+ Language.C.Parser+ Language.C.Pretty+ Language.C.System.Preprocess+ Language.C.System.GCC+ Language.C.Analysis+ Language.C.Analysis.ConstEval+ Language.C.Analysis.Builtins+ Language.C.Analysis.SemError+ Language.C.Analysis.SemRep+ Language.C.Analysis.DefTable+ Language.C.Analysis.TravMonad+ Language.C.Analysis.AstAnalysis+ Language.C.Analysis.DeclAnalysis+ Language.C.Analysis.Debug+ Language.C.Analysis.TypeCheck+ Language.C.Analysis.TypeConversions+ Language.C.Analysis.TypeUtils+ Language.C.Analysis.NameSpaceMap+ Language.C.Analysis.MachineDescs+ Language.C.Analysis.Export++ build-tool-depends: happy:happy, alex:alex+ hs-source-dirs: src+ other-modules:+ Language.C.Data.RList+ Language.C.Parser.Builtin+ Language.C.Parser.Lexer+ Language.C.Parser.ParserMonad+ Language.C.Parser.Tokens+ Language.C.Parser.Parser++ default-language: Haskell2010+ default-extensions:+ CPP DeriveDataTypeable DeriveGeneric PatternGuards BangPatterns+ ExistentialQuantification GeneralizedNewtypeDeriving+ ScopedTypeVariables++ ghc-options: -Wall -Wno-redundant-constraints+ build-depends:+ base >=4.9 && <5,+ array <0.6,+ containers >=0.3 && <0.9,+ deepseq >=1.4.0.0 && <1.6,+ directory <1.4,+ filepath <1.6,+ mtl <2.4,+ pretty <1.2,+ process <1.7++ if flag(usebytestrings)+ build-depends: bytestring >=0.9.0 && <0.13+ else cpp-options: -DNO_BYTESTRING- Build-Tools: happy, alex - Hs-Source-Dirs: src- Exposed-Modules:- -- top-level- Language.C- -- data- Language.C.Data- Language.C.Data.Position- Language.C.Data.Ident- Language.C.Data.Error- Language.C.Data.Name- Language.C.Data.Node- Language.C.Data.InputStream- -- syntax- Language.C.Syntax- Language.C.Syntax.AST- Language.C.Syntax.Constants- Language.C.Syntax.Ops- Language.C.Syntax.Utils- -- parser- Language.C.Parser- -- pretty printer- Language.C.Pretty- -- system- Language.C.System.Preprocess- Language.C.System.GCC- -- analysis [experimental]- Language.C.Analysis- Language.C.Analysis.ConstEval- Language.C.Analysis.Builtins- Language.C.Analysis.SemError- Language.C.Analysis.SemRep- Language.C.Analysis.DefTable- Language.C.Analysis.TravMonad- Language.C.Analysis.AstAnalysis- Language.C.Analysis.DeclAnalysis- Language.C.Analysis.Debug- Language.C.Analysis.TypeCheck- Language.C.Analysis.TypeConversions- Language.C.Analysis.TypeUtils- Language.C.Analysis.NameSpaceMap- -- semrep -> code [alpha]- Language.C.Analysis.Export- Other-Modules:- Language.C.Data.RList- -- parser implementation- Language.C.Parser.Builtin- Language.C.Parser.Lexer- Language.C.Parser.ParserMonad- Language.C.Parser.Tokens- Language.C.Parser.Parser+ if flag(iecfpextension)+ cpp-options: -DIEC_60559_TYPES_EXT --- test description-Test-Suite language-c-harness- type: exitcode-stdio-1.0- main-is: test/harness/run-harness.hs- build-depends: base, language-c, directory, process, filepath+test-suite language-c-harness+ type: exitcode-stdio-1.0+ main-is: test/harness/run-harness.hs+ default-language: Haskell2010+ build-depends:+ base <5,+ directory,+ process,+ filepath
src/Language/C/Analysis/AstAnalysis.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE ScopedTypeVariables, PatternGuards #-}+{-# OPTIONS_GHC -Wwarn=incomplete-patterns #-} ----------------------------------------------------------------------------- -- | -- Module : Language.C.Parser.Translation@@ -183,6 +184,7 @@ let defaultSpec = FunLinkage ExternalLinkage case other_spec of NoStorageSpec -> return$ maybe defaultSpec declStorage obj_opt+ ClKernelSpec -> return$ maybe defaultSpec declStorage obj_opt (ExternSpec False) -> return$ maybe defaultSpec declStorage obj_opt bad_spec -> throwTravError $ badSpecifierError (nodeInfo ident) $ "unexpected function storage specifier (only static or extern is allowed)" ++ show bad_spec@@ -764,6 +766,8 @@ builtinType (CBuiltinVaArg _ d _) = analyseTypeDecl d builtinType (CBuiltinOffsetOf _ _ _) = return size_tType builtinType (CBuiltinTypesCompatible _ _ _) = return boolType+builtinType (CBuiltinConvertVector _expr ty _) = analyseTypeDecl ty+builtinType (CBuiltinBitCast ty _expr _) = analyseTypeDecl ty -- return @Just declspecs@ without @CTypedef@ if the declaration specifier contain @typedef@ hasTypeDef :: [CDeclSpec] -> Maybe [CDeclSpec]
src/Language/C/Analysis/ConstEval.hs view
@@ -1,8 +1,10 @@ {-# LANGUAGE RelaxedPolyRec #-} module Language.C.Analysis.ConstEval where +import Prelude hiding (Foldable(..)) import Control.Monad import Data.Bits+import Data.Foldable import Data.Maybe import qualified Data.Map as Map import Language.C.Syntax.AST@@ -42,7 +44,7 @@ sizeofType md _ (DirectType (TyIntegral it) _ _) = return $ iSize md it sizeofType md _ (DirectType (TyFloating ft) _ _) = return $ fSize md ft sizeofType md _ (DirectType (TyComplex ft) _ _) = return $ 2 * fSize md ft-sizeofType md _ (DirectType (TyComp ctr) _ _) = compSize md ctr+sizeofType md _ (DirectType (TyComp ctr) _ _) = fst <$> compSizeAndAlign md ctr sizeofType md _ (DirectType (TyEnum _) _ _) = return $ iSize md TyInt sizeofType md _ (DirectType (TyBuiltin b) _ _) = return $ builtinSize md b sizeofType md _ (PtrType _ _ _) = return $ ptrSize md@@ -66,6 +68,7 @@ alignofType md _ (DirectType (TyIntegral it) _ _) = return $ iAlign md it alignofType md _ (DirectType (TyFloating ft) _ _) = return $ fAlign md ft alignofType md _ (DirectType (TyComplex ft) _ _) = return $ fAlign md ft+alignofType md _ (DirectType (TyComp ctr) _ _) = snd <$> compSizeAndAlign md ctr alignofType md _ (DirectType (TyEnum _) _ _) = return $ iAlign md TyInt alignofType md _ (DirectType (TyBuiltin b) _ _) = return $ builtinAlign md b alignofType md _ (PtrType _ _ _) = return $ ptrAlign md@@ -75,8 +78,13 @@ alignofType _ n t = astError (nodeInfo n) $ "can't find alignment of type: " ++ (render . pretty) t -compSize :: MonadTrav m => MachineDesc -> CompTypeRef -> m Integer-compSize md ctr =+compSizeAndAlign+ :: MonadTrav m =>+ MachineDesc ->+ CompTypeRef ->+ m (Integer, Integer)+ -- ^ (size, alignment)+compSizeAndAlign md ctr = do dt <- getDefTable case lookupTag (sueRef ctr) dt of Just (Left _) -> astError (nodeInfo ctr)@@ -84,13 +92,33 @@ Just (Right (CompDef (CompType _ tag ms _ ni))) -> do let ts = map declType ms sizes <- mapM (sizeofType md ni) ts- -- XXX: handle padding- case tag of- StructTag -> return $ sum sizes- UnionTag -> return $ maximum sizes- Just (Right (EnumDef _)) -> return $ iSize md TyInt+ aligns <- mapM (alignofType md ni) ts+ let alignment = maximum (1 : aligns)+ size = case tag of+ UnionTag -> roundToAlignment alignment (maximum (0 : sizes))+ StructTag ->+ let sizeAndNextAlignment =+ zip sizes (drop 1 aligns ++ [alignment])+ offsets = foldl'+ (\offset (memberSize, nextAlign)+ -> roundToAlignment nextAlign (offset + memberSize))+ 0+ sizeAndNextAlignment+ in offsets+ return (size, alignment)+ Just (Right (EnumDef _)) -> return $ (iSize md TyInt, iAlign md TyInt) Nothing -> astError (nodeInfo ctr) "unknown composite" +-- | Find the next multiple of an alignment+roundToAlignment+ :: Integer+ -- ^ The alignment+ -> Integer+ -- ^ The value to align+ -> Integer+ -- ^ The next multiple of alignment+roundToAlignment alignment value =+ alignment * ((value + (alignment - 1)) `quot` alignment) {- Expression evaluation -}
src/Language/C/Analysis/Debug.hs view
@@ -26,6 +26,7 @@ import Language.C.Data import Language.C.Pretty +import Prelude hiding ((<>)) import Text.PrettyPrint.HughesPJ import Data.Map (Map) ; import qualified Data.Map as Map
src/Language/C/Analysis/DeclAnalysis.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE PatternGuards, FlexibleContexts #-}+{-# OPTIONS_GHC -Wwarn=incomplete-patterns #-} ----------------------------------------------------------------------------- -- | -- Module : Language.C.Analysis.DeclAnalysis@@ -18,7 +19,7 @@ mergeOldStyle, -- * Dissecting type specs canonicalTypeSpec, NumBaseType(..),SignSpec(..),SizeMod(..),NumTypeSpec(..),TypeSpecAnalysis(..),- canonicalStorageSpec, StorageSpec(..), hasThreadLocalSpec, isTypeDef,+ canonicalStorageSpec, StorageSpec(..), hasThreadLocalSpec, hasClKernelSpec, isTypeDef, -- * Helpers VarDeclInfo(..), tAttr,mkVarName,getOnlyDeclr,nameOfDecl,analyseVarDecl,analyseVarDecl'@@ -76,6 +77,8 @@ computeParamStorage :: NodeInfo -> StorageSpec -> Either BadSpecifierError Storage computeParamStorage _ NoStorageSpec = Right (Auto False) computeParamStorage _ RegSpec = Right (Auto True)+computeParamStorage _ ClGlobalSpec = Right (Static NoLinkage False)+computeParamStorage _ ClLocalSpec = Right (Static NoLinkage True) computeParamStorage node spec = Left . badSpecifierError node $ "Bad storage specified for parameter: " ++ show spec -- | analyse and translate a member declaration@@ -124,14 +127,19 @@ return () data StorageSpec = NoStorageSpec | AutoSpec | RegSpec | ThreadSpec | StaticSpec Bool | ExternSpec Bool+ | ClKernelSpec | ClGlobalSpec | ClLocalSpec deriving (Eq,Ord,Show,Read) hasThreadLocalSpec :: StorageSpec -> Bool hasThreadLocalSpec ThreadSpec = True+hasThreadLocalSpec ClLocalSpec = True hasThreadLocalSpec (StaticSpec b) = b hasThreadLocalSpec (ExternSpec b) = b hasThreadLocalSpec _ = False +hasClKernelSpec :: StorageSpec -> Bool+hasClKernelSpec ClKernelSpec = True+ data VarDeclInfo = VarDeclInfo VarName FunctionAttrs StorageSpec Attributes Type NodeInfo analyseVarDecl' :: (MonadTrav m) =>@@ -388,6 +396,8 @@ (BaseFloat, NoSignSpec, NoSizeMod) -> floatType TyFloat (BaseDouble, NoSignSpec, NoSizeMod) -> floatType TyDouble (BaseDouble, NoSignSpec, LongMod) -> floatType TyLDouble+ (BaseBFloat16, NoSignSpec, NoSizeMod) -> floatType TyBFloat16+ (BaseFloatN n x, NoSignSpec, NoSizeMod) -> floatType (TyFloatN n x) -- TODO: error analysis (_,_,_) -> error "Bad AST analysis" where@@ -413,15 +423,18 @@ go (CAttrQual attr) (tq,attrs) = liftM (\attr' -> (tq,attr':attrs)) (tAttr attr) go (CNullableQual _) (tq,attrs) = return (tq { nullable = True }, attrs) go (CNonnullQual _) (tq,attrs) = return (tq { nonnull = True }, attrs)+ go (CClRdOnlyQual _) (tq,attrs) = return (tq { clrdonly = True },attrs)+ go (CClWrOnlyQual _) (tq,attrs) = return (tq { clwronly = True },attrs) -- * analysis {- To canoicalize type specifiers, we define a canonical form:-void | bool | (char|int|int128|float|double)? (signed|unsigned)? (long long?)? complex? | othertype+void | bool | (char|int|int128|float|double|floatNx)? (signed|unsigned)? (long long?)? complex? | othertype -}-data NumBaseType = NoBaseType | BaseChar | BaseInt | BaseInt128 | BaseFloat | BaseDouble deriving (Eq,Ord)+data NumBaseType = NoBaseType | BaseChar | BaseInt | BaseInt128 | BaseFloat | BaseBFloat16 |+ BaseFloatN Int Bool | BaseDouble deriving (Eq,Ord) data SignSpec = NoSignSpec | Signed | Unsigned deriving (Eq,Ord) data SizeMod = NoSizeMod | ShortMod | LongMod | LongLongMod deriving (Eq,Ord) data NumTypeSpec = NumTypeSpec { base :: NumBaseType, signSpec :: SignSpec, sizeMod :: SizeMod, isComplex :: Bool }@@ -450,6 +463,10 @@ = return$ TSNum$ nts { base = BaseInt128 } go (CFloatType _) tsa | (Just nts@(NumTypeSpec { base = NoBaseType })) <- getNTS tsa = return$ TSNum$ nts { base = BaseFloat }+ go (CBFloat16Type _) tsa | (Just nts@(NumTypeSpec { base = NoBaseType })) <- getNTS tsa+ = return$ TSNum$ nts { base = BaseBFloat16 }+ go (CFloatNType n x _) tsa | (Just nts@(NumTypeSpec { base = NoBaseType })) <- getNTS tsa+ = return$ TSNum$ nts { base = BaseFloatN n x } go (CDoubleType _) tsa | (Just nts@(NumTypeSpec { base = NoBaseType })) <- getNTS tsa = return$ TSNum$ nts { base = BaseDouble } go (CShortType _) tsa | (Just nts@(NumTypeSpec { sizeMod = NoSizeMod })) <- getNTS tsa@@ -477,6 +494,9 @@ updStorage (CAuto _) NoStorageSpec = return AutoSpec updStorage (CRegister _) NoStorageSpec = return RegSpec updStorage (CThread _) NoStorageSpec = return ThreadSpec+ updStorage (CClKernel _) NoStorageSpec = return ClKernelSpec+ updStorage (CClGlobal _) NoStorageSpec = return ClGlobalSpec+ updStorage (CClLocal _) NoStorageSpec = return ClLocalSpec updStorage (CThread _) (StaticSpec _) = return$ StaticSpec True updStorage (CThread _) (ExternSpec _) = return$ ExternSpec True updStorage (CStatic _) NoStorageSpec = return$ StaticSpec False
src/Language/C/Analysis/DefTable.hs view
@@ -40,7 +40,7 @@ import qualified Data.Map as Map import Data.IntMap (IntMap, union) import qualified Data.IntMap as IntMap-import Data.Generics+import Data.Data (Data) {- Name spaces, scopes and contexts [Scopes] @@ -106,7 +106,7 @@ -- | get the globally defined entries of a definition table globalDefs :: DefTable -> GlobalDecls-globalDefs deftbl = Map.foldWithKey insertDecl (GlobalDecls e gtags e) (globalNames $ identDecls deftbl)+globalDefs deftbl = Map.foldrWithKey insertDecl (GlobalDecls e gtags e) (globalNames $ identDecls deftbl) where e = Map.empty (_fwd_decls,gtags) = Map.mapEither id $ globalNames (tagDecls deftbl)@@ -167,7 +167,7 @@ | KeepDef t -- ^ new def was discarded | Shadowed t -- ^ new def shadows one in outer scope | KindMismatch t -- ^ kind mismatch- deriving (Data,Typeable)+ deriving (Data) declStatusDescr :: DeclarationStatus t -> String declStatusDescr NewDecl = "new" declStatusDescr (Redeclared _) = "redeclared"
src/Language/C/Analysis/Export.hs view
@@ -17,15 +17,66 @@ exportTypeDef, exportCompType, exportCompTypeDecl, exportCompTypeRef, exportEnumType, exportEnumTypeDecl, exportEnumTypeRef,+export, ) where-import Language.C.Data.Ident-import Language.C.Data.Name (nameId)-import Language.C.Data.Node-import Language.C.Syntax.AST-import Language.C.Analysis.SemRep-import Data.Maybe+import Data.List+import qualified Data.Map as Map+import Data.Maybe+import Language.C.Analysis.SemRep+import Language.C.Data.Ident+import Language.C.Data.Name (nameId)+import Language.C.Data.Node+import Language.C.Syntax.AST ++-- | Export global declarations+-- TODO: This does not export tags and type defs yet+export :: GlobalDecls -> CTranslUnit+export (GlobalDecls objs _tags _typedefs) = CTranslUnit (declarations ++ []) undefNode+ where declarations = fmap exportIdentDecl (filterBuiltins $ Map.toList objs)+ filterBuiltins = Prelude.filter noBuiltIns+ noBuiltIns (idn, _) = let n = identToString idn+ in not ("__builtin" `isPrefixOf` n) &&+ (n /= "__FUNCTION__") &&+ (n /= "__PRETTY_FUNCTION__") &&+ (n /= "__func__" )+++exportIdentDecl :: (Ident, IdentDecl) -> CExternalDeclaration NodeInfo+exportIdentDecl (_, Declaration decl) = CDeclExt $ exportDeclaration decl+exportIdentDecl (_, FunctionDef fundef) = CFDefExt $ exportFunDef fundef+exportIdentDecl (_, ObjectDef objdef) = CDeclExt $ exportObject objdef+exportIdentDecl (_, EnumeratorDef _) = error "not implemented: enumerator definition"++exportObject :: ObjDef -> CDeclaration NodeInfo+exportObject d@(ObjDef _ mInit nInf) = CDecl specs' [(Just decl, mInit, Nothing)] nInf+ where+ (DeclAttrs _ _ attrs) = declAttrs d+ specs = exportDeclarationSpecifiers (declAttrs d)+ (specs', decl) = exportDeclr specs (declType d) attrs (declName d)+++exportDeclaration :: Decl -> CDeclaration NodeInfo+exportDeclaration d = CDecl specs' [(Just decl, Nothing, Nothing)] undefNode+ where+ (DeclAttrs _ _ attrs) = declAttrs d+ specs = exportDeclarationSpecifiers (declAttrs d)+ (specs', decl) = exportDeclr specs (declType d) attrs (declName d)+++exportFunDef :: FunDef -> CFunctionDef NodeInfo+exportFunDef d@(FunDef _ stmt _) = CFunDef cDeclSpecs cDecl oldStyleParams stmt undefNode+ where+ (cDeclSpecs, cDecl) = exportDeclr specs (declType d) ([] :: Attributes) (declName d)+ oldStyleParams= [] :: [CDeclaration NodeInfo] -- TODO:?+ specs = exportDeclarationSpecifiers (declAttrs d):: [CDeclarationSpecifier NodeInfo]++exportDeclarationSpecifiers :: DeclAttrs -> [CDeclarationSpecifier NodeInfo]+exportDeclarationSpecifiers (DeclAttrs funcAttrs storage _attrs) = specifiers+ where specifiers = (CFunSpec <$> exportFunAttrs funcAttrs) ++ (CStorageSpec <$> exportStorage storage)++ -- |Export Declarator -- -- Synopsis: @exportDeclr other_specs type attributes variable-name@@@ -87,20 +138,20 @@ exportTypeQualsAttrs tyqs attrs = (exportTypeQuals tyqs ++ map CAttrQual (exportAttrs attrs)) exportArraySize :: ArraySize -> CArrSize-exportArraySize (ArraySize static e) = CArrSize static e+exportArraySize (ArraySize static e) = CArrSize static e exportArraySize (UnknownArraySize complete) = CNoArrSize complete exportTypeSpec :: TypeName -> [CTypeSpec] exportTypeSpec tyname = case tyname of- TyVoid -> [CVoidType ni]- TyIntegral ity -> exportIntType ity- TyFloating fty -> exportFloatType fty- TyComplex fty -> exportComplexType fty- TyComp comp -> exportCompTypeDecl comp- TyEnum enum -> exportEnumTypeDecl enum+ TyVoid -> [CVoidType ni]+ TyIntegral ity -> exportIntType ity+ TyFloating fty -> exportFloatType fty+ TyComplex fty -> exportComplexType fty+ TyComp comp -> exportCompTypeDecl comp+ TyEnum enum -> exportEnumTypeDecl enum TyBuiltin TyVaList -> [CTypeDef (internalIdent "va_list") ni]- TyBuiltin TyAny -> [CTypeDef (internalIdent "__ty_any") ni]+ TyBuiltin TyAny -> [CTypeDef (internalIdent "__ty_any") ni] exportIntType :: IntType -> [CTypeSpec] exportIntType ty =@@ -123,9 +174,11 @@ exportFloatType :: FloatType -> [CTypeSpec] exportFloatType ty = case ty of- TyFloat -> [CFloatType ni]- TyDouble -> [CDoubleType ni]- TyLDouble -> [CLongType ni, CDoubleType ni]+ TyFloat -> [CFloatType ni]+ TyDouble -> [CDoubleType ni]+ TyLDouble -> [CLongType ni, CDoubleType ni]+ TyBFloat16 -> [CBFloat16Type ni]+ TyFloatN n x -> [CFloatNType n x ni] exportComplexType :: FloatType -> [CTypeSpec] exportComplexType ty = (CComplexType ni) : exportFloatType ty@@ -217,16 +270,16 @@ threadLocal :: Bool -> [CStorageSpec] -> [CStorageSpec] threadLocal False = id-threadLocal True = ((CThread ni) :)+threadLocal True = ((CThread ni) :) exportAttrs :: [Attr] -> [CAttr] exportAttrs = map exportAttr where exportAttr (Attr ident es n) = CAttr ident es n fromDirectType :: Type -> TypeName-fromDirectType (DirectType ty _ _) = ty+fromDirectType (DirectType ty _ _) = ty fromDirectType (TypeDefType (TypeDefRef _ ty _) _ _) = fromDirectType ty-fromDirectType _ = error "fromDirectType"+fromDirectType _ = error "fromDirectType" ni :: NodeInfo ni = undefNode
+ src/Language/C/Analysis/MachineDescs.hs view
@@ -0,0 +1,119 @@+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE RecordWildCards #-}+module Language.C.Analysis.MachineDescs+ where++import Language.C.Analysis.ConstEval+import Language.C.Analysis.SemRep++x86_64 :: MachineDesc+x86_64 =+ let iSize = \case+ TyBool -> 1+ TyChar -> 1+ TySChar -> 1+ TyUChar -> 1+ TyShort -> 2+ TyUShort -> 2+ TyInt -> 4+ TyUInt -> 4+ TyLong -> 8+ TyULong -> 8+ TyLLong -> 8+ TyULLong -> 8+ TyInt128 -> 16+ TyUInt128 -> 16+ fSize = \case+ TyFloat -> 4+ TyDouble -> 8+ TyLDouble -> 16+ TyBFloat16 -> error "TyBFloat16"+ TyFloatN{} -> error "TyFloatN"+ builtinSize = \case+ TyVaList -> 24+ TyAny -> error "TyAny"+ ptrSize = 8+ voidSize = 1+ iAlign = \case+ TyBool -> 1+ TyChar -> 1+ TySChar -> 1+ TyUChar -> 1+ TyShort -> 2+ TyUShort -> 2+ TyInt -> 4+ TyUInt -> 4+ TyLong -> 8+ TyULong -> 8+ TyLLong -> 8+ TyULLong -> 8+ TyInt128 -> 16+ TyUInt128 -> 16+ fAlign = \case+ TyFloat -> 4+ TyDouble -> 8+ TyLDouble -> 16+ TyBFloat16{} -> error "TyBFloat16"+ TyFloatN{} -> error "TyFloatN"+ builtinAlign = \case+ TyVaList -> 8+ TyAny -> error "TyAny"+ ptrAlign = 8+ voidAlign = 1+ in MachineDesc { .. }++armv7l :: MachineDesc+armv7l =+ let iSize = \case+ TyBool -> 1+ TyChar -> 1+ TySChar -> 1+ TyUChar -> 1+ TyShort -> 2+ TyUShort -> 2+ TyInt -> 4+ TyUInt -> 4+ TyLong -> 4+ TyULong -> 4+ TyLLong -> 8+ TyULLong -> 8+ TyInt128 -> error "TyInt128 on armv7l"+ TyUInt128 -> error "TyUInt128 on armv7l"+ fSize = \case+ TyFloat -> 4+ TyDouble -> 8+ TyLDouble -> 8+ TyBFloat16 -> 2+ TyFloatN{} -> error "TyFloatN"+ builtinSize = \case+ TyVaList -> 4+ TyAny -> error "TyAny"+ ptrSize = 4+ voidSize = 1+ iAlign = \case+ TyBool -> 1+ TyChar -> 1+ TySChar -> 1+ TyUChar -> 1+ TyShort -> 2+ TyUShort -> 2+ TyInt -> 4+ TyUInt -> 4+ TyLong -> 4+ TyULong -> 4+ TyLLong -> 8+ TyULLong -> 8+ TyInt128 -> error "TyInt128 on armv7l"+ TyUInt128 -> error "TyUInt128 on armv7l"+ fAlign = \case+ TyFloat -> 4+ TyDouble -> 8+ TyLDouble -> 8+ TyBFloat16 -> 2+ TyFloatN{} -> error "TyFloatN"+ builtinAlign = \case+ TyVaList -> 4+ TyAny -> error "TyAny"+ ptrAlign = 4+ voidAlign = 1+ in MachineDesc { .. }
src/Language/C/Analysis/SemError.hs view
@@ -17,7 +17,6 @@ RedefError(..), RedefInfo(..), RedefKind(..), redefinition, ) where-import Data.Typeable -- this means we cannot use SemError in SemRep, but use rich types here import Language.C.Analysis.SemRep@@ -28,26 +27,26 @@ -- here are the errors available -- | InvalidASTError is caused by the violation of an invariant in the AST-newtype InvalidASTError = InvalidAST ErrorInfo deriving (Typeable)+newtype InvalidASTError = InvalidAST ErrorInfo instance Error InvalidASTError where errorInfo (InvalidAST ei) = ei changeErrorLevel (InvalidAST ei) lvl' = InvalidAST (changeErrorLevel ei lvl') -- | BadSpecifierError is caused by an invalid combination of specifiers-newtype BadSpecifierError = BadSpecifierError ErrorInfo deriving (Typeable)+newtype BadSpecifierError = BadSpecifierError ErrorInfo instance Error BadSpecifierError where errorInfo (BadSpecifierError ei) = ei changeErrorLevel (BadSpecifierError ei) lvl' = BadSpecifierError (changeErrorLevel ei lvl') -- | RedefError is caused by an invalid redefinition of the same identifier or type-data RedefError = RedefError ErrorLevel RedefInfo deriving Typeable+data RedefError = RedefError ErrorLevel RedefInfo data RedefInfo = RedefInfo String RedefKind NodeInfo NodeInfo data RedefKind = DuplicateDef | DiffKindRedecl | ShadowedDef | DisagreeLinkage | NoLinkageOld-data TypeMismatch = TypeMismatch String (NodeInfo,Type) (NodeInfo,Type) deriving Typeable+data TypeMismatch = TypeMismatch String (NodeInfo,Type) (NodeInfo,Type) -- Invalid AST -- ~~~~~~~~~~~
src/Language/C/Analysis/SemRep.hs view
@@ -58,7 +58,7 @@ import Data.Map (Map) import qualified Data.Map as Map import Data.Maybe-import Data.Generics+import Data.Data (Data) -- | accessor class : struct\/union\/enum names class HasSUERef a where@@ -71,7 +71,7 @@ -- | Composite type definitions (tags) data TagDef = CompDef CompType --composite definition | EnumDef EnumType --enum definition- deriving (Typeable, Data {-! ,CNode !-})+ deriving (Data {-! ,CNode !-}, Show) instance HasSUERef TagDef where sueRef (CompDef ct) = sueRef ct@@ -113,7 +113,7 @@ | ObjectDef ObjDef -- ^ object definition | FunctionDef FunDef -- ^ function definition | EnumeratorDef Enumerator -- ^ definition of an enumerator- deriving (Typeable, Data {-! ,CNode !-})+ deriving (Data {-! ,CNode !-}, Show) instance Declaration IdentDecl where getVarDecl (Declaration decl) = getVarDecl decl@@ -136,7 +136,7 @@ ( Map Ident Enumerator, Map Ident ObjDef, Map Ident FunDef ) )-splitIdentDecls include_all = Map.foldWithKey (if include_all then deal else deal') (Map.empty,(Map.empty,Map.empty,Map.empty))+splitIdentDecls include_all = Map.foldrWithKey (if include_all then deal else deal') (Map.empty,(Map.empty,Map.empty,Map.empty)) where deal ident entry (decls,defs) = (Map.insert ident (declOfDef entry) decls, addDef ident entry defs) deal' ident (Declaration d) (decls,defs) = (Map.insert ident d decls,defs)@@ -202,7 +202,7 @@ -- | Declarations, which aren't definitions data Decl = Decl VarDecl NodeInfo- deriving (Typeable, Data {-! ,CNode !-})+ deriving (Data {-! ,CNode !-}, Show) instance Declaration Decl where getVarDecl (Decl vd _) = vd@@ -214,7 +214,7 @@ -- If the initializer is missing, it is a tentative definition, i.e. a -- definition which might be overriden later on. data ObjDef = ObjDef VarDecl (Maybe Initializer) NodeInfo- deriving (Typeable, Data {-! ,CNode !-})+ deriving (Data {-! ,CNode !-}, Show) instance Declaration ObjDef where getVarDecl (ObjDef vd _ _) = vd @@ -227,7 +227,7 @@ -- -- A function definition is a declaration together with a statement (the function body). data FunDef = FunDef VarDecl Stmt NodeInfo- deriving (Typeable, Data {-! ,CNode !-})+ deriving (Data {-! ,CNode !-}, Show) instance Declaration FunDef where getVarDecl (FunDef vd _ _) = vd @@ -235,7 +235,7 @@ -- | Parameter declaration data ParamDecl = ParamDecl VarDecl NodeInfo | AbstractParamDecl VarDecl NodeInfo- deriving (Typeable, Data {-! ,CNode !-} )+ deriving (Data {-! ,CNode !-}, Show) instance Declaration ParamDecl where getVarDecl (ParamDecl vd _) = vd@@ -246,7 +246,7 @@ -- ^ @MemberDecl vardecl bitfieldsize node@ | AnonBitField Type Expr NodeInfo -- ^ @AnonBitField typ size@- deriving (Typeable, Data {-! ,CNode !-} )+ deriving (Data {-! ,CNode !-}, Show) instance Declaration MemberDecl where getVarDecl (MemberDecl vd _ _) = vd@@ -256,7 +256,7 @@ -- -- The identifier is a new name for the given type. data TypeDef = TypeDef Ident Type Attributes NodeInfo- deriving (Typeable, Data {-! ,CNode !-} )+ deriving (Data {-! ,CNode !-}, Show) -- | return the idenitifier of a @typedef@ identOfTypeDef :: TypeDef -> Ident@@ -264,7 +264,7 @@ -- | Generic variable declarations data VarDecl = VarDecl VarName DeclAttrs Type- deriving (Typeable, Data)+ deriving (Data, Show) instance Declaration VarDecl where getVarDecl = id@@ -278,7 +278,7 @@ -- They specify the storage and linkage of a declared object. data DeclAttrs = DeclAttrs FunctionAttrs Storage Attributes -- ^ @DeclAttrs fspecs storage attrs@- deriving (Typeable, Data)+ deriving (Data, Show) -- | get the 'Storage' of a declaration declStorage :: (Declaration d) => d -> Storage@@ -290,7 +290,7 @@ -- Function attributes (inline, noreturn) data FunctionAttrs = FunctionAttrs { isInline :: Bool, isNoreturn :: Bool }- deriving (Eq, Ord, Typeable, Data)+ deriving (Eq, Ord, Data, Show) noFunctionAttrs :: FunctionAttrs noFunctionAttrs = FunctionAttrs { isInline = False, isNoreturn = False }@@ -313,14 +313,14 @@ | Auto Register -- ^ automatic storage (optional: register) | Static Linkage ThreadLocal -- ^ static storage, linkage spec and thread local specifier (gnu c) | FunLinkage Linkage -- ^ function, either internal or external linkage- deriving (Typeable, Data, Show, Eq, Ord)+ deriving (Data, Show, Eq, Ord) type ThreadLocal = Bool type Register = Bool -- | Linkage: Either no linkage, internal to the translation unit or external data Linkage = NoLinkage | InternalLinkage | ExternalLinkage- deriving (Typeable, Data, Show, Eq, Ord)+ deriving (Data, Show, Eq, Ord) -- | return @True@ if the object has linkage hasLinkage :: Storage -> Bool@@ -352,14 +352,14 @@ -- ^ function type | TypeDefType TypeDefRef TypeQuals Attributes -- ^ a defined type- deriving (Typeable, Data)+ deriving (Data, Show) -- | Function types are of the form @FunType return-type params isVariadic@. -- -- If the parameter types aren't yet known, the function has type @FunTypeIncomplete type attrs@. data FunType = FunType Type [ParamDecl] Bool | FunTypeIncomplete Type- deriving (Typeable, Data)+ deriving (Data, Show) -- | An array type may either have unknown size or a specified array size, the latter either variable or constant. -- Furthermore, when used as a function parameters, the size may be qualified as /static/.@@ -368,7 +368,7 @@ -- ^ @UnknownArraySize is-starred@ | ArraySize Bool Expr -- ^ @FixedSizeArray is-static size-expr@- deriving (Typeable, Data)+ deriving (Data, Show) -- | normalized type representation data TypeName =@@ -379,17 +379,17 @@ | TyComp CompTypeRef | TyEnum EnumTypeRef | TyBuiltin BuiltinType- deriving (Typeable, Data)+ deriving (Data, Show) -- | Builtin type (va_list, anything) data BuiltinType = TyVaList | TyAny- deriving (Typeable, Data)+ deriving (Data, Show) -- | typdef references -- If the actual type is known, it is attached for convenience data TypeDefRef = TypeDefRef Ident Type NodeInfo- deriving (Typeable, Data {-! ,CNode !-})+ deriving (Data {-! ,CNode !-}, Show) -- | integral types (C99 6.7.2.2) data IntType =@@ -407,7 +407,7 @@ | TyULong | TyLLong | TyULLong- deriving (Typeable, Data, Eq, Ord)+ deriving (Data, Eq, Ord) instance Show IntType where show TyBool = "_Bool"@@ -430,27 +430,31 @@ TyFloat | TyDouble | TyLDouble- deriving (Typeable, Data, Eq, Ord)+ | TyBFloat16+ | TyFloatN Int Bool+ deriving (Data, Eq, Ord) instance Show FloatType where show TyFloat = "float" show TyDouble = "double" show TyLDouble = "long double"+ show TyBFloat16 = "__bf16"+ show (TyFloatN n x) = "_Float" ++ (show n) ++ (if x then "x" else "") -- | composite type declarations data CompTypeRef = CompTypeRef SUERef CompTyKind NodeInfo- deriving (Typeable, Data {-! ,CNode !-})+ deriving (Data {-! ,CNode !-}, Show) instance HasSUERef CompTypeRef where sueRef (CompTypeRef ref _ _) = ref instance HasCompTyKind CompTypeRef where compTag (CompTypeRef _ tag _) = tag data EnumTypeRef = EnumTypeRef SUERef NodeInfo- deriving (Typeable, Data {-! ,CNode !-})+ deriving (Data {-! ,CNode !-}, Show) instance HasSUERef EnumTypeRef where sueRef (EnumTypeRef ref _) = ref -- | Composite type (struct or union). data CompType = CompType SUERef CompTyKind [MemberDecl] Attributes NodeInfo- deriving (Typeable, Data {-! ,CNode !-} )+ deriving (Data {-! ,CNode !-}, Show) instance HasSUERef CompType where sueRef (CompType ref _ _ _ _) = ref instance HasCompTyKind CompType where compTag (CompType _ tag _ _ _) = tag @@ -461,7 +465,7 @@ -- | a tag to determine wheter we refer to a @struct@ or @union@, see 'CompType'. data CompTyKind = StructTag | UnionTag- deriving (Eq,Ord,Typeable,Data)+ deriving (Eq,Ord,Data) instance Show CompTyKind where show StructTag = "struct"@@ -470,7 +474,7 @@ -- | Representation of C enumeration types data EnumType = EnumType SUERef [Enumerator] Attributes NodeInfo -- ^ @EnumType name enumeration-constants attrs node@- deriving (Typeable, Data {-! ,CNode !-} )+ deriving (Data {-! ,CNode !-}, Show) instance HasSUERef EnumType where sueRef (EnumType ref _ _ _) = ref @@ -480,7 +484,7 @@ -- | An Enumerator consists of an identifier, a constant expressions and the link to its type data Enumerator = Enumerator Ident Expr EnumType NodeInfo- deriving (Typeable, Data {-! ,CNode !-})+ deriving (Data {-! ,CNode !-}, Show) instance Declaration Enumerator where getVarDecl (Enumerator ide _ enumty _) = VarDecl@@ -491,26 +495,30 @@ -- | Type qualifiers: constant, volatile and restrict data TypeQuals = TypeQuals { constant :: Bool, volatile :: Bool, restrict :: Bool, atomic :: Bool,- nullable :: Bool, nonnull :: Bool }- deriving (Typeable, Data)+ nullable :: Bool, nonnull :: Bool,+ clrdonly :: Bool, clwronly :: Bool }+ deriving (Data, Show) instance Eq TypeQuals where- (==) (TypeQuals c1 v1 r1 a1 n1 nn1) (TypeQuals c2 v2 r2 a2 n2 nn2) =+ (==) (TypeQuals c1 v1 r1 a1 n1 nn1 rd1 wr1) (TypeQuals c2 v2 r2 a2 n2 nn2 rd2 wr2) = c1 == c2 && v1 == v2 && r1 == r2 && a1 == a2 && n1 == n2 && nn1 == nn2+ && rd1 == rd2 && wr1 == wr2 instance Ord TypeQuals where- (<=) (TypeQuals c1 v1 r1 a1 n1 nn1) (TypeQuals c2 v2 r2 a2 n2 nn2) =+ (<=) (TypeQuals c1 v1 r1 a1 n1 nn1 rd1 wr1) (TypeQuals c2 v2 r2 a2 n2 nn2 rd2 wr2) = c1 <= c2 && v1 <= v2 && r1 <= r2 && a1 <= a2 && n1 <= n2 && nn1 <= nn2+ && rd1 <= rd2 && wr1 <= wr2 -- | no type qualifiers noTypeQuals :: TypeQuals-noTypeQuals = TypeQuals False False False False False False+noTypeQuals = TypeQuals False False False False False False False False -- | merge (/&&/) two type qualifier sets mergeTypeQuals :: TypeQuals -> TypeQuals -> TypeQuals-mergeTypeQuals (TypeQuals c1 v1 r1 a1 n1 nn1) (TypeQuals c2 v2 r2 a2 n2 nn2) =+mergeTypeQuals (TypeQuals c1 v1 r1 a1 n1 nn1 rd1 wr1) (TypeQuals c2 v2 r2 a2 n2 nn2 rd2 wr2) = TypeQuals (c1 && c2) (v1 && v2) (r1 && r2) (a1 && a2) (n1 && n2) (nn1 && nn2)+ (rd1 && rd2) (wr1 && wr2) -- * initializers @@ -532,7 +540,7 @@ -- | @VarName name assembler-name@ is a name of an declared object data VarName = VarName Ident (Maybe AsmName) | NoName- deriving (Typeable, Data)+ deriving (Data, Show) identOfVarName :: VarName -> Ident identOfVarName NoName = error "identOfVarName: NoName" identOfVarName (VarName ident _) = ident@@ -566,7 +574,7 @@ -- -- /TODO/: ultimatively, we want to parse attributes and represent them in a typed way data Attr = Attr Ident [Expr] NodeInfo- deriving (Typeable, Data {-! ,CNode !-})+ deriving (Data {-! ,CNode !-}, Show) type Attributes = [Attr]
src/Language/C/Analysis/TravMonad.hs view
@@ -1,5 +1,6 @@-{-# LANGUAGE MultiParamTypeClasses, TypeSynonymInstances, FlexibleContexts,FlexibleInstances,- PatternGuards, RankNTypes, ScopedTypeVariables #-}+{-# LANGUAGE MultiParamTypeClasses, FlexibleContexts,FlexibleInstances,+ PatternGuards, RankNTypes, ScopedTypeVariables, LambdaCase #-}+{-# OPTIONS_GHC -Wwarn=incomplete-uni-patterns #-} ----------------------------------------------------------------------------- -- | -- Module : Language.C.Analysis.TravMonad@@ -40,8 +41,8 @@ hadHardErrors,handleTravError,throwOnLeft, astError, warn, -- * Trav - default MonadTrav implementation- Trav,- runTrav,runTrav_,+ Trav, TravT,+ runTravT, runTravTWithTravState, runTrav, runTrav_, TravState,initTravState,withExtDeclHandler,modifyUserState,userState, getUserState, TravOptions(..),modifyOptions,@@ -67,7 +68,11 @@ import Data.Maybe import Control.Applicative (Applicative(..)) import Control.Monad (liftM, ap)-import Prelude hiding (lookup)+import Control.Monad.Identity (Identity, runIdentity)+import Control.Monad.State.Class (MonadState, get, put, modify, gets)+import Control.Monad.Trans (MonadTrans, lift)+import Control.Monad.IO.Class (MonadIO, liftIO)+import Prelude hiding (Applicative(..), lookup) class (Monad m) => MonadName m where -- | unique name generation@@ -379,56 +384,62 @@ -- * The Trav datatype -- | simple traversal monad, providing user state and callbacks-newtype Trav s a = Trav { unTrav :: TravState s -> Either CError (a, TravState s) }-modify :: (TravState s -> TravState s) -> Trav s ()-modify f = Trav (\s -> Right ((),f s))-gets :: (TravState s -> a) -> Trav s a-gets f = Trav (\s -> Right (f s, s))-get :: Trav s (TravState s)-get = Trav (\s -> Right (s,s))-put :: TravState s -> Trav s ()-put s = Trav (\_ -> Right ((),s))+newtype TravT s m a = TravT { unTravT :: TravState m s -> m (Either CError (a, TravState m s)) } +instance Monad m => MonadState (TravState m s) (TravT s m) where+ get = TravT (\s -> return (Right (s,s)))+ put s = TravT (\_ -> return (Right ((),s))) -runTrav :: forall s a. s -> Trav s a -> Either [CError] (a, TravState s)-runTrav state traversal =- case unTrav action (initTravState state) of+runTravT :: forall m s a. Monad m => s -> TravT s m a -> m (Either [CError] (a, TravState m s))+runTravT state traversal =+ runTravTWithTravState (initTravState state) $ do+ withDefTable (const ((), builtins))+ traversal++runTravTWithTravState :: forall s m a. Monad m => TravState m s -> TravT s m a -> m (Either [CError] (a, TravState m s))+runTravTWithTravState state traversal =+ unTravT traversal state >>= pure . \case Left trav_err -> Left [trav_err] Right (v, ts) | hadHardErrors (travErrors ts) -> Left (travErrors ts) | otherwise -> Right (v,ts)- where- action = do withDefTable (const ((), builtins))- traversal +runTrav :: forall s a. s -> Trav s a -> Either [CError] (a, TravState Identity s)+runTrav state traversal = runIdentity (runTravT state (unTrav traversal))+ runTrav_ :: Trav () a -> Either [CError] (a,[CError]) runTrav_ t = fmap fst . runTrav () $ do r <- t es <- getErrors return (r,es) -withExtDeclHandler :: Trav s a -> (DeclEvent -> Trav s ()) -> Trav s a+withExtDeclHandler :: Monad m => TravT s m a -> (DeclEvent -> TravT s m ()) -> TravT s m a withExtDeclHandler action handler = do modify $ \st -> st { doHandleExtDecl = handler } action -instance Functor (Trav s) where+instance Monad f => Functor (TravT s f) where fmap = liftM -instance Applicative (Trav s) where- pure = return+instance Monad f => Applicative (TravT s f) where+ pure x = TravT (\s -> return (Right (x,s))) (<*>) = ap -instance Monad (Trav s) where- return x = Trav (\s -> Right (x,s))- m >>= k = Trav (\s -> case unTrav m s of- Right (x,s1) -> unTrav (k x) s1- Left e -> Left e)+instance Monad m => Monad (TravT s m) where+ m >>= k = TravT (\s -> unTravT m s >>= \y -> case y of+ Right (x,s1) -> unTravT (k x) s1+ Left e -> return (Left e)) -instance MonadName (Trav s) where+instance MonadTrans (TravT s) where+ lift m = TravT (\s -> (\x -> Right (x, s)) <$> m)++instance MonadIO m => MonadIO (TravT s m) where+ liftIO = lift . liftIO++instance Monad m => MonadName (TravT s m) where -- unique name generation genName = generateName -instance MonadSymtab (Trav s) where+instance Monad m => MonadSymtab (TravT s m) where -- symbol table handling getDefTable = gets symbolTable withDefTable f = do@@ -437,19 +448,24 @@ put $ ts { symbolTable = symt' } return r -instance MonadCError (Trav s) where+instance Monad m => MonadCError (TravT s m) where -- error handling facilities- throwTravError e = Trav (\_ -> Left (toError e))- catchTravError a handler = Trav (\s -> case unTrav a s of- Left e -> unTrav (handler e) s- Right r -> Right r)+ throwTravError e = TravT (\_ -> return (Left (toError e)))+ catchTravError a handler = TravT (\s -> unTravT a s >>= \x -> case x of+ Left e -> unTravT (handler e) s+ Right r -> return (Right r)) recordError e = modify $ \st -> st { rerrors = (rerrors st) `snoc` toError e } getErrors = gets (RList.reverse . rerrors) -instance MonadTrav (Trav s) where+instance Monad m => MonadTrav (TravT s m) where -- handling declarations and definitions handleDecl d = ($ d) =<< gets doHandleExtDecl +type Trav s a = TravT s Identity a++unTrav :: Trav s a -> TravT s Identity a+unTrav = id+ -- | The variety of the C language to accept. Note: this is not yet enforced. data CLanguage = C89 | C99 | GNU89 | GNU99 @@ -458,20 +474,20 @@ language :: CLanguage } -data TravState s =+data TravState m s = TravState { symbolTable :: DefTable, rerrors :: RList CError, nameGenerator :: [Name],- doHandleExtDecl :: (DeclEvent -> Trav s ()),+ doHandleExtDecl :: (DeclEvent -> TravT s m ()), userState :: s, options :: TravOptions } -travErrors :: TravState s -> [CError]+travErrors :: TravState m s -> [CError] travErrors = RList.reverse . rerrors -initTravState :: s -> TravState s+initTravState :: Monad m => s -> TravState m s initTravState userst = TravState { symbolTable = emptyDefTable,@@ -492,7 +508,7 @@ modifyOptions :: (TravOptions -> TravOptions) -> Trav s () modifyOptions f = modify $ \ts -> ts { options = f (options ts) } -generateName :: Trav s Name+generateName :: Monad m => TravT s m Name generateName = get >>= \ts -> do let (new_name : gen') = nameGenerator ts
src/Language/C/Analysis/TypeCheck.hs view
@@ -63,16 +63,16 @@ checkScalar :: Type -> Either String () checkScalar t = case canonicalType t of- DirectType _ _ _ -> return ()- PtrType _ _ _ -> return ()- ArrayType _ _ _ _ -> return () -- because it's just a pointer- t' -> fail $+ DirectType _ _ _ -> Right ()+ PtrType _ _ _ -> Right ()+ ArrayType _ _ _ _ -> Right () -- because it's just a pointer+ t' -> Left $ "expected scalar type, got: " ++ pType t ++ " (" ++ pType t' ++ ")" checkIntegral :: Type -> Either String ()-checkIntegral t | isIntegralType (canonicalType t) = return ()- | otherwise = fail $+checkIntegral t | isIntegralType (canonicalType t) = Right ()+ | otherwise = Left $ "expected integral type, got: " ++ pType t ++ " (" ++ pType (canonicalType t) ++ ")"@@ -109,60 +109,57 @@ -- | Determine the composite type of two compatible types. compositeType :: Type -> Type -> Either String Type-compositeType t1 (DirectType (TyBuiltin TyAny) _ _) = return t1-compositeType (DirectType (TyBuiltin TyAny) _ _) t2 = return t2+compositeType t1 (DirectType (TyBuiltin TyAny) _ _) = Right t1+compositeType (DirectType (TyBuiltin TyAny) _ _) t2 = Right t2 compositeType t1@(DirectType tn1 q1 a1) t2@(DirectType tn2 q2 a2) = do tn <- case (tn1, tn2) of- (TyVoid, TyVoid) -> return TyVoid- (TyIntegral _, TyEnum _) -> return tn1- (TyEnum _, TyIntegral _) -> return tn2+ (TyVoid, TyVoid) -> Right TyVoid+ (TyIntegral _, TyEnum _) -> Right tn1+ (TyEnum _, TyIntegral _) -> Right tn2 (TyIntegral i1, TyIntegral i2) ->- return $ TyIntegral (intConversion i1 i2)+ Right $ TyIntegral (intConversion i1 i2) (TyFloating f1, TyFloating f2) ->- return $ TyFloating (floatConversion f1 f2)+ Right $ TyFloating (floatConversion f1 f2) (TyComplex f1, TyComplex f2) ->- return $ TyComplex (floatConversion f1 f2)+ Right $ TyComplex (floatConversion f1 f2) (TyComp c1, TyComp c2) -> do when (sueRef c1 /= sueRef c2) $- fail $ "incompatible composite types: "+ Left $ "incompatible composite types: " ++ pType t1 ++ ", " ++ pType t2- return tn1+ Right tn1 (TyEnum e1, TyEnum e2) -> do when (sueRef e1 /= sueRef e2) $- fail $ "incompatible enumeration types: "+ Left $ "incompatible enumeration types: " ++ pType t1 ++ ", " ++ pType t2- return $ TyEnum e1+ Right $ TyEnum e1 (TyBuiltin TyVaList, TyBuiltin TyVaList) ->- return $ TyBuiltin TyVaList- (TyBuiltin _, TyBuiltin _) ->- fail $ "incompatible builtin types: "- ++ pType t1 ++ ", " ++ pType t2- (_, _) -> fail $ "incompatible direct types: "+ Right $ TyBuiltin TyVaList+ (_, _) -> Left $ "incompatible direct types: " ++ pType t1 ++ ", " ++ pType t2- return $ DirectType tn (mergeTypeQuals q1 q2) (mergeAttributes a1 a2)+ Right $ DirectType tn (mergeTypeQuals q1 q2) (mergeAttributes a1 a2) compositeType (PtrType t1 q1 a1) (PtrType (DirectType TyVoid _ _) q2 _) =- return $ PtrType t1 (mergeTypeQuals q1 q2) a1+ Right $ PtrType t1 (mergeTypeQuals q1 q2) a1 compositeType (PtrType (DirectType TyVoid _ _) q1 _) (PtrType t2 q2 a2) =- return $ PtrType t2 (mergeTypeQuals q1 q2) a2+ Right $ PtrType t2 (mergeTypeQuals q1 q2) a2 compositeType (PtrType t1 q1 a1) t2 | isIntegralType t2 =- return $ PtrType t1 (mergeTypeQuals q1 (typeQuals t2)) a1+ Right $ PtrType t1 (mergeTypeQuals q1 (typeQuals t2)) a1 compositeType t1 (PtrType t2 q2 a2) | isIntegralType t1 =- return $ PtrType t2 (mergeTypeQuals (typeQuals t1) q2) a2+ Right $ PtrType t2 (mergeTypeQuals (typeQuals t1) q2) a2 compositeType (ArrayType t1 _sz1 q1 a1) t2 | isIntegralType t2 =- return $ PtrType t1 q1 a1+ Right $ PtrType t1 q1 a1 compositeType t1 (ArrayType t2 _sz2 q2 a2) | isIntegralType t1 =- return $ PtrType t2 q2 a2+ Right $ PtrType t2 q2 a2 compositeType (ArrayType t1 s1 q1 a1) (ArrayType t2 s2 q2 a2) = do t <- compositeType t1 t2 s <- compositeSize s1 s2 let quals = mergeTypeQuals q1 q2 attrs = mergeAttrs a1 a2- return (ArrayType t s quals attrs)+ Right (ArrayType t s quals attrs) compositeType t1 t2 | isPointerType t1 && isPointerType t2 = do t <- compositeType (baseType t1) (baseType t2) let quals = mergeTypeQuals (typeQuals t1) (typeQuals t2) attrs = mergeAttrs (typeAttrs t1) (typeAttrs t2)- return (PtrType t quals attrs)+ Right (PtrType t quals attrs) compositeType (TypeDefType tdr1 _q1 _a1) (TypeDefType tdr2 _q2 _a2) = case (tdr1, tdr2) of (TypeDefRef _ t1 _, TypeDefRef _ t2 _) ->@@ -171,10 +168,10 @@ case (ft1, ft2) of (FunType rt1 args1 varargs1, FunType rt2 args2 varargs2) -> do {- when (length args1 /= length args2) $- fail "different numbers of arguments in function types" -}+ Left "different numbers of arguments in function types" -} args <- zipWithM compositeParamDecl args1 args2 when (varargs1 /= varargs2) $- fail "incompatible varargs declarations"+ Left "incompatible varargs declarations" doFunType rt1 rt2 args varargs1 (FunType rt1 args1 varargs1, FunTypeIncomplete rt2) -> doFunType rt1 rt2 args1 varargs1@@ -182,22 +179,22 @@ doFunType rt1 rt2 args2 varargs2 (FunTypeIncomplete rt1, FunTypeIncomplete rt2) -> do rt <- compositeType rt1 rt2- return (FunctionType (FunTypeIncomplete rt) (mergeAttrs attrs1 attrs2))+ Right (FunctionType (FunTypeIncomplete rt) (mergeAttrs attrs1 attrs2)) where doFunType rt1 rt2 args varargs = do rt <- compositeType rt1 rt2- return (FunctionType+ Right (FunctionType (FunType rt args varargs) (mergeAttrs attrs1 attrs2))-compositeType t1 t2 = fail $ "incompatible types: "+compositeType t1 t2 = Left $ "incompatible types: " ++ pType t1 ++ ", " ++ pType t2 -- XXX: this may not be correct compositeSize :: ArraySize -> ArraySize -> Either String ArraySize-compositeSize (UnknownArraySize _) s2 = return s2-compositeSize s1 (UnknownArraySize _) = return s1+compositeSize (UnknownArraySize _) s2 = Right s2+compositeSize s1 (UnknownArraySize _) = Right s1 compositeSize (ArraySize s1 e1) (ArraySize s2 e2)- | s1 == s2 && sizeEqual e1 e2 = return $ ArraySize s1 e1- | otherwise = return $ ArraySize s1 e1+ | s1 == s2 && sizeEqual e1 e2 = Right $ ArraySize s1 e1+ | otherwise = Right $ ArraySize s1 e1 {- fail $ "incompatible array sizes: " ++ (render . pretty) e1 ++ ", " ++ (render . pretty) e2@@ -227,14 +224,14 @@ -> Either String ParamDecl compositeParamDecl' f (VarDecl n1 attrs1 t1) (VarDecl n2 attrs2 t2) dni = do vd <- compositeVarDecl (VarDecl n1 attrs1 t1') (VarDecl n2 attrs2 t2')- return $ f vd dni+ Right $ f vd dni where t1' = canonicalType t1 t2' = canonicalType t2 compositeVarDecl :: VarDecl -> VarDecl -> Either String VarDecl compositeVarDecl (VarDecl n1 attrs1 t1) (VarDecl _ attrs2 t2) = do t <- compositeType t1 t2- return (VarDecl n1 (compositeDeclAttrs attrs1 attrs2) t)+ Right (VarDecl n1 (compositeDeclAttrs attrs1 attrs2) t) -- XXX: bad treatement of inline and storage compositeDeclAttrs :: DeclAttrs -> DeclAttrs -> DeclAttrs@@ -244,36 +241,36 @@ castCompatible :: Type -> Type -> Either String () castCompatible t1 t2 = case (canonicalType t1, canonicalType t2) of- (DirectType TyVoid _ _, _) -> return ()+ (DirectType TyVoid _ _, _) -> Right () (_, _) -> checkScalar t1 >> checkScalar t2 -- | Determine whether two types are compatible in an assignment expression. assignCompatible :: CAssignOp -> Type -> Type -> Either String () assignCompatible CAssignOp t1 t2 = case (canonicalType t1, canonicalType t2) of- (DirectType (TyBuiltin TyAny) _ _, _) -> return ()- (_, DirectType (TyBuiltin TyAny) _ _) -> return ()+ (DirectType (TyBuiltin TyAny) _ _, _) -> Right ()+ (_, DirectType (TyBuiltin TyAny) _ _) -> Right () -- XXX: check qualifiers- (PtrType (DirectType TyVoid _ _) _ _, t2') | isPointerType t2' -> return ()+ (PtrType (DirectType TyVoid _ _) _ _, t2') | isPointerType t2' -> Right () -- XXX: check qualifiers- (t1', PtrType (DirectType TyVoid _ _) _ _) | isPointerType t1' -> return ()- (PtrType _ _ _, t2') | isIntegralType t2' -> return ()+ (t1', PtrType (DirectType TyVoid _ _) _ _) | isPointerType t1' -> Right ()+ (PtrType _ _ _, t2') | isIntegralType t2' -> Right () (t1', t2') | isPointerType t1' && isPointerType t2' -> compatible (baseType t1') (baseType t2') --unless (typeQuals t2 <= typeQuals t1) $- -- fail $+ -- Left $ -- "incompatible qualifiers in pointer assignment: " -- ++ pType t1 ++ ", " ++ pType t2 (DirectType (TyComp c1) _ _, DirectType (TyComp c2) _ _)- | sueRef c1 == sueRef c2 -> return ()- | otherwise -> fail $+ | sueRef c1 == sueRef c2 -> Right ()+ | otherwise -> Left $ "incompatible compound types in assignment: " ++ pType t1 ++ ", " ++ pType t2 (DirectType (TyBuiltin TyVaList) _ _, DirectType (TyBuiltin TyVaList) _ _) ->- return ()+ Right () (DirectType tn1 _ _, DirectType tn2 _ _)- | isJust (arithmeticConversion tn1 tn2) -> return ()- | otherwise -> fail $ "incompatible direct types in assignment: "+ | isJust (arithmeticConversion tn1 tn2) -> Right ()+ | otherwise -> Left $ "incompatible direct types in assignment: " ++ pType t1 ++ ", " ++ pType t2 (t1', t2') -> compatible t1' t2' assignCompatible op t1 t2 = void$ binopType (assignBinop op) t1 t2@@ -284,84 +281,84 @@ case (op, canonicalType t1, canonicalType t2) of (_, t1', t2') | isLogicOp op ->- checkScalar t1' >> checkScalar t2' >> return boolType+ checkScalar t1' >> checkScalar t2' >> Right boolType | isCmpOp op -> case (t1', t2') of (DirectType tn1 _ _, DirectType tn2 _ _) -> case arithmeticConversion tn1 tn2 of- Just _ -> return boolType- Nothing -> fail $ render $+ Just _ -> Right boolType+ Nothing -> Left $ render $ text "incompatible arithmetic types in comparison: " <+> pretty t1 <+> text "and" <+> pretty t2 (PtrType (DirectType TyVoid _ _) _ _, _)- | isPointerType t2' -> return boolType+ | isPointerType t2' -> Right boolType (_, PtrType (DirectType TyVoid _ _) _ _)- | isPointerType t1' -> return boolType+ | isPointerType t1' -> Right boolType (_, _)- | isPointerType t1' && isIntegralType t2' -> return boolType- | isIntegralType t1' && isPointerType t2' -> return boolType+ | isPointerType t1' && isIntegralType t2' -> Right boolType+ | isIntegralType t1' && isPointerType t2' -> Right boolType | isPointerType t1' && isPointerType t2' ->- compatible t1' t2' >> return boolType- (_, _) -> fail "incompatible types in comparison"+ compatible t1' t2' >> Right boolType+ (_, _) -> Left "incompatible types in comparison" (CSubOp, ArrayType t1' _ _ _, ArrayType t2' _ _ _) ->- compatible t1' t2' >> return ptrDiffType+ compatible t1' t2' >> Right ptrDiffType (CSubOp, ArrayType t1' _ _ _, PtrType t2' _ _) ->- compatible t1' t2' >> return ptrDiffType+ compatible t1' t2' >> Right ptrDiffType (CSubOp, PtrType t1' _ _, ArrayType t2' _ _ _) ->- compatible t1' t2' >> return ptrDiffType+ compatible t1' t2' >> Right ptrDiffType (CSubOp, PtrType t1' _ _, PtrType t2' _ _) ->- compatible t1' t2' >> return ptrDiffType+ compatible t1' t2' >> Right ptrDiffType (_, PtrType _ _ _, t2')- | isPtrOp op && isIntegralType t2' -> return t1- | otherwise -> fail $ "invalid pointer operation: " ++ render (pretty op)- (CAddOp, t1', PtrType _ _ _) | isIntegralType t1' -> return t2+ | isPtrOp op && isIntegralType t2' -> Right t1+ | otherwise -> Left $ "invalid pointer operation: " ++ render (pretty op)+ (CAddOp, t1', PtrType _ _ _) | isIntegralType t1' -> Right t2 (_, ArrayType _ _ _ _, t2')- | isPtrOp op && isIntegralType t2' -> return t1- | otherwise -> fail $ "invalid pointer operation: " ++ render (pretty op)- (CAddOp, t1', ArrayType _ _ _ _) | isIntegralType t1' -> return t2+ | isPtrOp op && isIntegralType t2' -> Right t1+ | otherwise -> Left $ "invalid pointer operation: " ++ render (pretty op)+ (CAddOp, t1', ArrayType _ _ _ _) | isIntegralType t1' -> Right t2 (_, DirectType tn1 q1 a1, DirectType tn2 q2 a2) -> do when (isBitOp op) (checkIntegral t1 >> checkIntegral t2) case arithmeticConversion tn1 tn2 of- Just tn -> return $ DirectType tn (mergeTypeQuals q1 q2) (mergeAttributes a1 a2)- Nothing -> fail $ render $+ Just tn -> Right $ DirectType tn (mergeTypeQuals q1 q2) (mergeAttributes a1 a2)+ Nothing -> Left $ render $ text "invalid binary operation:" <+> pretty t1 <+> pretty op <+> pretty t2- (_, _, _) -> fail $ render $+ (_, _, _) -> Left $ render $ text "unhandled binary operation:" <+> pretty t1 <+> pretty op <+> pretty t2 -- | Determine the type of a conditional expression. conditionalType :: Type -> Type -> Either String Type conditionalType t1 t2 = case (canonicalType t1, canonicalType t2) of- (PtrType (DirectType TyVoid _ _) _ _, t2') | isPointerType t2' -> return t2- (t1', PtrType (DirectType TyVoid _ _) _ _) | isPointerType t1' -> return t1+ (PtrType (DirectType TyVoid _ _) _ _, t2') | isPointerType t2' -> Right t2+ (t1', PtrType (DirectType TyVoid _ _) _ _) | isPointerType t1' -> Right t1 (ArrayType t1' _ q1 a1, ArrayType t2' _ q2 a2) -> do t <- compositeType t1' t2'- return $ ArrayType t (UnknownArraySize False)+ Right $ ArrayType t (UnknownArraySize False) (mergeTypeQuals q1 q2) (mergeAttrs a1 a2) (t1'@(DirectType tn1 q1 a1), t2'@(DirectType tn2 q2 a2)) -> case arithmeticConversion tn1 tn2 of- Just tn -> return $ DirectType tn (mergeTypeQuals q1 q2) (mergeAttributes a1 a2)+ Just tn -> Right $ DirectType tn (mergeTypeQuals q1 q2) (mergeAttributes a1 a2) Nothing -> compositeType t1' t2' (t1', t2') -> compositeType t1' t2' derefType :: Type -> Either String Type-derefType (PtrType t _ _) = return t-derefType (ArrayType t _ _ _) = return t+derefType (PtrType t _ _) = Right t+derefType (ArrayType t _ _ _) = Right t derefType t = -- XXX: is it good to use canonicalType here? case canonicalType t of- PtrType t' _ _ -> return t'- ArrayType t' _ _ _ -> return t'- _ -> fail $ "dereferencing non-pointer: " ++ pType t+ PtrType t' _ _ -> Right t'+ ArrayType t' _ _ _ -> Right t'+ _ -> Left $ "dereferencing non-pointer: " ++ pType t varAddrType :: IdentDecl -> Either String Type varAddrType d = do case declStorage d of- Auto True -> fail "address of register variable"- _ -> return ()+ Auto True -> Left "address of register variable"+ _ -> Right () case t of- ArrayType _ _ q a -> return $ PtrType t q a- _ -> return $ simplePtr t+ ArrayType _ _ q a -> Right $ PtrType t q a+ _ -> Right $ simplePtr t where t = declType d -- | Get the type of field @m@ of type @t@
src/Language/C/Data.hs view
@@ -19,7 +19,8 @@ -- * Unqiue names Name(..),newNameSupply, -- * Source code positions- Position(..),Pos(..),+ Position(..),posFile,posParent,+ Pos(..), initPos, nopos,builtinPos,internalPos, isSourcePos,isBuiltinPos,isInternalPos, -- * Syntax tree nodes
src/Language/C/Data/Error.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE ExistentialQuantification, DeriveDataTypeable #-}+{-# LANGUAGE ExistentialQuantification #-} ----------------------------------------------------------------------------- -- | -- Module : Language.C.Data.Error@@ -28,7 +28,8 @@ internalErr, ) where-import Data.Typeable++import Data.Typeable (Typeable, cast) import Language.C.Data.Node import Language.C.Data.Position @@ -49,7 +50,7 @@ isHardError = ( > LevelWarn) . errorLevel -- | information attached to every error in Language.C-data ErrorInfo = ErrorInfo ErrorLevel Position [String] deriving Typeable+data ErrorInfo = ErrorInfo ErrorLevel Position [String] -- to facilitate newtype deriving instance Show ErrorInfo where show = showErrorInfo "error"@@ -63,8 +64,8 @@ -- | `supertype' of all errors data CError = forall err. (Error err) => CError err- deriving Typeable + -- | errors in Language.C are instance of 'Error' class (Typeable e, Show e) => Error e where -- | obtain source location etc. of an error@@ -72,7 +73,7 @@ -- | wrap error in 'CError' toError :: e -> CError -- | try to cast a generic 'CError' to the specific error type- fromError :: CError -> (Maybe e)+ fromError :: CError -> Maybe e -- | modify the error level changeErrorLevel :: e -> ErrorLevel -> e @@ -105,7 +106,7 @@ errorMsgs = ( \(ErrorInfo _ _ msgs) -> msgs ) . errorInfo -- | error raised if a operation requires an unsupported or not yet implemented feature.-data UnsupportedFeature = UnsupportedFeature String Position deriving Typeable+data UnsupportedFeature = UnsupportedFeature String Position instance Error UnsupportedFeature where errorInfo (UnsupportedFeature msg pos) = ErrorInfo LevelError pos (lines msg) instance Show UnsupportedFeature where show = showError "Unsupported Feature"@@ -118,7 +119,7 @@ -- | unspecified error raised by the user (in case the user does not want to define -- her own error types).-newtype UserError = UserError ErrorInfo deriving Typeable+newtype UserError = UserError ErrorInfo instance Error UserError where errorInfo (UserError info) = info instance Show UserError where show = showError "User Error"@@ -147,7 +148,7 @@ header ++ showMsgLines (if null short_msg then msgs else short_msg:msgs) where header = showPos pos ++ "[" ++ show level ++ "]"- showPos p | isSourcePos p = (posFile p) ++ ":" ++ show (posRow pos) ++ ": " +++ showPos p | isSourcePos p = posFile p ++ ":" ++ show (posRow pos) ++ ": " ++ "(column " ++ show (posColumn pos) ++ ") " | otherwise = show p ++ ":: " showMsgLines [] = internalErr "No short message or error message provided."
src/Language/C/Data/Ident.hs view
@@ -28,15 +28,19 @@ import Language.C.Data.Position import Language.C.Data.Node import Language.C.Data.Name (Name)-import Data.Generics+import Data.Data (Data)+import GHC.Generics (Generic)+import Control.DeepSeq (NFData) -- | References uniquely determining a struct, union or enum type. -- Those are either identified by an string identifier, or by a unique -- name (anonymous types). data SUERef = AnonymousRef Name | NamedRef Ident- deriving (Typeable, Data, Ord, Eq, Show) --, Read+ deriving (Data, Ord, Eq, Show, Generic) --, Read +instance NFData SUERef+ -- | Return true if the struct\/union\/enum reference is anonymous. isAnonymousRef :: SUERef -> Bool isAnonymousRef (AnonymousRef _) = True@@ -46,7 +50,9 @@ data Ident = Ident String -- lexeme {-# UNPACK #-} !Int -- hash to speed up equality check NodeInfo -- attributes of this ident. incl. position- deriving (Data,Typeable,Show) -- Read+ deriving (Data,Show, Generic) -- Read++instance NFData Ident -- the definition of the equality allows identifiers to be equal that are -- defined at different source text positions, and aims at speeding up the
src/Language/C/Data/InputStream.hs view
@@ -71,15 +71,12 @@ takeByte bs = BSW.head bs `seq` (BSW.head bs, BSW.tail bs) takeChar bs = BSC.head bs `seq` (BSC.head bs, BSC.tail bs) inputStreamEmpty = BSW.null-#ifndef __HADDOCK__-takeChars !n bstr = BSC.unpack $ BSC.take n bstr --leaks-#endif+takeChars !n bstr = BSC.unpack $ BSC.take n bstr readInputStream = BSW.readFile inputStreamToString = BSC.unpack inputStreamFromString = BSC.pack countLines = length . BSC.lines- #else
src/Language/C/Data/Name.hs view
@@ -12,11 +12,16 @@ module Language.C.Data.Name ( Name(..),newNameSupply, namesStartingFrom ) where+import Data.Data (Data) import Data.Ix-import Data.Generics+import GHC.Generics (Generic)+import Control.DeepSeq (NFData) -- | Name is a unique identifier-newtype Name = Name { nameId :: Int } deriving (Show, Read, Eq, Ord, Ix, Data, Typeable)+newtype Name = Name { nameId :: Int }+ deriving (Show, Read, Eq, Ord, Ix, Data, Generic)++instance NFData Name instance Enum Name where toEnum = Name
src/Language/C/Data/Node.hs view
@@ -21,12 +21,16 @@ ) where import Language.C.Data.Position import Language.C.Data.Name (Name)-import Data.Generics+import Data.Data (Data)+import GHC.Generics (Generic)+import Control.DeepSeq (NFData) -- | Parsed entity attribute data NodeInfo = OnlyPos Position {-# UNPACK #-} !PosLength -- only pos and last token (for internal stuff only) | NodeInfo Position {-# UNPACK #-} !PosLength !Name -- pos, last token and unique name- deriving (Data,Typeable,Eq,Ord)+ deriving (Data,Eq,Ord, Generic)++instance NFData NodeInfo instance Show NodeInfo where showsPrec d (OnlyPos p l) =
src/Language/C/Data/Position.hs view
@@ -18,41 +18,62 @@ Position(), position, PosLength,- posFile,posRow,posColumn,posOffset,+ posFile,posRow,posColumn,posOffset,posParent, initPos, isSourcePos, nopos, isNoPos, builtinPos, isBuiltinPos, internalPos, isInternalPos,- incPos, retPos, adjustPos,+ incPos, retPos, incOffset, Pos(..), ) where-import Data.Generics+import Data.Data (Data)+import GHC.Generics (Generic)+import Control.DeepSeq (NFData) +-- | file position information+data FilePosition = FilePosition { posSrcFile :: String, -- ^ source file+ posParentFile :: (Maybe Position) -- ^ including file, if any+ }+ deriving (Eq, Ord, Data, Generic)++instance NFData FilePosition+ -- | uniform representation of source file positions data Position = Position { posOffset :: {-# UNPACK #-} !Int -- ^ absolute offset in the preprocessed file- , posFile :: String -- ^ source file , posRow :: {-# UNPACK #-} !Int -- ^ row (line) in the original file. Affected by #LINE pragmas. , posColumn :: {-# UNPACK #-} !Int -- ^ column in the preprocessed file. Inaccurate w.r.t. to the original -- file in the presence of preprocessor macros.+ , posFileInfo :: FilePosition -- ^ position in source file, including files } | NoPosition | BuiltinPosition | InternalPosition- deriving (Eq, Ord, Typeable, Data)+ deriving (Eq, Ord, Data, Generic) +instance NFData Position++posFile :: Position -> String+posFile = posSrcFile . posFileInfo++posParent :: Position -> (Maybe Position)+posParent = posParentFile . posFileInfo+ -- | Position and length of a token type PosLength = (Position,Int) instance Show Position where- show (Position _ fname row _) = "(" ++ show fname ++ ": line " ++ show row ++ ")"- show NoPosition = "<no file>"- show BuiltinPosition = "<builtin>"- show InternalPosition = "<internal>"+ showsPrec _ (Position _ row _ (FilePosition fname mparent)) =+ showString "(" . showsPrec 0 fname . showString ": line " . showsPrec 0 row .+ maybe id (\p -> showString ", in file included from " . showsPrec 0 p) mparent .+ showString ")"+ showsPrec _ NoPosition = showString "<no file>"+ showsPrec _ BuiltinPosition = showString "<builtin>"+ showsPrec _ InternalPosition = showString "<internal>" -- | @position absoluteOffset fileName lineNumber columnNumber@ initializes a @Position@ using the given arguments-position :: Int -> String -> Int -> Int -> Position-position = Position+position :: Int -> String -> Int -> Int -> Maybe Position -> Position+position offset fname row col mparent = Position offset row col (FilePosition fname mparent) -- | class of type which aggregate a source code location class Pos a where@@ -60,7 +81,7 @@ -- | initialize a Position to the start of the translation unit starting in the given file initPos :: FilePath -> Position-initPos file = Position 0 file 1 1+initPos file = Position 0 1 1 (FilePosition file Nothing) -- | returns @True@ if the given position refers to an actual source file isSourcePos :: Position -> Bool@@ -98,25 +119,17 @@ {-# INLINE incPos #-} -- | advance column incPos :: Position -> Int -> Position-incPos (Position offs fname row col) n = Position (offs + n) fname row (col + n)+incPos (Position offs row col fpos) n = Position (offs + n) row (col + n) fpos incPos p _ = p {-# INLINE retPos #-} -- | advance to next line retPos :: Position -> Position-retPos (Position offs fname row _) = Position (offs+1) fname (row + 1) 1+retPos (Position offs row _ fpos) = Position (offs+1) (row + 1) 1 fpos retPos p = p -{-# INLINE adjustPos #-}--- | adjust position: change file and line number, reseting column to 1. This is usually--- used for #LINE pragmas. The absolute offset is not changed - this can be done--- by @adjustPos newFile line . incPos (length pragma)@.-adjustPos :: FilePath -> Int -> Position -> Position-adjustPos fname row (Position offs _ _ _) = Position offs fname row 1-adjustPos _ _ p = p- {-# INLINE incOffset #-} -- | advance just the offset incOffset :: Position -> Int -> Position-incOffset (Position o f r c) n = Position (o + n) f r c-incOffset p _ = p+incOffset (Position o r c f) n = Position (o + n) r c f+incOffset pos _ = pos
src/Language/C/Parser/Builtin.hs view
@@ -18,4 +18,6 @@ -- predefined type names -- builtinTypeNames :: [Ident]-builtinTypeNames = [builtinIdent "__builtin_va_list"]+builtinTypeNames = [+ builtinIdent "__builtin_va_list"+ ]
src/Language/C/Parser/Lexer.x view
@@ -51,6 +51,7 @@ module Language.C.Parser.Lexer (lexC, parseError) where import Data.Char (chr, isDigit)+import Data.List (uncons) import Data.Word (Word8) import Control.Monad (liftM, when) @@ -119,7 +120,9 @@ @hexmant = @hexdigits?\.@hexdigits|@hexdigits\. @binexp = [pP][\+\-]?@digits -@floatsuffix = [fFlL]+-- Suffixes `qQwW` are GNU floating type extensions: <https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html>+@iec60559suffix = (16|32|64|128)[x]?+@floatsuffix = [fFlLqQwW]@iec60559suffix? @floatgnusuffix = @floatsuffix@gnusuffix?|@gnusuffix@floatsuffix? -- clang version literals with a major.minor.rev@@ -136,12 +139,16 @@ -- $white+ ; --- #line directive (K&R A12.6)+-- #line directive (C11 6.10.4, GCC Line Control) ----- * allows further ints after the file name a la GCC; as the GCC CPP docu--- doesn't say how many ints there can be, we allow an unbound number+-- * standard form: int => change line number+-- * standard form: int string => change source file and line number+-- * preprocessor (gcc/clang): int string int => change source file and line number,+-- push or pop item from stack ---\#$space*@int$space*(\"($infname|@charesc)*\"$space*)?(@int$space*)*\r?$eol+-- * see https://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html+--+\#$space*@digits$space*(\"($infname|@charesc)*\"$space*)?(@int$space*)*\r?$eol { \pos len str -> setPos (adjustLineDirective len (takeChars len str) pos) >> lexToken' False } -- #pragma directive (K&R A12.8)@@ -179,10 +186,10 @@ -- character constants (follows K&R A2.5.2, C99 6.4.4.4) -- -- * Universal Character Names are unsupported and cause an error.-\'($inchar|@charesc)\' { token CTokCLit (cChar . fst . unescapeChar . tail) }-L\'($inchar|@charesc)\' { token CTokCLit (cChar_w . fst . unescapeChar . tail . tail) }-\'($inchar|@charesc){2,}\' { token CTokCLit (flip cChars False . unescapeMultiChars .tail) }-L\'($inchar|@charesc){2,}\' { token CTokCLit (flip cChars True . unescapeMultiChars . tail . tail) }+\'($inchar|@charesc)\' { token CTokCLit (cChar . fst . unescapeChar . drop 1) }+L\'($inchar|@charesc)\' { token CTokCLit (cChar_w . fst . unescapeChar . drop 2) }+\'($inchar|@charesc){2,}\' { token CTokCLit (flip cChars False . unescapeMultiChars . drop 1) }+L\'($inchar|@charesc){2,}\' { token CTokCLit (flip cChars True . unescapeMultiChars . drop 2) } -- Clang version literals @clangversion { token (\pos -> CTokClangC pos . ClangCVersionTok) readClangCVersion }@@ -197,8 +204,8 @@ -- string literal (follows K&R A2.6) -- C99: 6.4.5.-\"($instr|@charesc)*\" { token CTokSLit (cString . unescapeString . init . tail) }-L\"($instr|@charesc)*\" { token CTokSLit (cString_w . unescapeString . init . tail . tail) }+\"($instr|@charesc)*\" { token CTokSLit (cString . unescapeString . init . drop 1) }+L\"($instr|@charesc)*\" { token CTokSLit (cString_w . unescapeString . init . drop 2) } L?\'@ucn\' { token_fail "Universal character names are unsupported" } L?\'\\[^0-7'\"\?\\abfnrtvuUx]\' { token_fail "Invalid escape sequence" }@@ -263,6 +270,7 @@ _ -> readCInteger DecRepr s readCOctal _ = error "ReadOctal: string does not start with `0'" + -- We use the odd looking list of string patterns here rather than normal -- string literals since GHC converts the latter into a sequence of string -- comparisons (ie a linear search) but it translates the former using its@@ -272,23 +280,47 @@ -- To make this a little more maintainable, we autogenerate it from this list, -- using the script GenerateKeywords.hs (in /scripts) {--alignas _Alignas, alignof _Alignof __alignof alignof __alignof__, asm @__, atomic _Atomic, auto-break, bool _Bool,-case, char, const @__, continue, complex _Complex __complex__+alignas _Alignas,+alignof _Alignof __alignof alignof __alignof__,+asm @__,+atomic _Atomic,+auto, break, bool _Bool bool,+case, char, const @__, continue,+complex _Complex __complex__ default, do, double, else, enum, extern,-float, for, goto,-if, inline @__, int, __int128, long, noreturn _Noreturn, float, for,-generic _Generic, goto,-if, inline @__, int, int128 __int128, long,-noreturn _Noreturn, _Nullable __nullable, _Nonnull __nonnull,+generic _Generic,+goto,+if, inline @__, int,+int128 __int128 __int128_t,+long,+noreturn _Noreturn,+nullable _Nullable __nullable,+nonnull _Nonnull __nonnull, register, restrict @__, return-short, signed @__, sizeof, static, staticAssert _Static_assert, struct, switch,-typedef, typeof @__, thread __thread _Thread_local-union, unsigned, void, volatile @__,+short, signed @__, sizeof, static,+staticAssert _Static_assert,+struct, switch,+typedef, typeof @__,+thread __thread _Thread_local+(CTokUInt128) __uint128 __uint128_t,+union,+unsigned,+void,+volatile @__, while, label __label__+BFloat16 __bf16+(CTokFloatN 16 False) __fp16+(CTokFloatN 16 False) _Float16+(CTokFloatN 16 True) _Float16x+(CTokFloatN 32 False) _Float32+(CTokFloatN 32 True) _Float32x+(CTokFloatN 64 False) _Float64+(CTokFloatN 64 True) _Float64x+(CTokFloatN 128 False) _Float128 __float128+(CTokFloatN 128 True) _Float128x (CTokGnuC GnuCAttrTok) __attribute __attribute__ (CTokGnuC GnuCExtTok) __extension__ (CTokGnuC GnuCComplexReal) __real __real__@@ -296,15 +328,28 @@ (CTokGnuC GnuCVaArg) __builtin_va_arg (CTokGnuC GnuCOffsetof) __builtin_offsetof (CTokGnuC GnuCTyCompat) __builtin_types_compatible_p+(CTokGnuC GnuBitCast) __builtin_bit_cast+(flip CTokClangC ClangBuiltinConvertVector) __builtin_convertvector -}--- Tokens: _Alignas _Alignof __alignof alignof __alignof__ __asm asm __asm__ _Atomic auto break _Bool case char __const const __const__ continue _Complex __complex__ default do double else enum extern float for _Generic goto if __inline inline __inline__ int __int128 long _Noreturn _Nullable __nullable _Nonnull __nonnull register __restrict restrict __restrict__ return short __signed signed __signed__ sizeof static _Static_assert struct switch typedef __typeof typeof __typeof__ __thread _Thread_local union unsigned void __volatile volatile __volatile__ while __label__ __attribute __attribute__ __extension__ __real __real__ __imag __imag__ __builtin_va_arg __builtin_offsetof __builtin_types_compatible_p++-- Tokens: _Alignas _Alignof __alignof alignof __alignof__ __asm asm __asm__ _Atomic auto break _Bool bool case char __const const __const__ continue _Complex __complex__ default do double else enum extern float for _Generic goto if __inline inline __inline__ int __int128 __int128_t long _Noreturn _Nullable __nullable _Nonnull __nonnull register __restrict restrict __restrict__ return short __signed signed __signed__ sizeof static _Static_assert struct switch typedef __typeof typeof __typeof__ __thread _Thread_local __uint128 __uint128_t union unsigned void __volatile volatile __volatile__ while __label__ __bf16 __fp16 _Float16 _Float16x _Float32 _Float32x _Float64 _Float64x _Float128 __float128 _Float128x __attribute __attribute__ __extension__ __real __real__ __imag __imag__ __builtin_va_arg __builtin_offsetof __builtin_types_compatible_p __builtin_bit_cast __builtin_convertvector idkwtok ('_' : 'A' : 'l' : 'i' : 'g' : 'n' : 'a' : 's' : []) = tok 8 CTokAlignas idkwtok ('_' : 'A' : 'l' : 'i' : 'g' : 'n' : 'o' : 'f' : []) = tok 8 CTokAlignof idkwtok ('_' : 'A' : 't' : 'o' : 'm' : 'i' : 'c' : []) = tok 7 CTokAtomic idkwtok ('_' : 'B' : 'o' : 'o' : 'l' : []) = tok 5 CTokBool idkwtok ('_' : 'C' : 'o' : 'm' : 'p' : 'l' : 'e' : 'x' : []) = tok 8 CTokComplex-idkwtok ('_' : 'N' : 'o' : 'n' : 'n' : 'u' : 'l' : 'l' : []) = tok 8 CTokNonnull+#ifdef IEC_60559_TYPES_EXT+idkwtok ('_' : 'F' : 'l' : 'o' : 'a' : 't' : '1' : '2' : '8' : []) = tok 9 (CTokFloatN 128 False)+idkwtok ('_' : 'F' : 'l' : 'o' : 'a' : 't' : '1' : '2' : '8' : 'x' : []) = tok 10 (CTokFloatN 128 True)+idkwtok ('_' : 'F' : 'l' : 'o' : 'a' : 't' : '1' : '6' : []) = tok 8 (CTokFloatN 16 False)+idkwtok ('_' : 'F' : 'l' : 'o' : 'a' : 't' : '1' : '6' : 'x' : []) = tok 9 (CTokFloatN 16 True)+idkwtok ('_' : 'F' : 'l' : 'o' : 'a' : 't' : '3' : '2' : []) = tok 8 (CTokFloatN 32 False)+idkwtok ('_' : 'F' : 'l' : 'o' : 'a' : 't' : '3' : '2' : 'x' : []) = tok 9 (CTokFloatN 32 True)+idkwtok ('_' : 'F' : 'l' : 'o' : 'a' : 't' : '6' : '4' : []) = tok 8 (CTokFloatN 64 False)+idkwtok ('_' : 'F' : 'l' : 'o' : 'a' : 't' : '6' : '4' : 'x' : []) = tok 9 (CTokFloatN 64 True)+#endif idkwtok ('_' : 'G' : 'e' : 'n' : 'e' : 'r' : 'i' : 'c' : []) = tok 8 CTokGeneric+idkwtok ('_' : 'N' : 'o' : 'n' : 'n' : 'u' : 'l' : 'l' : []) = tok 8 CTokNonnull idkwtok ('_' : 'N' : 'o' : 'r' : 'e' : 't' : 'u' : 'r' : 'n' : []) = tok 9 CTokNoreturn idkwtok ('_' : 'N' : 'u' : 'l' : 'l' : 'a' : 'b' : 'l' : 'e' : []) = tok 9 CTokNullable idkwtok ('_' : 'S' : 't' : 'a' : 't' : 'i' : 'c' : '_' : 'a' : 's' : 's' : 'e' : 'r' : 't' : []) = tok 14 CTokStaticAssert@@ -318,7 +363,11 @@ idkwtok ('_' : '_' : 'a' : 't' : 't' : 'r' : 'i' : 'b' : 'u' : 't' : 'e' : []) = tok 11 (CTokGnuC GnuCAttrTok) idkwtok ('_' : '_' : 'a' : 't' : 't' : 'r' : 'i' : 'b' : 'u' : 't' : 'e' : '_' : '_' : []) = tok 13 (CTokGnuC GnuCAttrTok) idkwtok ('a' : 'u' : 't' : 'o' : []) = tok 4 CTokAuto+idkwtok ('_' : '_' : 'b' : 'f' : '1' : '6' : []) = tok 6 CTokBFloat16+idkwtok ('b' : 'o' : 'o' : 'l' : []) = tok 4 CTokBool idkwtok ('b' : 'r' : 'e' : 'a' : 'k' : []) = tok 5 CTokBreak+idkwtok ('_' : '_' : 'b' : 'u' : 'i' : 'l' : 't' : 'i' : 'n' : '_' : 'b' : 'i' : 't' : '_' : 'c' : 'a' : 's' : 't' : []) = tok 18 (flip CTokClangC ClangCBitCast)+idkwtok ('_' : '_' : 'b' : 'u' : 'i' : 'l' : 't' : 'i' : 'n' : '_' : 'c' : 'o' : 'n' : 'v' : 'e' : 'r' : 't' : 'v' : 'e' : 'c' : 't' : 'o' : 'r' : []) = tok 23 (flip CTokClangC ClangBuiltinConvertVector) idkwtok ('_' : '_' : 'b' : 'u' : 'i' : 'l' : 't' : 'i' : 'n' : '_' : 'o' : 'f' : 'f' : 's' : 'e' : 't' : 'o' : 'f' : []) = tok 18 (CTokGnuC GnuCOffsetof) idkwtok ('_' : '_' : 'b' : 'u' : 'i' : 'l' : 't' : 'i' : 'n' : '_' : 't' : 'y' : 'p' : 'e' : 's' : '_' : 'c' : 'o' : 'm' : 'p' : 'a' : 't' : 'i' : 'b' : 'l' : 'e' : '_' : 'p' : []) = tok 28 (CTokGnuC GnuCTyCompat) idkwtok ('_' : '_' : 'b' : 'u' : 'i' : 'l' : 't' : 'i' : 'n' : '_' : 'v' : 'a' : '_' : 'a' : 'r' : 'g' : []) = tok 16 (CTokGnuC GnuCVaArg)@@ -337,7 +386,9 @@ idkwtok ('_' : '_' : 'e' : 'x' : 't' : 'e' : 'n' : 's' : 'i' : 'o' : 'n' : '_' : '_' : []) = tok 13 (CTokGnuC GnuCExtTok) idkwtok ('e' : 'x' : 't' : 'e' : 'r' : 'n' : []) = tok 6 CTokExtern idkwtok ('f' : 'l' : 'o' : 'a' : 't' : []) = tok 5 CTokFloat+idkwtok ('_' : '_' : 'f' : 'l' : 'o' : 'a' : 't' : '1' : '2' : '8' : []) = tok 10 (CTokFloatN 128 False) idkwtok ('f' : 'o' : 'r' : []) = tok 3 CTokFor+idkwtok ('_' : '_' : 'f' : 'p' : '1' : '6' : []) = tok 6 (CTokFloatN 16 False) idkwtok ('g' : 'o' : 't' : 'o' : []) = tok 4 CTokGoto idkwtok ('i' : 'f' : []) = tok 2 CTokIf idkwtok ('_' : '_' : 'i' : 'm' : 'a' : 'g' : []) = tok 6 (CTokGnuC GnuCComplexImag)@@ -347,6 +398,7 @@ idkwtok ('_' : '_' : 'i' : 'n' : 'l' : 'i' : 'n' : 'e' : '_' : '_' : []) = tok 10 CTokInline idkwtok ('i' : 'n' : 't' : []) = tok 3 CTokInt idkwtok ('_' : '_' : 'i' : 'n' : 't' : '1' : '2' : '8' : []) = tok 8 CTokInt128+idkwtok ('_' : '_' : 'i' : 'n' : 't' : '1' : '2' : '8' : '_' : 't' : []) = tok 10 CTokInt128 idkwtok ('_' : '_' : 'l' : 'a' : 'b' : 'e' : 'l' : '_' : '_' : []) = tok 9 CTokLabel idkwtok ('l' : 'o' : 'n' : 'g' : []) = tok 4 CTokLong idkwtok ('_' : '_' : 'n' : 'o' : 'n' : 'n' : 'u' : 'l' : 'l' : []) = tok 9 CTokNonnull@@ -371,6 +423,8 @@ idkwtok ('_' : '_' : 't' : 'y' : 'p' : 'e' : 'o' : 'f' : []) = tok 8 CTokTypeof idkwtok ('t' : 'y' : 'p' : 'e' : 'o' : 'f' : []) = tok 6 CTokTypeof idkwtok ('_' : '_' : 't' : 'y' : 'p' : 'e' : 'o' : 'f' : '_' : '_' : []) = tok 10 CTokTypeof+idkwtok ('_' : '_' : 'u' : 'i' : 'n' : 't' : '1' : '2' : '8' : []) = tok 9 (CTokUInt128)+idkwtok ('_' : '_' : 'u' : 'i' : 'n' : 't' : '1' : '2' : '8' : '_' : 't' : []) = tok 11 (CTokUInt128) idkwtok ('u' : 'n' : 'i' : 'o' : 'n' : []) = tok 5 CTokUnion idkwtok ('u' : 'n' : 's' : 'i' : 'g' : 'n' : 'e' : 'd' : []) = tok 8 CTokUnsigned idkwtok ('v' : 'o' : 'i' : 'd' : []) = tok 4 CTokVoid@@ -379,6 +433,13 @@ idkwtok ('_' : '_' : 'v' : 'o' : 'l' : 'a' : 't' : 'i' : 'l' : 'e' : '_' : '_' : []) = tok 12 CTokVolatile idkwtok ('w' : 'h' : 'i' : 'l' : 'e' : []) = tok 5 CTokWhile +-- For OpenCL tokens+idkwtok ('_' : '_' : 'k' : 'e' : 'r' : 'n' : 'e' : 'l' : []) = tok 8 CTokClKernel+idkwtok ('_' : '_' : 'r' : 'e' : 'a' : 'd' : '_' : 'o' : 'n' : 'l' : 'y' : []) = tok 11 CTokClRdOnly+idkwtok ('_' : '_' : 'w' : 'r' : 'i' : 't' : 'e' : '_' : 'o' : 'n' : 'l' : 'y' : []) = tok 12 CTokClWrOnly+idkwtok ('_' : '_' : 'g' : 'l' : 'o' : 'b' : 'a' : 'l' : []) = tok 8 CTokClGlobal+idkwtok ('_' : '_' : 'l' : 'o' : 'c' : 'a' : 'l' : []) = tok 7 CTokClLocal+ idkwtok cs = \pos -> do name <- getNewName let len = case length cs of l -> l@@ -404,19 +465,38 @@ adjustLineDirective :: Int -> String -> Position -> Position adjustLineDirective pragmaLen str pos =- offs' `seq` fname' `seq` row' `seq` (position offs' fname' row' 1)+ offs' `seq` fname' `seq` row' `seq` parent' `seq` (position offs' fname' row' 1 parent') where+ -- offset changes by length of #line pragma offs' = (posOffset pos) + pragmaLen str' = dropWhite . drop 1 $ str (rowStr, str'') = span isDigit str'+ -- row changes to the first number in the line pragma row' = read rowStr str''' = dropWhite str''- fnameStr = takeWhile (/= '"') . drop 1 $ str'''+ (fnameStr,str'''') = span (/= '"') . drop 1 $ str''' fname = posFile pos- fname' | null str''' || head str''' /= '"' = fname- -- try and get more sharing of file name strings- | fnameStr == fname = fname- | otherwise = fnameStr+ no_fn = null str''' || (fmap fst (uncons str''') /= Just '"') || (fmap fst (uncons str'''') /= Just '"')+ -- filename changes to new filename, if specified+ fname' | no_fn = fname+ -- try and get more sharing of file name strings+ | fnameStr == fname = fname+ | otherwise = fnameStr+ -- analye flags+ min_flag = find_min_flag (5 :: Int) (drop 1 str'''')+ find_min_flag cur_min = select_min . span isDigit . dropWhile (not . isDigit)+ where+ select_min (numStr, fstr') | null numStr = cur_min+ | otherwise = find_min_flag (read numStr `min` cur_min) fstr'+ parent = posParent pos+ parent' = case min_flag of+ 1 -> Just pos -- push+ 2 -> case parent >>= posParent of+ Nothing -> Nothing -- pop/underflow+ Just gp -> gp `seq` Just gp -- pop+ 3 -> parent -- unchanged stack, system header info+ 4 -> parent -- unchanged stack, extern C info+ _ -> Nothing -- dropWhite = dropWhile (\c -> c == ' ' || c == '\t')
src/Language/C/Parser/Parser.y view
@@ -29,6 +29,8 @@ -- <http://www.sivity.net/projects/language.c/wiki/Cee> ------------------------------------------------------------------ {+{-# LANGUAGE LambdaCase #-}+ module Language.C.Parser.Parser ( -- * Parse a C translation unit parseC,@@ -103,16 +105,18 @@ -- !* see `We're being far to liberal here' (... struct definition within structs) -- * Documentation isn't complete and consistent yet. -import Prelude hiding (reverse)+import Prelude import qualified Data.List as List import Control.Monad (mplus)+import Data.Maybe (listToMaybe, mapMaybe) import Language.C.Parser.Builtin (builtinTypeNames) import Language.C.Parser.Lexer (lexC, parseError) import Language.C.Parser.Tokens (CToken(..), GnuCTok(..), ClangCTok (..), posLenOfTok) import Language.C.Parser.ParserMonad (P, failP, execParser, getNewName, addTypedef, shadowTypedef, getCurrentPosition, enterScope, leaveScope, getLastToken, getSavedToken, ParseError(..)) -import Language.C.Data.RList+import Language.C.Data.RList (Reversed(..))+import qualified Language.C.Data.RList as RList import Language.C.Data.InputStream import Language.C.Data.Ident import Language.C.Data.Name@@ -201,6 +205,17 @@ enum { CTokEnum _ } extern { CTokExtern _ } float { CTokFloat _ }+"__bf16" { CTokBFloat16 _ }+"__fp16" { CTokFloatN 16 False _ }+"_Float16" { CTokFloatN 16 False _ }+"_Float16x" { CTokFloatN 16 True _ }+"_Float32" { CTokFloatN 32 False _ }+"_Float32x" { CTokFloatN 32 True _ }+"_Float64" { CTokFloatN 64 False _ }+"_Float64x" { CTokFloatN 64 True _ }+"_Float128" { CTokFloatN 128 False _ }+"_Float128x" { CTokFloatN 128 True _ }+"__float128" { CTokFloatN 128 False _ } for { CTokFor _ } "_Generic" { CTokGeneric _ } goto { CTokGoto _ }@@ -208,6 +223,7 @@ inline { CTokInline _ } int { CTokInt _ } "__int128" { CTokInt128 _ }+"__int128_t" { CTokInt128 _ } long { CTokLong _ } "__label__" { CTokLabel _ } "_Noreturn" { CTokNoreturn _ }@@ -227,6 +243,8 @@ typeof { CTokTypeof _ } "__thread" { CTokThread _ } union { CTokUnion _ }+"__uint128" { CTokUInt128 _ }+"__uint128_t" { CTokUInt128 _ } unsigned { CTokUnsigned _ } void { CTokVoid _ } volatile { CTokVolatile _ }@@ -245,7 +263,14 @@ "__builtin_va_arg" { CTokGnuC GnuCVaArg _ } "__builtin_offsetof" { CTokGnuC GnuCOffsetof _ } "__builtin_types_compatible_p" { CTokGnuC GnuCTyCompat _ }+"__builtin_convertvector" { CTokClangC _ ClangBuiltinConvertVector } clangcversion { CTokClangC _ (ClangCVersionTok $$) } -- Clang version literal+"__builtin_bit_cast" { CTokClangC _ ClangCBitCast }+"__kernel" { CTokClKernel _ } -- OpenCL kernel function+"__read_only" { CTokClRdOnly _ } -- OpenCL read only qualifier+"__write_only" { CTokClWrOnly _ } -- OpenCL write only qualifier+"__global" { CTokClGlobal _ } -- OpenCL global variable+"__local" { CTokClLocal _ } -- OpenCL local variable %% @@ -254,7 +279,7 @@ -- we have to take special care of empty translation units translation_unit :: { CTranslUnit } translation_unit- : ext_decl_list {% let decls = reverse $1 in+ : ext_decl_list {% let decls = RList.reverse $1 in case decls of [] -> do{ n <- getNewName; p <- getCurrentPosition; return $ CTranslUnit decls (mkNodeInfo' p (p,0) n) } (d:ds) -> withNodeInfo d $ CTranslUnit decls }@@ -267,9 +292,9 @@ -- allow redundant ';' ext_decl_list :: { Reversed [CExtDecl] } ext_decl_list- : {- empty -} { empty }+ : {- empty -} { RList.empty } | ext_decl_list ';' { $1 }- | ext_decl_list external_declaration { $1 `snoc` $2 }+ | ext_decl_list external_declaration { $1 `RList.snoc` $2 } -- parse external C declaration (C99 6.9)@@ -316,7 +341,7 @@ {% leaveScope >> (withNodeInfo $1 $ CFunDef $1 $2 [] $3) } | declaration_qualifier_list function_declarator compound_statement- {% leaveScope >> (withNodeInfo $1 $ CFunDef (reverse $1) $2 [] $3) }+ {% leaveScope >> (withNodeInfo $1 $ CFunDef (RList.reverse $1) $2 [] $3) } | type_qualifier_list function_declarator compound_statement {% leaveScope >> (withNodeInfo $1 $ CFunDef (liftTypeQuals $1) $2 [] $3) }@@ -327,25 +352,25 @@ -- old function declarators | function_declarator_old declaration_list compound_statement- {% withNodeInfo $1 $ CFunDef [] $1 (reverse $2) $3 }+ {% withNodeInfo $1 $ CFunDef [] $1 (RList.reverse $2) $3 } | attrs function_declarator_old declaration_list compound_statement- {% withNodeInfo $2 $ CFunDef (liftCAttrs $1) $2 (reverse $3) $4 }+ {% withNodeInfo $2 $ CFunDef (liftCAttrs $1) $2 (RList.reverse $3) $4 } | declaration_specifier function_declarator_old declaration_list compound_statement- {% withNodeInfo $1 $ CFunDef $1 $2 (reverse $3) $4 }+ {% withNodeInfo $1 $ CFunDef $1 $2 (RList.reverse $3) $4 } | type_specifier function_declarator_old declaration_list compound_statement- {% withNodeInfo $1 $ CFunDef $1 $2 (reverse $3) $4 }+ {% withNodeInfo $1 $ CFunDef $1 $2 (RList.reverse $3) $4 } | declaration_qualifier_list function_declarator_old declaration_list compound_statement- {% withNodeInfo $1 $ CFunDef (reverse $1) $2 (reverse $3) $4 }+ {% withNodeInfo $1 $ CFunDef (RList.reverse $1) $2 (RList.reverse $3) $4 } | type_qualifier_list function_declarator_old declaration_list compound_statement- {% withNodeInfo $1 $ CFunDef (liftTypeQuals $1) $2 (reverse $3) $4 }+ {% withNodeInfo $1 $ CFunDef (liftTypeQuals $1) $2 (RList.reverse $3) $4 } | type_qualifier_list attrs function_declarator_old declaration_list compound_statement- {% withNodeInfo $1 $ CFunDef (liftTypeQuals $1 ++ liftCAttrs $2) $3 (reverse $4) $5 }+ {% withNodeInfo $1 $ CFunDef (liftTypeQuals $1 ++ liftCAttrs $2) $3 (RList.reverse $4) $5 } -- Read declarator and put function function_declarator :: { CDeclr }@@ -390,10 +415,10 @@ compound_statement :: { CStat } compound_statement : '{' enter_scope block_item_list leave_scope '}'- {% withNodeInfo $1 $ CCompound [] (reverse $3) }+ {% withNodeInfo $1 $ CCompound [] (RList.reverse $3) } | '{' enter_scope label_declarations block_item_list leave_scope '}'- {% withNodeInfo $1 $ CCompound (reverse $3) (reverse $4) }+ {% withNodeInfo $1 $ CCompound (RList.reverse $3) (RList.reverse $4) } -- No syntax for these, just side effecting semantic actions.@@ -406,8 +431,8 @@ block_item_list :: { Reversed [CBlockItem] } block_item_list- : {- empty -} { empty }- | block_item_list block_item { $1 `snoc` $2 }+ : {- empty -} { RList.empty }+ | block_item_list block_item { $1 `RList.snoc` $2 } block_item :: { CBlockItem } block_item@@ -429,7 +454,7 @@ {% leaveScope >> (withNodeInfo $1 $ CFunDef $1 $2 [] $3) } | declaration_qualifier_list function_declarator compound_statement- {% leaveScope >> (withNodeInfo $1 $ CFunDef (reverse $1) $2 [] $3) }+ {% leaveScope >> (withNodeInfo $1 $ CFunDef (RList.reverse $1) $2 [] $3) } | type_qualifier_list function_declarator compound_statement {% leaveScope >> (withNodeInfo $1 $ CFunDef (liftTypeQuals $1) $2 [] $3) }@@ -441,7 +466,7 @@ label_declarations :: { Reversed [Ident] } label_declarations : "__label__" identifier_list ';' { $2 }- | label_declarations "__label__" identifier_list ';' { $1 `rappendr` $3 }+ | label_declarations "__label__" identifier_list ';' { $1 `RList.rappendr` $3 } -- parse C expression statement (C99 6.8.3)@@ -514,7 +539,7 @@ {% withNodeInfo $1 $ CAsmStmt $2 $4 $6 $8 [] } | asm maybe_type_qualifier '(' string_literal ':' asm_operands ':' asm_operands ':' asm_clobbers ')' ';'- {% withNodeInfo $1 $ CAsmStmt $2 $4 $6 $8 (reverse $10) }+ {% withNodeInfo $1 $ CAsmStmt $2 $4 $6 $8 $10 } maybe_type_qualifier :: { Maybe CTypeQual }@@ -525,12 +550,12 @@ asm_operands :: { [CAsmOperand] } asm_operands : {- empty -} { [] }- | nonnull_asm_operands { reverse $1 }+ | nonnull_asm_operands { RList.reverse $1 } nonnull_asm_operands :: { Reversed [CAsmOperand] } nonnull_asm_operands- : asm_operand { singleton $1 }- | nonnull_asm_operands ',' asm_operand { $1 `snoc` $3 }+ : asm_operand { RList.singleton $1 }+ | nonnull_asm_operands ',' asm_operand { $1 `RList.snoc` $3 } asm_operand :: { CAsmOperand } asm_operand@@ -538,12 +563,16 @@ | '[' ident ']' string_literal '(' expression ')' {% withNodeInfo $1 $ CAsmOperand (Just $2) $4 $6 } | '[' tyident ']' string_literal '(' expression ')' {% withNodeInfo $1 $ CAsmOperand (Just $2) $4 $6 } --asm_clobbers :: { Reversed [CStrLit] }+asm_clobbers :: { [CStrLit] } asm_clobbers- : string_literal { singleton $1 }- | asm_clobbers ',' string_literal { $1 `snoc` $3 }+ : {- empty -} { [] }+ | nonnull_asm_clobbers { RList.reverse $1 } +nonnull_asm_clobbers :: { Reversed [CStrLit] }+nonnull_asm_clobbers+ : string_literal { RList.singleton $1 }+ | nonnull_asm_clobbers ',' string_literal { $1 `RList.snoc` $3 }+ {- --------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------@@ -558,11 +587,11 @@ -- storage class and type qualifier --------------------------------------------------------------------------------------------------------------- attr :- __attribute__((..))-storage_class :- typedef | extern | static | auto | register | _Thread_local+storage_class :- typedef | extern | static | auto | register | _Thread_local | __kernel | __global | __local function_specifier :- inline | _Noreturn alignment_specifier :- _Alignas (type_name) | _Alignas (constant_expr) -type_qualifier :- const | volatile | restrict | _Atomic | _Nullable | _Nonnull+type_qualifier :- const | volatile | restrict | _Atomic | _Nullable | _Nonnull | __read_only | __write_only type_qualifier_list :- type_qualifier+ declaration_qualifier :- storage_class | type_qualifier | function_specifier | alginment_specifier@@ -658,10 +687,10 @@ declaration :: { CDecl } declaration : sue_declaration_specifier ';'- {% withNodeInfo $1 $ CDecl (reverse $1) [] }+ {% withNodeInfo $1 $ CDecl (RList.reverse $1) [] } | sue_type_specifier ';'- {% withNodeInfo $1 $ CDecl (reverse $1) [] }+ {% withNodeInfo $1 $ CDecl (RList.reverse $1) [] } | declaring_list ';' {% case $1 of CDecl declspecs dies at -> withLength at (CDecl declspecs (List.reverse dies)) }@@ -673,8 +702,8 @@ declaration_list :: { Reversed [CDecl] } declaration_list- : {- empty -} { empty }- | declaration_list declaration { $1 `snoc` $2 }+ : {- empty -} { RList.empty }+ | declaration_list declaration { $1 `RList.snoc` $2 } -- * SUMMARY: default_declaring_list :- qualifier* identifier_declarator asm_attrs initializer?@@ -688,7 +717,7 @@ default_declaring_list :: { CDecl } default_declaring_list : declaration_qualifier_list identifier_declarator asm_attrs_opt {-{}-} initializer_opt- {% let declspecs = reverse $1 in+ {% let declspecs = RList.reverse $1 in do{ declr <- withAsmNameAttrs $3 $2 ; doDeclIdent declspecs declr ; withNodeInfo $1 $@@ -764,15 +793,15 @@ -- declaration_specifier :: { [CDeclSpec] } declaration_specifier- : basic_declaration_specifier { reverse $1 } -- Arithmetic or void- | sue_declaration_specifier { reverse $1 } -- Struct/Union/Enum- | typedef_declaration_specifier { reverse $1 } -- Typedef+ : basic_declaration_specifier { RList.reverse $1 } -- Arithmetic or void+ | sue_declaration_specifier { RList.reverse $1 } -- Struct/Union/Enum+ | typedef_declaration_specifier { RList.reverse $1 } -- Typedef --- A mixture of type qualifiers (const, volatile, restrict, _Atomic, _Nonnull, _Nullable),+-- A mixture of type qualifiers (const, volatile, restrict, _Atomic, _Nonnull, _Nullable, __read_only, __write_only), -- function specifiers (inline, _Noreturn), -- alignment specifiers (_Alignas) and--- storage class specifiers (extern, static, auto, register, _Thread_local),+-- storage class specifiers (extern, static, auto, register, _Thread_local, __kernel, __global, __local), -- in any order, but containing at least one storage class specifier. -- -- declaration_qualifier_list :- <permute> type_qualifier* alignment_specifier* function_specifier* storage_class+@@ -783,19 +812,19 @@ declaration_qualifier_list :: { Reversed [CDeclSpec] } declaration_qualifier_list : declaration_qualifier_without_types- { singleton $1 }+ { RList.singleton $1 } | attrs declaration_qualifier_without_types- { reverseList (liftCAttrs $1) `snoc` $2 }+ { reverseList (liftCAttrs $1) `RList.snoc` $2 } | type_qualifier_list declaration_qualifier_without_types- { rmap CTypeQual $1 `snoc` $2 }+ { RList.rmap CTypeQual $1 `RList.snoc` $2 } | type_qualifier_list attrs declaration_qualifier_without_types- { (rmap CTypeQual $1 `rappend` liftCAttrs $2) `snoc` $3 }+ { (RList.rmap CTypeQual $1 `RList.rappend` liftCAttrs $2) `RList.snoc` $3 } | declaration_qualifier_list declaration_qualifier- { $1 `snoc` $2 }+ { $1 `RList.snoc` $2 } | declaration_qualifier_list attr { addTrailingAttrs $1 $2 }@@ -829,6 +858,9 @@ | auto {% withNodeInfo $1 $ CAuto } | register {% withNodeInfo $1 $ CRegister } | "__thread" {% withNodeInfo $1 $ CThread }+ | "__kernel" {% withNodeInfo $1 $ CClKernel }+ | "__global" {% withNodeInfo $1 $ CClGlobal }+ | "__local" {% withNodeInfo $1 $ CClLocal } -- parse C function specifier (C11 6.7.4) function_specifier :: { CFunSpec }@@ -852,9 +884,9 @@ -- Type specifier _Atomic(type) is not yet supported because of conflicts with type qualifier _Atomic type_specifier :: { [CDeclSpec] } type_specifier- : basic_type_specifier { reverse $1 } -- Arithmetic or void- | sue_type_specifier { reverse $1 } -- Struct/Union/Enum- | typedef_type_specifier { reverse $1 } -- Typedef+ : basic_type_specifier { RList.reverse $1 } -- Arithmetic or void+ | sue_type_specifier { RList.reverse $1 } -- Struct/Union/Enum+ | typedef_type_specifier { RList.reverse $1 } -- Typedef -- | "_Atomic" '(' type_name ')' -- _Atomic(type) -- {% withNodeInfo $1 $ \at -> [CTypeSpec (CAtomicType $3 at)] } @@ -871,9 +903,24 @@ | unsigned {% withNodeInfo $1 $ CUnsigType } | "_Bool" {% withNodeInfo $1 $ CBoolType } | "_Complex" {% withNodeInfo $1 $ CComplexType }- | "__int128" {% withNodeInfo $1 $ CInt128Type }+ | "__int128" {% withNodeInfo $1 $ CInt128Type }+ | "__int128_t" {% withNodeInfo $1 $ CInt128Type }+ | "__uint128" {% withNodeInfo $1 $ CUInt128Type }+ | "__uint128_t" {% withNodeInfo $1 $ CUInt128Type }+ | "__bf16" {% withNodeInfo $1 $ CBFloat16Type }+ | "__fp16" {% withNodeInfo $1 $ (CFloatNType 16 False) }+ | "_Float16" {% withNodeInfo $1 $ (CFloatNType 16 False) }+ | "_Float16x" {% withNodeInfo $1 $ (CFloatNType 16 True) }+ | "_Float32" {% withNodeInfo $1 $ (CFloatNType 32 False) }+ | "_Float32x" {% withNodeInfo $1 $ (CFloatNType 32 True) }+ | "_Float64" {% withNodeInfo $1 $ (CFloatNType 64 False) }+ | "_Float64x" {% withNodeInfo $1 $ (CFloatNType 64 True) }+ | "_Float128" {% withNodeInfo $1 $ (CFloatNType 128 False) }+ | "_Float128x" {% withNodeInfo $1 $ (CFloatNType 128 True) }+ | "__float128" {% withNodeInfo $1 $ (CFloatNType 128 False) } + -- A mixture of type qualifiers, storage class and basic type names in any -- order, but containing at least one basic type name and at least one storage -- class specifier.@@ -886,16 +933,16 @@ basic_declaration_specifier :: { Reversed [CDeclSpec] } basic_declaration_specifier : declaration_qualifier_list basic_type_name- { $1 `snoc` CTypeSpec $2 }+ { $1 `RList.snoc` CTypeSpec $2 } | basic_type_specifier storage_class- { $1 `snoc` CStorageSpec $2 }+ { $1 `RList.snoc` CStorageSpec $2 } | basic_declaration_specifier declaration_qualifier- { $1 `snoc` $2 }+ { $1 `RList.snoc` $2 } | basic_declaration_specifier basic_type_name- { $1 `snoc` CTypeSpec $2 }+ { $1 `RList.snoc` CTypeSpec $2 } | basic_declaration_specifier attr { addTrailingAttrs $1 $2 }@@ -913,22 +960,22 @@ basic_type_specifier -- Arithmetic or void : basic_type_name- { singleton (CTypeSpec $1) }+ { RList.singleton (CTypeSpec $1) } | attrs basic_type_name- { (reverseList $ liftCAttrs $1) `snoc` (CTypeSpec $2) }+ { (reverseList $ liftCAttrs $1) `RList.snoc` (CTypeSpec $2) } | type_qualifier_list basic_type_name- { rmap CTypeQual $1 `snoc` CTypeSpec $2 }+ { RList.rmap CTypeQual $1 `RList.snoc` CTypeSpec $2 } | type_qualifier_list attrs basic_type_name- { rmap CTypeQual $1 `rappend` (liftCAttrs $2) `snoc` CTypeSpec $3 }+ { RList.rmap CTypeQual $1 `RList.rappend` (liftCAttrs $2) `RList.snoc` CTypeSpec $3 } | basic_type_specifier type_qualifier- { $1 `snoc` CTypeQual $2 }+ { $1 `RList.snoc` CTypeQual $2 } | basic_type_specifier basic_type_name- { $1 `snoc` CTypeSpec $2 }+ { $1 `RList.snoc` CTypeSpec $2 } | basic_type_specifier attr { addTrailingAttrs $1 $2 }@@ -943,13 +990,13 @@ sue_declaration_specifier :: { Reversed [CDeclSpec] } sue_declaration_specifier : declaration_qualifier_list elaborated_type_name- { $1 `snoc` CTypeSpec $2 }+ { $1 `RList.snoc` CTypeSpec $2 } | sue_type_specifier storage_class- { $1 `snoc` CStorageSpec $2 }+ { $1 `RList.snoc` CStorageSpec $2 } | sue_declaration_specifier declaration_qualifier- { $1 `snoc` $2 }+ { $1 `RList.snoc` $2 } | sue_declaration_specifier attr { addTrailingAttrs $1 $2 }@@ -967,19 +1014,19 @@ sue_type_specifier -- struct/union/enum : elaborated_type_name- { singleton (CTypeSpec $1) }+ { RList.singleton (CTypeSpec $1) } | attrs elaborated_type_name- { (reverseList $ liftCAttrs $1) `snoc` (CTypeSpec $2) }+ { (reverseList $ liftCAttrs $1) `RList.snoc` (CTypeSpec $2) } | type_qualifier_list elaborated_type_name- { rmap CTypeQual $1 `snoc` CTypeSpec $2 }+ { RList.rmap CTypeQual $1 `RList.snoc` CTypeSpec $2 } | type_qualifier_list attrs elaborated_type_name- { rmap CTypeQual $1 `rappend` (liftCAttrs $2) `snoc` CTypeSpec $3 }+ { RList.rmap CTypeQual $1 `RList.rappend` (liftCAttrs $2) `RList.snoc` CTypeSpec $3 } | sue_type_specifier type_qualifier- { $1 `snoc` CTypeQual $2 }+ { $1 `RList.snoc` CTypeQual $2 } | sue_type_specifier attr { addTrailingAttrs $1 $2 }@@ -996,19 +1043,19 @@ typedef_declaration_specifier :: { Reversed [CDeclSpec] } typedef_declaration_specifier : typedef_type_specifier storage_class- { $1 `snoc` CStorageSpec $2 }+ { $1 `RList.snoc` CStorageSpec $2 } | declaration_qualifier_list tyident- {% withNodeInfo $2 $ \at -> $1 `snoc` CTypeSpec (CTypeDef $2 at) }+ {% withNodeInfo $2 $ \at -> $1 `RList.snoc` CTypeSpec (CTypeDef $2 at) } | declaration_qualifier_list typeof '(' expression ')'- {% withNodeInfo $2 $ \at -> $1 `snoc` CTypeSpec (CTypeOfExpr $4 at) }+ {% withNodeInfo $2 $ \at -> $1 `RList.snoc` CTypeSpec (CTypeOfExpr $4 at) } | declaration_qualifier_list typeof '(' type_name ')'- {% withNodeInfo $2 $ \at -> $1 `snoc` CTypeSpec (CTypeOfType $4 at) }+ {% withNodeInfo $2 $ \at -> $1 `RList.snoc` CTypeSpec (CTypeOfType $4 at) } | typedef_declaration_specifier declaration_qualifier- { $1 `snoc` $2 }+ { $1 `RList.snoc` $2 } | typedef_declaration_specifier attr { addTrailingAttrs $1 $2 }@@ -1022,44 +1069,44 @@ typedef_type_specifier :: { Reversed [CDeclSpec] } typedef_type_specifier : tyident- {% withNodeInfo $1 $ \at -> singleton (CTypeSpec (CTypeDef $1 at)) }+ {% withNodeInfo $1 $ \at -> RList.singleton (CTypeSpec (CTypeDef $1 at)) } | typeof '(' expression ')'- {% withNodeInfo $1 $ \at -> singleton (CTypeSpec (CTypeOfExpr $3 at)) }+ {% withNodeInfo $1 $ \at -> RList.singleton (CTypeSpec (CTypeOfExpr $3 at)) } | typeof '(' type_name ')'- {% withNodeInfo $1 $ \at -> singleton (CTypeSpec (CTypeOfType $3 at)) }+ {% withNodeInfo $1 $ \at -> RList.singleton (CTypeSpec (CTypeOfType $3 at)) } | type_qualifier_list tyident- {% withNodeInfo $2 $ \at -> rmap CTypeQual $1 `snoc` CTypeSpec (CTypeDef $2 at) }+ {% withNodeInfo $2 $ \at -> RList.rmap CTypeQual $1 `RList.snoc` CTypeSpec (CTypeDef $2 at) } | type_qualifier_list typeof '(' expression ')'- {% withNodeInfo $2 $ \at -> rmap CTypeQual $1 `snoc` CTypeSpec (CTypeOfExpr $4 at) }+ {% withNodeInfo $2 $ \at -> RList.rmap CTypeQual $1 `RList.snoc` CTypeSpec (CTypeOfExpr $4 at) } | type_qualifier_list typeof '(' type_name ')'- {% withNodeInfo $2 $ \at -> rmap CTypeQual $1 `snoc` CTypeSpec (CTypeOfType $4 at) }+ {% withNodeInfo $2 $ \at -> RList.rmap CTypeQual $1 `RList.snoc` CTypeSpec (CTypeOfType $4 at) } -- repeat with attrs (this could be easier if type qualifier list wouldn't allow leading attributes) | attrs tyident- {% withNodeInfo $2 $ \at -> reverseList (liftCAttrs $1) `snoc` (CTypeSpec (CTypeDef $2 at)) }+ {% withNodeInfo $2 $ \at -> reverseList (liftCAttrs $1) `RList.snoc` (CTypeSpec (CTypeDef $2 at)) } | attrs typeof '(' expression ')'- {% withNodeInfo $1 $ \at -> reverseList (liftCAttrs $1) `snoc` (CTypeSpec (CTypeOfExpr $4 at)) }+ {% withNodeInfo $1 $ \at -> reverseList (liftCAttrs $1) `RList.snoc` (CTypeSpec (CTypeOfExpr $4 at)) } | attrs typeof '(' type_name ')'- {% withNodeInfo $2 $ \at -> reverseList (liftCAttrs $1) `snoc` (CTypeSpec (CTypeOfType $4 at)) }+ {% withNodeInfo $2 $ \at -> reverseList (liftCAttrs $1) `RList.snoc` (CTypeSpec (CTypeOfType $4 at)) } | type_qualifier_list attrs tyident- {% withNodeInfo $3 $ \at -> rmap CTypeQual $1 `rappend` (liftCAttrs $2) `snoc` CTypeSpec (CTypeDef $3 at) }+ {% withNodeInfo $3 $ \at -> RList.rmap CTypeQual $1 `RList.rappend` (liftCAttrs $2) `RList.snoc` CTypeSpec (CTypeDef $3 at) } | type_qualifier_list attrs typeof '(' expression ')'- {% withNodeInfo $3 $ \at -> rmap CTypeQual $1 `rappend` (liftCAttrs $2) `snoc` CTypeSpec (CTypeOfExpr $5 at) }+ {% withNodeInfo $3 $ \at -> RList.rmap CTypeQual $1 `RList.rappend` (liftCAttrs $2) `RList.snoc` CTypeSpec (CTypeOfExpr $5 at) } | type_qualifier_list attrs typeof '(' type_name ')'- {% withNodeInfo $3 $ \at -> rmap CTypeQual $1 `rappend` (liftCAttrs $2) `snoc` CTypeSpec (CTypeOfType $5 at) }+ {% withNodeInfo $3 $ \at -> RList.rmap CTypeQual $1 `RList.rappend` (liftCAttrs $2) `RList.snoc` CTypeSpec (CTypeOfType $5 at) } | typedef_type_specifier type_qualifier- { $1 `snoc` CTypeQual $2 }+ { $1 `RList.snoc` CTypeQual $2 } | typedef_type_specifier attr { addTrailingAttrs $1 $2 }@@ -1084,11 +1131,9 @@ struct_or_union_specifier :: { CStructUnion } struct_or_union_specifier : struct_or_union attrs_opt identifier '{' struct_declaration_list '}'- {% withNodeInfo $1 $ CStruct (unL $1) (Just $3) (Just$ reverse $5) $2 }-+ {% withNodeInfo $1 $ CStruct (unL $1) (Just $3) (Just$ RList.reverse $5) $2 } | struct_or_union attrs_opt '{' struct_declaration_list '}'- {% withNodeInfo $1 $ CStruct (unL $1) Nothing (Just$ reverse $4) $2 }-+ {% withNodeInfo $1 $ CStruct (unL $1) Nothing (Just$ RList.reverse $4) $2 } | struct_or_union attrs_opt identifier {% withNodeInfo $1 $ CStruct (unL $1) (Just $3) Nothing $2 } @@ -1101,9 +1146,10 @@ struct_declaration_list :: { Reversed [CDecl] } struct_declaration_list- : {- empty -} { empty }+ : {- empty -} { RList.empty } | struct_declaration_list ';' { $1 }- | struct_declaration_list struct_declaration { $1 `snoc` $2 }+ | struct_declaration_list struct_declaration { $1 `RList.snoc` maybe $2 (addAlign $2) (containsAlign $1) }+ | struct_declaration_list alignment_specifier struct_declaration { $1 `RList.snoc` ( addAlign $3 $2 )} -- parse C structure declaration (C99 6.7.2.1)@@ -1195,24 +1241,24 @@ enum_specifier :: { CEnum } enum_specifier : enum attrs_opt '{' enumerator_list '}'- {% withNodeInfo $1 $ CEnum Nothing (Just$ reverse $4) $2 }+ {% withNodeInfo $1 $ CEnum Nothing (Just$ RList.reverse $4) $2 } | enum attrs_opt '{' enumerator_list ',' '}'- {% withNodeInfo $1 $ CEnum Nothing (Just$ reverse $4) $2 }+ {% withNodeInfo $1 $ CEnum Nothing (Just$ RList.reverse $4) $2 } | enum attrs_opt identifier '{' enumerator_list '}'- {% withNodeInfo $1 $ CEnum (Just $3) (Just$ reverse $5) $2 }+ {% withNodeInfo $1 $ CEnum (Just $3) (Just$ RList.reverse $5) $2 } | enum attrs_opt identifier '{' enumerator_list ',' '}'- {% withNodeInfo $1 $ CEnum (Just $3) (Just$ reverse $5) $2 }+ {% withNodeInfo $1 $ CEnum (Just $3) (Just$ RList.reverse $5) $2 } | enum attrs_opt identifier {% withNodeInfo $1 $ CEnum (Just $3) Nothing $2 } enumerator_list :: { Reversed [(Ident, Maybe CExpr)] } enumerator_list- : enumerator { singleton $1 }- | enumerator_list ',' enumerator { $1 `snoc` $3 }+ : enumerator { RList.singleton $1 }+ | enumerator_list ',' enumerator { $1 `RList.snoc` $3 } enumerator :: { (Ident, Maybe CExpr) }@@ -1235,14 +1281,16 @@ | "_Nullable" {% withNodeInfo $1 $ CNullableQual } | "_Nonnull" {% withNodeInfo $1 $ CNonnullQual } | "_Atomic" {% withNodeInfo $1 $ CAtomicQual }+ | "__read_only" {% withNodeInfo $1 $ CClRdOnlyQual }+ | "__write_only" {% withNodeInfo $1 $ CClWrOnlyQual } --- a list containing at least one type_qualifier (const, volatile, restrict, inline, _Noreturn)+-- a list containing at least one type_qualifier (const, volatile, restrict, inline, _Noreturn, __read_only, __write_only) -- and additionally CAttrs type_qualifier_list :: { Reversed [CTypeQual] } type_qualifier_list- : attrs_opt type_qualifier { reverseList (map CAttrQual $1) `snoc` $2 }- | type_qualifier_list type_qualifier { $1 `snoc` $2 }- | type_qualifier_list attrs type_qualifier { ($1 `rappend` map CAttrQual $2) `snoc` $3}+ : attrs_opt type_qualifier { reverseList (map CAttrQual $1) `RList.snoc` $2 }+ | type_qualifier_list type_qualifier { $1 `RList.snoc` $2 }+ | type_qualifier_list attrs type_qualifier { ($1 `RList.rappend` map CAttrQual $2) `RList.snoc` $3} -- parse C declarator (C99 6.7.5) --@@ -1306,10 +1354,10 @@ {% withAttribute $1 $2 $ ptrDeclr $3 [] } | '*' type_qualifier_list parameter_typedef_declarator- {% withNodeInfo $1 $ ptrDeclr $3 (reverse $2) }+ {% withNodeInfo $1 $ ptrDeclr $3 (RList.reverse $2) } | '*' type_qualifier_list attrs parameter_typedef_declarator- {% withAttribute $1 $3 $ ptrDeclr $4 (reverse $2) }+ {% withAttribute $1 $3 $ ptrDeclr $4 (RList.reverse $2) } -- clean_postfix_typedef_declarator :- ( attrs? clean_typedef_declarator ) declarator_postfix? --@@ -1334,17 +1382,17 @@ {% withNodeInfo $1 $ ptrDeclr $3 [] } | '*' type_qualifier_list '(' simple_paren_typedef_declarator ')'- {% withNodeInfo $1 $ ptrDeclr $4 (reverse $2) }+ {% withNodeInfo $1 $ ptrDeclr $4 (RList.reverse $2) } | '*' type_qualifier_list attrs '(' simple_paren_typedef_declarator ')'- {% withAttribute $1 $3 $ ptrDeclr $5 (reverse $2) }+ {% withAttribute $1 $3 $ ptrDeclr $5 (RList.reverse $2) } | '*' paren_typedef_declarator {% withNodeInfo $1 $ ptrDeclr $2 [] } | '*' type_qualifier_list paren_typedef_declarator- {% withNodeInfo $1 $ ptrDeclr $3 (reverse $2) }+ {% withNodeInfo $1 $ ptrDeclr $3 (RList.reverse $2) } | '*' type_qualifier_list attrs paren_typedef_declarator- {% withAttribute $1 $3 $ ptrDeclr $4 (reverse $2) }+ {% withAttribute $1 $3 $ ptrDeclr $4 (RList.reverse $2) } -- redundant paren to left of tname paren_postfix_typedef_declarator :: { CDeclrR }@@ -1394,10 +1442,10 @@ {% withAttribute $1 $2 $ ptrDeclr $3 [] } | '*' type_qualifier_list identifier_declarator- {% withNodeInfo $1 $ ptrDeclr $3 (reverse $2) }+ {% withNodeInfo $1 $ ptrDeclr $3 (RList.reverse $2) } | '*' type_qualifier_list attrs identifier_declarator- {% withAttribute $1 $3 $ ptrDeclr $4 (reverse $2) }+ {% withAttribute $1 $3 $ ptrDeclr $4 (RList.reverse $2) } postfix_identifier_declarator :: { CDeclrR } postfix_identifier_declarator@@ -1443,12 +1491,12 @@ {% withNodeInfo $1 $ ptrDeclr $2 [] } -- FIXME: no attr possible here ??? | '*' type_qualifier_list old_function_declarator- {% withNodeInfo $1 $ ptrDeclr $3 (reverse $2) }+ {% withNodeInfo $1 $ ptrDeclr $3 (RList.reverse $2) } postfix_old_function_declarator :: { CDeclrR } postfix_old_function_declarator : paren_identifier_declarator '(' identifier_list ')'- {% withNodeInfo $1 $ funDeclr $1 (Left $ reverse $3) [] }+ {% withNodeInfo $1 $ funDeclr $1 (Left $ RList.reverse $3) [] } | '(' old_function_declarator ')' { $2 }@@ -1462,13 +1510,13 @@ parameter_type_list :: { ([CDecl], Bool) } parameter_type_list : {- empty -} { ([], False)}- | parameter_list { (reverse $1, False) }- | parameter_list ',' "..." { (reverse $1, True) }+ | parameter_list { (RList.reverse $1, False) }+ | parameter_list ',' "..." { (RList.reverse $1, True) } parameter_list :: { Reversed [CDecl] } parameter_list- : parameter_declaration { singleton $1 }- | parameter_list ',' parameter_declaration { $1 `snoc` $3 }+ : parameter_declaration { RList.singleton $1 }+ | parameter_list ',' parameter_declaration { $1 `RList.snoc` $3 } parameter_declaration :: { CDecl } parameter_declaration@@ -1485,13 +1533,13 @@ {% withNodeInfo $1 $ CDecl $1 [(Just (reverseDeclr $! appendDeclrAttrs $3 $2), Nothing, Nothing)] } | declaration_qualifier_list- {% withNodeInfo $1 $ CDecl (reverse $1) [] }+ {% withNodeInfo $1 $ CDecl (RList.reverse $1) [] } | declaration_qualifier_list abstract_declarator- {% withNodeInfo $1 $ CDecl (reverse $1) [(Just (reverseDeclr $2), Nothing, Nothing)] }+ {% withNodeInfo $1 $ CDecl (RList.reverse $1) [(Just (reverseDeclr $2), Nothing, Nothing)] } | declaration_qualifier_list identifier_declarator attrs_opt- {% withNodeInfo $1 $ CDecl (reverse $1) [(Just (reverseDeclr $! appendDeclrAttrs $3 $2), Nothing, Nothing)] }+ {% withNodeInfo $1 $ CDecl (RList.reverse $1) [(Just (reverseDeclr $! appendDeclrAttrs $3 $2), Nothing, Nothing)] } | type_specifier {% withNodeInfo $1 $ CDecl $1 [] }@@ -1519,8 +1567,8 @@ identifier_list :: { Reversed [Ident] } identifier_list- : ident { singleton $1 }- | identifier_list ',' ident { $1 `snoc` $3 }+ : ident { RList.singleton $1 }+ | identifier_list ',' ident { $1 `RList.snoc` $3 } -- parse C type name (C99 6.7.6)@@ -1589,19 +1637,19 @@ {% withAttributePF $1 $2 $ \at declr -> arrDeclr declr [] False False $3 at } | '[' type_qualifier_list assignment_expression_opt ']'- {% withNodeInfo $1 $ \at declr -> arrDeclr declr (reverse $2) False False $3 at }+ {% withNodeInfo $1 $ \at declr -> arrDeclr declr (RList.reverse $2) False False $3 at } | '[' type_qualifier_list attrs assignment_expression_opt ']'- {% withAttributePF $1 $3 $ \at declr -> arrDeclr declr (reverse $2) False False $4 at }+ {% withAttributePF $1 $3 $ \at declr -> arrDeclr declr (RList.reverse $2) False False $4 at } | '[' static attrs_opt assignment_expression ']' {% withAttributePF $1 $3 $ \at declr -> arrDeclr declr [] False True (Just $4) at } | '[' static type_qualifier_list attrs_opt assignment_expression ']'- {% withAttributePF $1 $4 $ \at declr -> arrDeclr declr (reverse $3) False True (Just $5) at }+ {% withAttributePF $1 $4 $ \at declr -> arrDeclr declr (RList.reverse $3) False True (Just $5) at } | '[' type_qualifier_list attrs_opt static attrs_opt assignment_expression ']'- {% withAttributePF $1 ($3 ++ $5) $ \at declr -> arrDeclr declr (reverse $2) False True (Just $6) at }+ {% withAttributePF $1 ($3 ++ $5) $ \at declr -> arrDeclr declr (RList.reverse $2) False True (Just $6) at } | '[' '*' attrs_opt ']' {% withAttributePF $1 $3 $ \at declr -> arrDeclr declr [] True False Nothing at }@@ -1609,9 +1657,9 @@ {% withAttributePF $1 ($2 ++ $4) $ \at declr -> arrDeclr declr [] True False Nothing at } | '[' type_qualifier_list '*' attrs_opt ']'- {% withAttributePF $1 $4 $ \at declr -> arrDeclr declr (reverse $2) True False Nothing at }+ {% withAttributePF $1 $4 $ \at declr -> arrDeclr declr (RList.reverse $2) True False Nothing at } | '[' type_qualifier_list attrs '*' attrs_opt ']'- {% withAttributePF $1 ($3 ++ $5) $ \at declr -> arrDeclr declr (reverse $2) True False Nothing at }+ {% withAttributePF $1 ($3 ++ $5) $ \at declr -> arrDeclr declr (RList.reverse $2) True False Nothing at } unary_abstract_declarator :: { CDeclrR } unary_abstract_declarator@@ -1619,13 +1667,13 @@ {% withNodeInfo $1 $ ptrDeclr emptyDeclr [] } | '*' type_qualifier_list attrs_opt- {% withAttribute $1 $3 $ ptrDeclr emptyDeclr (reverse $2) }+ {% withAttribute $1 $3 $ ptrDeclr emptyDeclr (RList.reverse $2) } | '*' abstract_declarator {% withNodeInfo $1 $ ptrDeclr $2 [] } | '*' type_qualifier_list abstract_declarator- {% withNodeInfo $1 $ ptrDeclr $3 (reverse $2) }+ {% withNodeInfo $1 $ ptrDeclr $3 (RList.reverse $2) } | '*' attrs {% withAttribute $1 $2 $ ptrDeclr emptyDeclr [] }@@ -1653,8 +1701,8 @@ initializer :: { CInit } initializer : assignment_expression {% withNodeInfo $1 $ CInitExpr $1 }- | '{' initializer_list '}' {% withNodeInfo $1 $ CInitList (reverse $2) }- | '{' initializer_list ',' '}' {% withNodeInfo $1 $ CInitList (reverse $2) }+ | '{' initializer_list '}' {% withNodeInfo $1 $ CInitList (RList.reverse $2) }+ | '{' initializer_list ',' '}' {% withNodeInfo $1 $ CInitList (RList.reverse $2) } initializer_opt :: { Maybe CInit }@@ -1665,11 +1713,11 @@ initializer_list :: { Reversed CInitList } initializer_list- : {- empty -} { empty }- | initializer { singleton ([],$1) }- | designation initializer { singleton ($1,$2) }- | initializer_list ',' initializer { $1 `snoc` ([],$3) }- | initializer_list ',' designation initializer { $1 `snoc` ($3,$4) }+ : {- empty -} { RList.empty }+ | initializer { RList.singleton ([],$1) }+ | designation initializer { RList.singleton ($1,$2) }+ | initializer_list ',' initializer { $1 `RList.snoc` ([],$3) }+ | initializer_list ',' designation initializer { $1 `RList.snoc` ($3,$4) } -- designation@@ -1680,15 +1728,15 @@ -- designation :: { [CDesignator] } designation- : designator_list '=' { reverse $1 }+ : designator_list '=' { RList.reverse $1 } | identifier ':' {% withNodeInfo $1 $ \at -> [CMemberDesig $1 at] } | array_designator { [$1] } designator_list :: { Reversed [CDesignator] } designator_list- : designator { singleton $1 }- | designator_list designator { $1 `snoc` $2 }+ : designator { RList.singleton $1 }+ | designator_list designator { $1 `RList.snoc` $2 } designator :: { CDesignator }@@ -1721,7 +1769,7 @@ | string_literal { CConst (liftStrLit $1) } | '(' expression ')' { $2 } | "_Generic" '(' assignment_expression ',' generic_assoc_list ')'- {% withNodeInfo $1 $ CGenericSelection $3 (reverse $5) }+ {% withNodeInfo $1 $ CGenericSelection $3 (RList.reverse $5) } -- GNU extensions | '(' compound_statement ')' {% withNodeInfo $1 $ CStatExpr $2 }@@ -1730,17 +1778,23 @@ {% withNodeInfo $1 $ CBuiltinExpr . CBuiltinVaArg $3 $5 } | "__builtin_offsetof" '(' type_name ',' offsetof_member_designator ')'- {% withNodeInfo $1 $ CBuiltinExpr . CBuiltinOffsetOf $3 (reverse $5) }+ {% withNodeInfo $1 $ CBuiltinExpr . CBuiltinOffsetOf $3 (RList.reverse $5) } | "__builtin_types_compatible_p" '(' type_name ',' type_name ')' {% withNodeInfo $1 $ CBuiltinExpr . CBuiltinTypesCompatible $3 $5 } + | "__builtin_convertvector" '(' assignment_expression ',' type_name ')'+ {% withNodeInfo $1 $ CBuiltinExpr . CBuiltinConvertVector $3 $5 }++ | "__builtin_bit_cast" '(' type_name ',' assignment_expression ')'+ {% withNodeInfo $1 $ CBuiltinExpr . CBuiltinBitCast $3 $5 }+ -- Generic Selection association list (C11 6.5.1.1) -- -- TODO: introduce AST type for generic association generic_assoc_list :: { Reversed [(Maybe CDecl, CExpr)] }- : generic_assoc_list ',' generic_assoc { $1 `snoc` $3 }- | generic_assoc { singleton $1 }+ : generic_assoc_list ',' generic_assoc { $1 `RList.snoc` $3 }+ | generic_assoc { RList.singleton $1 } generic_assoc :: { (Maybe CDecl, CExpr) } generic_assoc : type_name ':' assignment_expression { (Just $1, $3) }@@ -1748,9 +1802,9 @@ offsetof_member_designator :: { Reversed [CDesignator] } offsetof_member_designator- : identifier {% withNodeInfo $1 $ singleton . CMemberDesig $1 }- | offsetof_member_designator '.' identifier {% withNodeInfo $3 $ ($1 `snoc`) . CMemberDesig $3 }- | offsetof_member_designator '[' expression ']' {% withNodeInfo $3 $ ($1 `snoc`) . CArrDesig $3 }+ : identifier {% withNodeInfo $1 $ RList.singleton . CMemberDesig $1 }+ | offsetof_member_designator '.' identifier {% withNodeInfo $3 $ ($1 `RList.snoc`) . CMemberDesig $3 }+ | offsetof_member_designator '[' expression ']' {% withNodeInfo $3 $ ($1 `RList.snoc`) . CArrDesig $3 } -- parse C postfix expression (C99 6.5.2)@@ -1767,7 +1821,7 @@ {% withNodeInfo $1 $ CCall $1 [] } | postfix_expression '(' argument_expression_list ')'- {% withNodeInfo $1 $ CCall $1 (reverse $3) }+ {% withNodeInfo $1 $ CCall $1 (RList.reverse $3) } | postfix_expression '.' identifier {% withNodeInfo $1 $ CMember $1 $3 False }@@ -1782,16 +1836,16 @@ {% withNodeInfo $1 $ CUnary CPostDecOp $1 } | '(' type_name ')' '{' initializer_list '}'- {% withNodeInfo $1 $ CCompoundLit $2 (reverse $5) }+ {% withNodeInfo $1 $ CCompoundLit $2 (RList.reverse $5) } | '(' type_name ')' '{' initializer_list ',' '}'- {% withNodeInfo $1 $ CCompoundLit $2 (reverse $5) }+ {% withNodeInfo $1 $ CCompoundLit $2 (RList.reverse $5) } argument_expression_list :: { Reversed [CExpr] } argument_expression_list- : assignment_expression { singleton $1 }- | argument_expression_list ',' assignment_expression { $1 `snoc` $3 }+ : assignment_expression { RList.singleton $1 }+ | argument_expression_list ',' assignment_expression { $1 `RList.snoc` $3 } -- parse C unary expression (C99 6.5.3)@@ -2024,12 +2078,12 @@ { $1 } | assignment_expression ',' comma_expression- {% let es = reverse $3 in withNodeInfo es $ CComma ($1:es) }+ {% let es = RList.reverse $3 in withNodeInfo es $ CComma ($1:es) } comma_expression :: { Reversed [CExpr] } comma_expression- : assignment_expression { singleton $1 }- | comma_expression ',' assignment_expression { $1 `snoc` $3 }+ : assignment_expression { RList.singleton $1 }+ | comma_expression ',' assignment_expression { $1 `RList.snoc` $3 } -- The following was used for clarity@@ -2059,7 +2113,7 @@ constant : cint {% withNodeInfo $1 $ case $1 of CTokILit _ i -> CIntConst i } | cchar {% withNodeInfo $1 $ case $1 of CTokCLit _ c -> CCharConst c }- | cfloat {% withNodeInfo $1 $ case $1 of CTokFLit _ f -> CFloatConst f }+ | cfloat {% withNodeInfo $1 $ case $1 of CTokFLit _ f -> CFloatConst f } string_literal :: { CStrLit }@@ -2068,13 +2122,13 @@ {% withNodeInfo $1 $ case $1 of CTokSLit _ s -> CStrLit s } | cstr string_literal_list- {% withNodeInfo $1 $ case $1 of CTokSLit _ s -> CStrLit (concatCStrings (s : reverse $2)) }+ {% withNodeInfo $1 $ case $1 of CTokSLit _ s -> CStrLit (concatCStrings (s : RList.reverse $2)) } string_literal_list :: { Reversed [CString] } string_literal_list- : cstr { case $1 of CTokSLit _ s -> singleton s }- | string_literal_list cstr { case $2 of CTokSLit _ s -> $1 `snoc` s }+ : cstr { case $1 of CTokSLit _ s -> RList.singleton s }+ | string_literal_list cstr { case $2 of CTokSLit _ s -> $1 `RList.snoc` s } clang_version_literal :: { ClangCVersion } : clangcversion { $1 }@@ -2099,11 +2153,11 @@ attr :: { [CAttr] } attr- : "__attribute__" '(' '(' attribute_list ')' ')' { reverse $4 }+ : "__attribute__" '(' '(' attribute_list ')' ')' { RList.reverse $4 } attribute_list :: { Reversed [CAttr] }- : attribute { case $1 of Nothing -> empty; Just attr -> singleton attr }- | attribute_list ',' attribute { (maybe id (flip snoc) $3) $1 }+ : attribute { case $1 of Nothing -> RList.empty; Just attr -> RList.singleton attr }+ | attribute_list ',' attribute { (maybe id (flip RList.snoc) $3) $1 } attribute :: { Maybe CAttr }@@ -2111,7 +2165,7 @@ : {- empty -} { Nothing } | ident {% withNodeInfo $1 $ Just . CAttr $1 [] } | const {% withNodeInfo $1 $ Just . CAttr (internalIdent "const") [] }- | ident '(' attribute_params ')' {% withNodeInfo $1 $ Just . CAttr $1 (reverse $3) }+ | ident '(' attribute_params ')' {% withNodeInfo $1 $ Just . CAttr $1 (RList.reverse $3) } | ident '(' ')' {% withNodeInfo $1 $ Just . CAttr $1 [] } -- OS X 10.9 (Mavericks) makes use of more liberal attribute syntax@@ -2120,15 +2174,31 @@ attribute_params :: { Reversed [CExpr] } attribute_params- : constant_expression { singleton $1 }+ : constant_expression { RList.singleton $1 } | unary_expression assignment_operator clang_version_literal { Reversed [] } | unary_expression assignment_operator unary_expression { Reversed [] }- | attribute_params ',' constant_expression { $1 `snoc` $3 }+ | attribute_params ',' constant_expression { $1 `RList.snoc` $3 } | attribute_params ',' unary_expression assignment_operator unary_expression { $1 } | attribute_params ',' unary_expression assignment_operator clang_version_literal { $1 } { +containsAlign :: Reversed [CDecl] -> Maybe CAlignSpec+containsAlign (Reversed input) = listToMaybe $ mapMaybe checkDecl input+ where+ checkDecl :: CDecl -> Maybe CAlignSpec+ checkDecl = \case+ CDecl list _ _ -> listToMaybe $ mapMaybe isAlignSpec list+ _ -> Nothing++ isAlignSpec :: CDeclSpec -> Maybe CAlignSpec+ isAlignSpec = \case+ CAlignSpec x -> Just x+ _ -> Nothing++addAlign :: CDecl -> CAlignmentSpecifier NodeInfo -> CDecl+addAlign (CDecl list list2 a) align = CDecl (CAlignSpec align : list) list2 a+ -- sometimes it is neccessary to reverse an unreversed list reverseList :: [a] -> Reversed [a] reverseList = Reversed . List.reverse@@ -2167,7 +2237,7 @@ data CDeclrR = CDeclrR (Maybe Ident) (Reversed [CDerivedDeclr]) (Maybe CStrLit) [CAttr] NodeInfo reverseDeclr :: CDeclrR -> CDeclr reverseDeclr (CDeclrR ide reversedDDs asmname cattrs at)- = CDeclr ide (reverse reversedDDs) asmname cattrs at+ = CDeclr ide (RList.reverse reversedDDs) asmname cattrs at instance CNode (CDeclrR) where nodeInfo (CDeclrR _ _ _ _ n) = n instance Pos (CDeclrR) where@@ -2230,7 +2300,7 @@ appendDeclrAttrs :: [CAttr] -> CDeclrR -> CDeclrR appendDeclrAttrs newAttrs (CDeclrR ident (Reversed []) asmname cattrs at)- = CDeclrR ident empty asmname (cattrs ++ newAttrs) at+ = CDeclrR ident RList.empty asmname (cattrs ++ newAttrs) at appendDeclrAttrs newAttrs (CDeclrR ident (Reversed (x:xs)) asmname cattrs at) = CDeclrR ident (Reversed (appendAttrs x : xs)) asmname cattrs at where appendAttrs (CPtrDeclr typeQuals at) = CPtrDeclr (typeQuals ++ map CAttrQual newAttrs) at@@ -2239,20 +2309,20 @@ ptrDeclr :: CDeclrR -> [CTypeQual] -> NodeInfo -> CDeclrR ptrDeclr (CDeclrR ident derivedDeclrs asmname cattrs dat) tyquals at- = CDeclrR ident (derivedDeclrs `snoc` CPtrDeclr tyquals at) asmname cattrs dat+ = CDeclrR ident (derivedDeclrs `RList.snoc` CPtrDeclr tyquals at) asmname cattrs dat funDeclr :: CDeclrR -> (Either [Ident] ([CDecl],Bool)) -> [CAttr] -> NodeInfo -> CDeclrR funDeclr (CDeclrR ident derivedDeclrs asmname dcattrs dat) params cattrs at- = CDeclrR ident (derivedDeclrs `snoc` CFunDeclr params cattrs at) asmname dcattrs dat+ = CDeclrR ident (derivedDeclrs `RList.snoc` CFunDeclr params cattrs at) asmname dcattrs dat arrDeclr :: CDeclrR -> [CTypeQual] -> Bool -> Bool -> Maybe CExpr -> NodeInfo -> CDeclrR arrDeclr (CDeclrR ident derivedDeclrs asmname cattrs dat) tyquals var_sized static_size size_expr_opt at- = arr_sz `seq` ( CDeclrR ident (derivedDeclrs `snoc` CArrDeclr tyquals arr_sz at) asmname cattrs dat )+ = arr_sz `seq` ( CDeclrR ident (derivedDeclrs `RList.snoc` CArrDeclr tyquals arr_sz at) asmname cattrs dat ) where arr_sz = case size_expr_opt of Just e -> CArrSize static_size e Nothing -> CNoArrSize var_sized liftTypeQuals :: Reversed [CTypeQual] -> [CDeclSpec]-liftTypeQuals = map CTypeQual . reverse+liftTypeQuals = map CTypeQual . RList.reverse -- lift CAttrs to DeclSpecs --@@ -2263,12 +2333,12 @@ -- needs special care when @decl_spec_n@ is a SUE definition addTrailingAttrs :: Reversed [CDeclSpec] -> [CAttr] -> Reversed [CDeclSpec] addTrailingAttrs declspecs new_attrs =- case viewr declspecs of+ case RList.viewr declspecs of (specs_init, CTypeSpec (CSUType (CStruct tag name (Just def) def_attrs su_node) node))- -> (specs_init `snoc` CTypeSpec (CSUType (CStruct tag name (Just def) (def_attrs ++ new_attrs) su_node) node))+ -> (specs_init `RList.snoc` CTypeSpec (CSUType (CStruct tag name (Just def) (def_attrs ++ new_attrs) su_node) node)) (specs_init, CTypeSpec (CEnumType (CEnum name (Just def) def_attrs e_node) node))- -> (specs_init `snoc` CTypeSpec (CEnumType (CEnum name (Just def) (def_attrs ++ new_attrs) e_node) node))- _ -> declspecs `rappend` (liftCAttrs new_attrs)+ -> (specs_init `RList.snoc` CTypeSpec (CEnumType (CEnum name (Just def) (def_attrs ++ new_attrs) e_node) node))+ _ -> declspecs `RList.rappend` (liftCAttrs new_attrs) -- convenient instance, the position of a list of things is the position of -- the first thing in the list@@ -2280,9 +2350,9 @@ posOf (Reversed x) = posOf x emptyDeclr :: CDeclrR-emptyDeclr = CDeclrR Nothing empty Nothing [] undefNode+emptyDeclr = CDeclrR Nothing RList.empty Nothing [] undefNode mkVarDeclr :: Ident -> NodeInfo -> CDeclrR-mkVarDeclr ident = CDeclrR (Just ident) empty Nothing []+mkVarDeclr ident = CDeclrR (Just ident) RList.empty Nothing [] -- Take the identifiers and use them to update the typedef'ed identifier set -- if the decl is defining a typedef then we add it to the set,
src/Language/C/Parser/ParserMonad.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE CPP #-}+{-# OPTIONS_GHC -Wwarn=incomplete-uni-patterns #-} ----------------------------------------------------------------------------- -- | -- Module : Language.C.Syntax.ParserMonad@@ -46,8 +48,10 @@ import Language.C.Data.Ident (Ident) import Language.C.Parser.Tokens (CToken(CTokEof)) +import Prelude hiding (Applicative(..), MonadFail(..)) import Control.Applicative (Applicative(..)) import Control.Monad (liftM, ap)+import Control.Monad.Fail (MonadFail (..)) import Data.Set (Set) import qualified Data.Set as Set (fromList, insert, member, delete) @@ -76,14 +80,19 @@ fmap = liftM instance Applicative P where- pure = return+ pure = returnP (<*>) = ap instance Monad P where- return = returnP (>>=) = thenP+#if !MIN_VERSION_base(4,13,0) fail m = getPos >>= \pos -> failP pos [m]+#endif +#if MIN_VERSION_base(4,9,0)+instance MonadFail P where+ fail m = getPos >>= \pos -> failP pos [m]+#endif -- | execute the given parser on the supplied input stream. -- returns 'ParseError' if the parser failed, and a pair of
src/Language/C/Parser/Tokens.hs view
@@ -92,6 +92,10 @@ | CTokEnum !PosLength -- `enum' | CTokExtern !PosLength -- `extern' | CTokFloat !PosLength -- `float'+ | CTokBFloat16 !PosLength -- `__bf16'+ | CTokFloatN !Int !Bool !PosLength -- (or `__float128',+ -- `__fp16',+ -- `_Float{16,32,64,128}{,x}`) | CTokFor !PosLength -- `for' | CTokGeneric !PosLength -- `_Generic' | CTokGoto !PosLength -- `goto'@@ -101,6 +105,7 @@ -- `__inline__') | CTokInt !PosLength -- `int' | CTokInt128 !PosLength -- `__int128`+ -- (or `__int128_t`) | CTokLong !PosLength -- `long' | CTokLabel !PosLength -- `__label__ | CTokNoreturn !PosLength -- `_Noreturn'@@ -123,6 +128,8 @@ | CTokTypedef !PosLength -- `typedef' | CTokTypeof !PosLength -- `typeof' | CTokThread !PosLength -- `__thread'+ | CTokUInt128 !PosLength -- `__uint128`+ -- (or `__uint128_t`) | CTokUnion !PosLength -- `union' | CTokUnsigned !PosLength -- `unsigned' | CTokVoid !PosLength -- `void'@@ -140,6 +147,11 @@ | CTokTyIdent !PosLength !Ident -- `typedef-name' identifier | CTokGnuC !GnuCTok !PosLength -- special GNU C tokens | CTokClangC !PosLength !ClangCTok -- special Clang C tokens+ | CTokClKernel !PosLength -- OpenCL `__kernel'+ | CTokClRdOnly !PosLength -- OpenCL `__read_only'+ | CTokClWrOnly !PosLength -- OpenCL `__write_only'+ | CTokClGlobal !PosLength -- OpenCL `__Global'+ | CTokClLocal !PosLength -- OpenCL `__Local' | CTokEof -- end of file -- special tokens used in GNU C extensions to ANSI C@@ -153,6 +165,8 @@ | GnuCComplexImag -- `__imag__' data ClangCTok = ClangCVersionTok !ClangCVersion -- version constant from 'availability' attribute+ | ClangBuiltinConvertVector+ | ClangCBitCast -- `__builtin_bit_cast` instance Pos CToken where posOf = fst . posLenOfTok@@ -224,6 +238,8 @@ posLenOfTok (CTokEnum pos ) = pos posLenOfTok (CTokExtern pos ) = pos posLenOfTok (CTokFloat pos ) = pos+posLenOfTok (CTokBFloat16 pos ) = pos+posLenOfTok (CTokFloatN _ _ pos) = pos posLenOfTok (CTokFor pos ) = pos posLenOfTok (CTokGeneric pos ) = pos posLenOfTok (CTokGoto pos ) = pos@@ -249,6 +265,7 @@ posLenOfTok (CTokTypedef pos ) = pos posLenOfTok (CTokTypeof pos ) = pos posLenOfTok (CTokThread pos ) = pos+posLenOfTok (CTokUInt128 pos ) = pos posLenOfTok (CTokUnion pos ) = pos posLenOfTok (CTokUnsigned pos ) = pos posLenOfTok (CTokVoid pos ) = pos@@ -262,6 +279,11 @@ posLenOfTok (CTokTyIdent pos _) = pos posLenOfTok (CTokGnuC _ pos ) = pos posLenOfTok (CTokClangC pos _) = pos+posLenOfTok (CTokClKernel pos ) = pos+posLenOfTok (CTokClRdOnly pos ) = pos+posLenOfTok (CTokClWrOnly pos ) = pos+posLenOfTok (CTokClGlobal pos ) = pos+posLenOfTok (CTokClLocal pos ) = pos posLenOfTok CTokEof = error "tokenPos: Eof" instance Show CToken where@@ -330,6 +352,9 @@ showsPrec _ (CTokEnum _ ) = showString "enum" showsPrec _ (CTokExtern _ ) = showString "extern" showsPrec _ (CTokFloat _ ) = showString "float"+ showsPrec _ (CTokBFloat16 _ ) = showString "__bf16"+ showsPrec _ (CTokFloatN n x _) = showString "_Float" . shows n .+ showString (if x then "x" else "") showsPrec _ (CTokFor _ ) = showString "for" showsPrec _ (CTokGeneric _ ) = showString "_Generic" showsPrec _ (CTokGoto _ ) = showString "goto"@@ -355,6 +380,7 @@ showsPrec _ (CTokTypedef _ ) = showString "typedef" showsPrec _ (CTokTypeof _ ) = showString "typeof" showsPrec _ (CTokThread _ ) = showString "_Thread_local"+ showsPrec _ (CTokUInt128 _ ) = showString "__uint128" showsPrec _ (CTokUnion _ ) = showString "union" showsPrec _ (CTokUnsigned _ ) = showString "unsigned" showsPrec _ (CTokVoid _ ) = showString "void"@@ -374,4 +400,11 @@ showsPrec _ (CTokGnuC GnuCOffsetof _) = showString "__builtin_offsetof" showsPrec _ (CTokGnuC GnuCTyCompat _) = showString "__builtin_types_compatible_p" showsPrec _ (CTokClangC _ (ClangCVersionTok v)) = shows v+ showsPrec _ (CTokClangC _ ClangBuiltinConvertVector) = showString "__builtin_convertvector"+ showsPrec _ (CTokClangC _ ClangCBitCast) = showString "__builtin_bit_cast"+ showsPrec _ (CTokClKernel _ ) = showString "__kernel"+ showsPrec _ (CTokClRdOnly _ ) = showString "__read_only"+ showsPrec _ (CTokClWrOnly _ ) = showString "__write_only"+ showsPrec _ (CTokClGlobal _ ) = showString "__global"+ showsPrec _ (CTokClLocal _ ) = showString "__Local" showsPrec _ CTokEof = error "show CToken : CTokEof"
src/Language/C/Pretty.hs view
@@ -22,6 +22,7 @@ import qualified Data.Set as Set import Text.PrettyPrint.HughesPJ import Debug.Trace {- for warnings -}+import Prelude hiding ((<>)) import Language.C.Data import Language.C.Syntax@@ -203,7 +204,7 @@ attrlistP (getAttrs declr) <+> maybeP ((text "=" <+>) . pretty) initializer checked_specs =- if any isAttrAfterSUE (zip specs (tail specs))+ if any isAttrAfterSUE (zip specs (drop 1 specs)) then trace ("Warning: AST Invariant violated: __attribute__ specifier following struct/union/enum:" ++ show (map pretty specs))@@ -236,6 +237,9 @@ pretty (CExtern _) = text "extern" pretty (CTypedef _) = text "typedef" pretty (CThread _) = text "_Thread_local"+ pretty (CClKernel _) = text "__kernel"+ pretty (CClGlobal _) = text "__global"+ pretty (CClLocal _) = text "__local" instance Pretty CTypeSpec where pretty (CVoidType _) = text "void"@@ -244,12 +248,16 @@ pretty (CIntType _) = text "int" pretty (CLongType _) = text "long" pretty (CFloatType _) = text "float"+ pretty (CBFloat16Type _) = text "__bf16"+ pretty (CFloatNType n x _) = text "_Float" <> text (show n) <>+ (if x then text "x" else empty) pretty (CDoubleType _) = text "double" pretty (CSignedType _) = text "signed" pretty (CUnsigType _) = text "unsigned" pretty (CBoolType _) = text "_Bool" pretty (CComplexType _) = text "_Complex" pretty (CInt128Type _) = text "__int128"+ pretty (CUInt128Type _) = text "__uint128" pretty (CSUType union _) = pretty union pretty (CEnumType enum _) = pretty enum pretty (CTypeDef ident _) = identP ident@@ -268,6 +276,8 @@ pretty (CAttrQual a) = attrlistP [a] pretty (CNullableQual _) = text "_Nullable" pretty (CNonnullQual _) = text "_Nonnull"+ pretty (CClRdOnlyQual _) = text "__read_only"+ pretty (CClWrOnlyQual _) = text "__write_only" instance Pretty CFunSpec where pretty (CInlineQual _) = text "inline"@@ -434,7 +444,7 @@ prettyPrec _p (CCompoundLit decl initl _) = parens (pretty decl) <+> (braces . hsep . punctuate comma) (map p initl) where p ([], initializer) = pretty initializer- p (mems, initializer) = hcat (punctuate (text ".") (map pretty mems)) <+> text "=" <+> pretty initializer+ p (mems, initializer) = hcat (map pretty mems) <+> text "=" <+> pretty initializer prettyPrec _p (CStatExpr stat _) = text "(" <> pretty stat <> text ")"@@ -461,6 +471,12 @@ pretty (CBuiltinTypesCompatible ty1 ty2 _) = text "__builtin_types_compatible_p" <+> parens (pretty ty1 <> comma <+> pretty ty2)+ pretty (CBuiltinConvertVector expr ty _) =+ text "__builtin_convertvector" <+>+ parens (pretty expr <> comma <+> pretty ty)+ pretty (CBuiltinBitCast ty expr _) =+ text "__builtin_bit_cast" <+>+ parens (pretty ty <> comma <+> pretty expr) instance Pretty CAssignOp where pretty op = text $ case op of
src/Language/C/Syntax/AST.hs view
@@ -62,7 +62,9 @@ import Language.C.Data.Ident import Language.C.Data.Node import Language.C.Data.Position-import Data.Generics+import Data.Data (Data)+import GHC.Generics (Generic, Generic1)+import Control.DeepSeq (NFData) -- | Complete C tranlsation unit (C99 6.9, K&R A10) --@@ -71,8 +73,10 @@ type CTranslUnit = CTranslationUnit NodeInfo data CTranslationUnit a = CTranslUnit [CExternalDeclaration a] a- deriving (Show, Data, Typeable {-! ,CNode ,Functor, Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor, Annotated !-}) +instance NFData a => NFData (CTranslationUnit a)+ -- | External C declaration (C99 6.9, K&R A10) -- -- Either a toplevel declaration, function definition or external assembler.@@ -81,8 +85,10 @@ = CDeclExt (CDeclaration a) | CFDefExt (CFunctionDef a) | CAsmExt (CStringLiteral a) a- deriving (Show, Data,Typeable {-! ,CNode ,Functor, Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor, Annotated !-}) +instance NFData a => NFData (CExternalDeclaration a)+ -- | C function definition (C99 6.9.1, K&R A10.1) -- -- A function definition is of the form @CFunDef specifiers declarator decllist? stmt@.@@ -104,8 +110,9 @@ [CDeclaration a] -- optional declaration list (CStatement a) -- compound statement a- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CFunctionDef a) -- | C declarations (K&R A8, C99 6.7), including structure declarations, parameter -- declarations and type names.@@ -161,8 +168,10 @@ (CExpression a) -- assert expression (CStringLiteral a) -- assert text a -- annotation- deriving (Show, Data,Typeable {-! ,CNode ,Annotated !-})+ deriving (Show, Data, Generic {-! ,CNode ,Annotated !-}) +instance NFData a => NFData (CDeclaration a)+ -- Derive instance is a little bit ugly instance Functor CDeclaration where fmap f (CDecl specs declarators annot) =@@ -218,9 +227,11 @@ type CDeclr = CDeclarator NodeInfo data CDeclarator a = CDeclr (Maybe Ident) [CDerivedDeclarator a] (Maybe (CStringLiteral a)) [CAttribute a] a- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CDeclarator a) + -- | Derived declarators, see 'CDeclr' -- -- Indirections are qualified using type-qualifiers and generic attributes, and additionally@@ -239,8 +250,10 @@ -- ^ Array declarator @CArrDeclr declr tyquals size-expr?@ | CFunDeclr (Either [Ident] ([CDeclaration a],Bool)) [CAttribute a] a -- ^ Function declarator @CFunDeclr declr (old-style-params | new-style-params) c-attrs@- deriving (Show, Data,Typeable {-! ,CNode , Annotated !-})+ deriving (Show, Data, Generic {-! ,CNode , Annotated !-}) +instance NFData a => NFData (CDerivedDeclarator a)+ -- Derived instance relies on fmap2 instance Functor CDerivedDeclarator where fmap _f (CPtrDeclr a1 a2) = CPtrDeclr (fmap (fmap _f) a1) (_f a2)@@ -256,8 +269,9 @@ data CArraySize a = CNoArrSize Bool -- ^ @CUnknownSize isCompleteType@ | CArrSize Bool (CExpression a) -- ^ @CArrSize isStatic expr@- deriving (Show, Data,Typeable {-! , Functor !-})+ deriving (Show, Data, Generic, Generic1 {-! , Functor !-}) +instance NFData a => NFData (CArraySize a) -- | C statement (K&R A9, C99 6.8) --@@ -303,8 +317,10 @@ | CReturn (Maybe (CExpression a)) a -- | assembly statement | CAsm (CAssemblyStatement a) a- deriving (Show, Data,Typeable {-! , CNode , Annotated !-})+ deriving (Show, Data, Generic {-! , CNode , Annotated !-}) +instance NFData a => NFData (CStatement a)+ -- Derived instance relies on fmap2 :( instance Functor CStatement where fmap _f (CLabel a1 a2 a3 a4)@@ -352,8 +368,10 @@ [CAssemblyOperand a] -- input operands [CStringLiteral a] -- Clobbers a- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CAssemblyStatement a)+ -- | Assembler operand -- -- @CAsmOperand argName? constraintExpr arg@ specifies an operand for an assembler@@ -365,8 +383,10 @@ (CStringLiteral a) -- constraint expr (CExpression a) -- argument a- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CAssemblyOperand a)+ -- | C99 Block items -- -- Things that may appear in compound statements: either statements, declarations@@ -376,8 +396,10 @@ = CBlockStmt (CStatement a) -- ^ A statement | CBlockDecl (CDeclaration a) -- ^ A local declaration | CNestedFunDef (CFunctionDef a) -- ^ A nested function (GNU C)- deriving (Show, Data,Typeable {-! , CNode , Functor, Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! , CNode , Functor, Annotated !-}) +instance NFData a => NFData (CCompoundBlockItem a)+ -- | C declaration specifiers and qualifiers -- -- Declaration specifiers include at most one storage-class specifier (C99 6.7.1),@@ -389,8 +411,9 @@ | CTypeQual (CTypeQualifier a) -- ^ type qualifier | CFunSpec (CFunctionSpecifier a) -- ^ function specifier | CAlignSpec (CAlignmentSpecifier a) -- ^ alignment specifier- deriving (Show, Data,Typeable {-! ,CNode ,Functor, Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor, Annotated !-}) +instance NFData a => NFData (CDeclarationSpecifier a) -- | Separate the declaration specifiers --@@ -417,8 +440,12 @@ | CExtern a -- ^ extern | CTypedef a -- ^ typedef | CThread a -- ^ C11/GNUC thread local storage- deriving (Show, Eq,Ord,Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ | CClKernel a -- ^ OpenCL kernel function+ | CClGlobal a -- ^ OpenCL __global variable+ | CClLocal a -- ^ OpenCL __local variable+ deriving (Show, Eq,Ord,Data, Generic, Generic1 {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CStorageSpecifier a) -- | C type specifier (K&R A8.2, C99 6.7.2) --@@ -440,14 +467,18 @@ | CBoolType a | CComplexType a | CInt128Type a+ | CUInt128Type a+ | CBFloat16Type a+ | CFloatNType Int Bool a -- ^ IEC 60227: width (32,64,128), extended flag | CSUType (CStructureUnion a) a -- ^ Struct or Union specifier | CEnumType (CEnumeration a) a -- ^ Enumeration specifier | CTypeDef Ident a -- ^ Typedef name | CTypeOfExpr (CExpression a) a -- ^ @typeof(expr)@ | CTypeOfType (CDeclaration a) a -- ^ @typeof(type)@ | CAtomicType (CDeclaration a) a -- ^ @_Atomic(type)@- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CTypeSpecifier a) -- | returns @True@ if the given typespec is a struct, union or enum /definition/ isSUEDef :: CTypeSpecifier a -> Bool@@ -469,8 +500,12 @@ | CAttrQual (CAttribute a) | CNullableQual a | CNonnullQual a- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ | CClRdOnlyQual a+ | CClWrOnlyQual a+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CTypeQualifier a)+ -- | C function specifiers (C99 6.7.4) -- -- function specifiers @inline@ and @_Noreturn@@@ -478,16 +513,19 @@ data CFunctionSpecifier a = CInlineQual a | CNoreturnQual a- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CFunctionSpecifier a)+ -- | C alignment specifiers (C99 6.7.5) -- type CAlignSpec = CAlignmentSpecifier NodeInfo data CAlignmentSpecifier a = CAlignAsType (CDeclaration a) a -- ^ @_Alignas(type)@ | CAlignAsExpr (CExpression a) a -- ^ @_Alignas(expr)@- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CAlignmentSpecifier a) -- | C structure or union specifiers (K&R A8.3, C99 6.7.2.1) --@@ -507,14 +545,16 @@ (Maybe [CDeclaration a]) -- member declarations [CAttribute a] -- __attribute__s a- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CStructureUnion a) -- | A tag to determine wheter we refer to a @struct@ or @union@, see 'CStructUnion'. data CStructTag = CStructTag | CUnionTag- deriving (Show, Eq,Data,Typeable)+ deriving (Show, Eq,Data, Generic) +instance NFData CStructTag -- | C enumeration specifier (K&R A8.4, C99 6.7.2.2) --@@ -536,9 +576,9 @@ Maybe (CExpression a))]) -- explicit variant value [CAttribute a] -- __attribute__s a- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})-+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CEnumeration a) -- | C initialization (K&R A8.7, C99 6.7.8) --@@ -551,8 +591,10 @@ = CInitExpr (CExpression a) a -- | initialization list (see 'CInitList') | CInitList (CInitializerList a) a- deriving (Show, Data,Typeable {-! ,CNode , Annotated !-})+ deriving (Show, Data, Generic {-! ,CNode , Annotated !-}) +instance NFData a => NFData (CInitializer a)+ -- deriving Functor does not work (type synonym) instance Functor CInitializer where fmap _f (CInitExpr a1 a2) = CInitExpr (fmap _f a1) (_f a2)@@ -601,8 +643,9 @@ | CMemberDesig Ident a -- | array range designator @CRangeDesig from to _@ (GNU C) | CRangeDesig (CExpression a) (CExpression a) a- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ deriving (Show, Data, Generic {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CPartDesignator a) -- | @__attribute__@ annotations --@@ -610,8 +653,9 @@ -- and serve as generic properties of some syntax tree elements. type CAttr = CAttribute NodeInfo data CAttribute a = CAttr Ident [CExpression a] a- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CAttribute a) -- | C expression (K&R A7) --@@ -674,8 +718,10 @@ | CStatExpr (CStatement a) a -- ^ GNU C compound statement as expr | CLabAddrExpr Ident a -- ^ GNU C address of label | CBuiltinExpr (CBuiltinThing a) -- ^ builtin expressions, see 'CBuiltin'- deriving (Data,Typeable,Show {-! ,CNode , Annotated !-})+ deriving (Data,Show, Generic {-! ,CNode , Annotated !-}) +instance NFData a => NFData (CExpression a)+ -- deriving Functor does not work (type synonyms) instance Functor CExpression where fmap _f (CComma a1 a2) = CComma (fmap (fmap _f) a1) (_f a2)@@ -716,8 +762,11 @@ = CBuiltinVaArg (CExpression a) (CDeclaration a) a -- ^ @(expr, type)@ | CBuiltinOffsetOf (CDeclaration a) [CPartDesignator a] a -- ^ @(type, designator-list)@ | CBuiltinTypesCompatible (CDeclaration a) (CDeclaration a) a -- ^ @(type,type)@- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ | CBuiltinConvertVector (CExpression a) (CDeclaration a) a -- ^ @(expr, type)@+ | CBuiltinBitCast (CDeclaration a) (CExpression a) a -- ^ @(type, expr)@+ deriving (Show, Data, Generic {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CBuiltinThing a) -- | C constant (K&R A2.5 & A7.2) type CConst = CConstant NodeInfo@@ -726,14 +775,16 @@ | CCharConst CChar a | CFloatConst CFloat a | CStrConst CString a- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CConstant a) -- | Attributed string literals type CStrLit = CStringLiteral NodeInfo data CStringLiteral a = CStrLit CString a- deriving (Show, Data,Typeable {-! ,CNode ,Functor ,Annotated !-})+ deriving (Show, Data, Generic, Generic1 {-! ,CNode ,Functor ,Annotated !-}) +instance NFData a => NFData (CStringLiteral a) cstringOfLit :: CStringLiteral a -> CString cstringOfLit (CStrLit cstr _) = cstr@@ -996,6 +1047,9 @@ nodeInfo (CExtern d) = nodeInfo d nodeInfo (CTypedef d) = nodeInfo d nodeInfo (CThread d) = nodeInfo d+ nodeInfo (CClKernel d) = nodeInfo d+ nodeInfo (CClGlobal d) = nodeInfo d+ nodeInfo (CClLocal d) = nodeInfo d instance CNode t1 => Pos (CStorageSpecifier t1) where posOf x = posOf (nodeInfo x) @@ -1006,6 +1060,9 @@ fmap _f (CExtern a1) = CExtern (_f a1) fmap _f (CTypedef a1) = CTypedef (_f a1) fmap _f (CThread a1) = CThread (_f a1)+ fmap _f (CClKernel a1) = CClKernel (_f a1)+ fmap _f (CClGlobal a1) = CClGlobal (_f a1)+ fmap _f (CClLocal a1) = CClLocal (_f a1) instance Annotated CStorageSpecifier where annotation (CAuto n) = n@@ -1014,12 +1071,18 @@ annotation (CExtern n) = n annotation (CTypedef n) = n annotation (CThread n) = n+ annotation (CClKernel n) = n+ annotation (CClGlobal n) = n+ annotation (CClLocal n) = n amap f (CAuto a_1) = CAuto (f a_1) amap f (CRegister a_1) = CRegister (f a_1) amap f (CStatic a_1) = CStatic (f a_1) amap f (CExtern a_1) = CExtern (f a_1) amap f (CTypedef a_1) = CTypedef (f a_1) amap f (CThread a_1) = CThread (f a_1)+ amap f (CClKernel a_1) = CClKernel (f a_1)+ amap f (CClGlobal a_1) = CClGlobal (f a_1)+ amap f (CClLocal a_1) = CClLocal (f a_1) instance CNode t1 => CNode (CTypeSpecifier t1) where nodeInfo (CVoidType d) = nodeInfo d@@ -1027,13 +1090,16 @@ nodeInfo (CShortType d) = nodeInfo d nodeInfo (CIntType d) = nodeInfo d nodeInfo (CLongType d) = nodeInfo d+ nodeInfo (CBFloat16Type d) = nodeInfo d nodeInfo (CFloatType d) = nodeInfo d+ nodeInfo (CFloatNType _ _ d) = nodeInfo d nodeInfo (CDoubleType d) = nodeInfo d nodeInfo (CSignedType d) = nodeInfo d nodeInfo (CUnsigType d) = nodeInfo d nodeInfo (CBoolType d) = nodeInfo d nodeInfo (CComplexType d) = nodeInfo d nodeInfo (CInt128Type d) = nodeInfo d+ nodeInfo (CUInt128Type d) = nodeInfo d nodeInfo (CSUType _ n) = nodeInfo n nodeInfo (CEnumType _ n) = nodeInfo n nodeInfo (CTypeDef _ n) = nodeInfo n@@ -1050,12 +1116,15 @@ fmap _f (CIntType a1) = CIntType (_f a1) fmap _f (CLongType a1) = CLongType (_f a1) fmap _f (CFloatType a1) = CFloatType (_f a1)+ fmap _f (CBFloat16Type a1) = CBFloat16Type (_f a1)+ fmap _f (CFloatNType n x a1) = CFloatNType n x (_f a1) fmap _f (CDoubleType a1) = CDoubleType (_f a1) fmap _f (CSignedType a1) = CSignedType (_f a1) fmap _f (CUnsigType a1) = CUnsigType (_f a1) fmap _f (CBoolType a1) = CBoolType (_f a1) fmap _f (CComplexType a1) = CComplexType (_f a1) fmap _f (CInt128Type a1) = CInt128Type (_f a1)+ fmap _f (CUInt128Type a1) = CUInt128Type (_f a1) fmap _f (CSUType a1 a2) = CSUType (fmap _f a1) (_f a2) fmap _f (CEnumType a1 a2) = CEnumType (fmap _f a1) (_f a2) fmap _f (CTypeDef a1 a2) = CTypeDef a1 (_f a2)@@ -1070,12 +1139,15 @@ annotation (CIntType n) = n annotation (CLongType n) = n annotation (CFloatType n) = n+ annotation (CBFloat16Type n) = n+ annotation (CFloatNType _ _ n) = n annotation (CDoubleType n) = n annotation (CSignedType n) = n annotation (CUnsigType n) = n annotation (CBoolType n) = n annotation (CComplexType n) = n annotation (CInt128Type n) = n+ annotation (CUInt128Type n) = n annotation (CSUType _ n) = n annotation (CEnumType _ n) = n annotation (CTypeDef _ n) = n@@ -1088,12 +1160,15 @@ amap f (CIntType a_1) = CIntType (f a_1) amap f (CLongType a_1) = CLongType (f a_1) amap f (CFloatType a_1) = CFloatType (f a_1)+ amap f (CBFloat16Type a_1) = CBFloat16Type (f a_1)+ amap f (CFloatNType n x a_1) = CFloatNType n x (f a_1) amap f (CDoubleType a_1) = CDoubleType (f a_1) amap f (CSignedType a_1) = CSignedType (f a_1) amap f (CUnsigType a_1) = CUnsigType (f a_1) amap f (CBoolType a_1) = CBoolType (f a_1) amap f (CComplexType a_1) = CComplexType (f a_1) amap f (CInt128Type a_1) = CInt128Type (f a_1)+ amap f (CUInt128Type a_1) = CUInt128Type (f a_1) amap f (CSUType a_1 a_2) = CSUType a_1 (f a_2) amap f (CEnumType a_1 a_2) = CEnumType a_1 (f a_2) amap f (CTypeDef a_1 a_2) = CTypeDef a_1 (f a_2)@@ -1109,6 +1184,8 @@ nodeInfo (CAttrQual d) = nodeInfo d nodeInfo (CNullableQual d) = nodeInfo d nodeInfo (CNonnullQual d) = nodeInfo d+ nodeInfo (CClRdOnlyQual d) = nodeInfo d+ nodeInfo (CClWrOnlyQual d) = nodeInfo d instance CNode t1 => Pos (CTypeQualifier t1) where posOf x = posOf (nodeInfo x)@@ -1121,6 +1198,8 @@ fmap _f (CAttrQual a1) = CAttrQual (fmap _f a1) fmap _f (CNullableQual a1) = CNullableQual (_f a1) fmap _f (CNonnullQual a1) = CNonnullQual (_f a1)+ fmap _f (CClRdOnlyQual a1) = CClRdOnlyQual (_f a1)+ fmap _f (CClWrOnlyQual a1) = CClWrOnlyQual (_f a1) instance Annotated CTypeQualifier where annotation (CConstQual n) = n@@ -1130,6 +1209,8 @@ annotation (CAttrQual n) = annotation n annotation (CNullableQual n) = n annotation (CNonnullQual n) = n+ annotation (CClRdOnlyQual n) = n+ annotation (CClWrOnlyQual n) = n amap f (CConstQual a_1) = CConstQual (f a_1) amap f (CVolatQual a_1) = CVolatQual (f a_1) amap f (CRestrQual a_1) = CRestrQual (f a_1)@@ -1137,6 +1218,8 @@ amap f (CAttrQual n) = CAttrQual (amap f n) amap f (CNullableQual a_1) = CNullableQual (f a_1) amap f (CNonnullQual a_1) = CNonnullQual (f a_1)+ amap f (CClRdOnlyQual a_1) = CClRdOnlyQual (f a_1)+ amap f (CClWrOnlyQual a_1) = CClWrOnlyQual (f a_1) instance CNode t1 => CNode (CFunctionSpecifier t1) where nodeInfo (CInlineQual d) = nodeInfo d@@ -1322,6 +1405,8 @@ nodeInfo (CBuiltinVaArg _ _ n) = nodeInfo n nodeInfo (CBuiltinOffsetOf _ _ n) = nodeInfo n nodeInfo (CBuiltinTypesCompatible _ _ n) = nodeInfo n+ nodeInfo (CBuiltinConvertVector _ _ n) = nodeInfo n+ nodeInfo (CBuiltinBitCast _ _ n) = nodeInfo n instance CNode t1 => Pos (CBuiltinThing t1) where posOf x = posOf (nodeInfo x) @@ -1332,16 +1417,26 @@ = CBuiltinOffsetOf (fmap _f a1) (fmap (fmap _f) a2) (_f a3) fmap _f (CBuiltinTypesCompatible a1 a2 a3) = CBuiltinTypesCompatible (fmap _f a1) (fmap _f a2) (_f a3)+ fmap _f (CBuiltinConvertVector a1 a2 a3)+ = CBuiltinConvertVector (fmap _f a1) (fmap _f a2) (_f a3)+ fmap _f (CBuiltinBitCast a1 a2 a3)+ = CBuiltinBitCast (fmap _f a1) (fmap _f a2) (_f a3) instance Annotated CBuiltinThing where annotation (CBuiltinVaArg _ _ n) = n annotation (CBuiltinOffsetOf _ _ n) = n annotation (CBuiltinTypesCompatible _ _ n) = n+ annotation (CBuiltinConvertVector _ _ n) = n+ annotation (CBuiltinBitCast _ _ n) = n amap f (CBuiltinVaArg a_1 a_2 a_3) = CBuiltinVaArg a_1 a_2 (f a_3) amap f (CBuiltinOffsetOf a_1 a_2 a_3) = CBuiltinOffsetOf a_1 a_2 (f a_3) amap f (CBuiltinTypesCompatible a_1 a_2 a_3) = CBuiltinTypesCompatible a_1 a_2 (f a_3)+ amap f (CBuiltinConvertVector a_1 a_2 a_3) =+ CBuiltinConvertVector a_1 a_2 (f a_3)+ amap f (CBuiltinBitCast a_1 a_2 a_3) =+ CBuiltinBitCast a_1 a_2 (f a_3) instance CNode t1 => CNode (CConstant t1) where nodeInfo (CIntConst _ n) = nodeInfo n
src/Language/C/Syntax/Constants.hs view
@@ -30,7 +30,9 @@ import Data.Bits import Data.Char import Numeric (showOct, showHex, readHex, readOct, readDec)-import Data.Generics+import Data.Data (Data)+import GHC.Generics (Generic, Generic1)+import Control.DeepSeq (NFData) -- | C char constants (abstract) data CChar = CChar@@ -39,12 +41,14 @@ | CChars [Char] -- multi-character character constant !Bool -- wide flag- deriving (Eq,Ord,Data,Typeable)+ deriving (Eq,Ord,Data,Generic) instance Show CChar where showsPrec _ (CChar c wideflag) = _showWideFlag wideflag . showCharConst c showsPrec _ (CChars cs wideflag) = _showWideFlag wideflag . sQuote (concatMap escapeCChar cs) +instance NFData CChar+ -- | @showCharConst c@ prepends _a_ String representing the C char constant corresponding to @c@. -- If necessary uses octal or hexadecimal escape sequences. showCharConst :: Char -> ShowS@@ -83,15 +87,20 @@ cChars = CChars -- | datatype for memorizing the representation of an integer-data CIntRepr = DecRepr | HexRepr | OctalRepr deriving (Eq,Ord,Enum,Bounded,Data,Typeable)+data CIntRepr = DecRepr | HexRepr | OctalRepr+ deriving (Eq,Ord,Enum,Bounded,Data,Generic) +instance NFData CIntRepr+ -- | datatype representing type flags for integers-data CIntFlag = FlagUnsigned | FlagLong | FlagLongLong | FlagImag deriving (Eq,Ord,Enum,Bounded,Data,Typeable)+data CIntFlag = FlagUnsigned | FlagLong | FlagLongLong | FlagImag+ deriving (Eq,Ord,Enum,Bounded,Data,Generic) instance Show CIntFlag where show FlagUnsigned = "u" show FlagLong = "L" show FlagLongLong = "LL" show FlagImag = "i"+instance NFData CIntFlag {-# SPECIALIZE setFlag :: CIntFlag -> Flags CIntFlag -> Flags CIntFlag #-} {-# SPECIALIZE clearFlag :: CIntFlag -> Flags CIntFlag -> Flags CIntFlag #-}@@ -101,13 +110,14 @@ !Integer !CIntRepr !(Flags CIntFlag) -- integer flags- deriving (Eq,Ord,Data,Typeable)+ deriving (Eq,Ord,Data,Generic) instance Show CInteger where showsPrec _ (CInteger ig repr flags) = showInt ig . showString (concatMap showIFlag [FlagUnsigned .. ]) where showIFlag f = if testFlag f flags then show f else [] showInt num = case repr of DecRepr -> shows num OctalRepr -> showString "0" . showOct num HexRepr -> showString "0x" . showHex num+instance NFData CInteger -- To be used in the lexer -- Note that the flag lexer won't scale@@ -142,9 +152,10 @@ -- | Floats (represented as strings) data CFloat = CFloat !String- deriving (Eq,Ord,Data,Typeable)+ deriving (Eq,Ord,Data,Generic) instance Show CFloat where showsPrec _ (CFloat internal) = showString internal+instance NFData CFloat cFloat :: Float -> CFloat cFloat = CFloat . show@@ -157,7 +168,7 @@ -- <https://clang.llvm.org/docs/AttributeReference.html#availability> data ClangCVersion = ClangCVersion !String- deriving (Eq,Ord,Data,Typeable)+ deriving (Eq,Ord,Data) instance Show ClangCVersion where showsPrec _ (ClangCVersion internal) = showString internal @@ -168,9 +179,10 @@ data CString = CString String -- characters Bool -- wide flag- deriving (Eq,Ord,Data,Typeable)+ deriving (Eq,Ord,Data, Generic) instance Show CString where showsPrec _ (CString str wideflag) = _showWideFlag wideflag . showStringLit str+instance NFData CString -- construction cString :: String -> CString@@ -234,7 +246,6 @@ escapeChar '\\' = "\\\\" escapeChar '\a' = "\\a" escapeChar '\b' = "\\b"-escapeChar '\ESC' = "\\e"; escapeChar '\f' = "\\f" escapeChar '\n' = "\\n" escapeChar '\r' = "\\r"@@ -285,7 +296,8 @@ head' _ (x:_) = x -- TODO: Move to separate file ?-newtype Flags f = Flags Integer deriving (Eq,Ord,Data,Typeable)+newtype Flags f = Flags Integer deriving (Eq,Ord,Data,Generic,Generic1)+instance NFData (Flags f) noFlags :: Flags f noFlags = Flags 0 setFlag :: (Enum f) => f -> Flags f -> Flags f
src/Language/C/Syntax/Ops.hs view
@@ -25,7 +25,9 @@ isEffectfulOp ) where-import Data.Generics+import Data.Data (Data)+import GHC.Generics (Generic)+import Control.DeepSeq (NFData) -- | C assignment operators (K&R A7.17) data CAssignOp = CAssignOp | CMulAssOp@@ -38,8 +40,10 @@ | CAndAssOp | CXorAssOp | COrAssOp- deriving (Eq,Ord,Show,Data,Typeable)+ deriving (Eq,Ord,Show,Data,Generic) +instance NFData CAssignOp+ assignBinop :: CAssignOp -> CBinaryOp assignBinop CAssignOp = error "direct assignment has no binary operator" assignBinop CMulAssOp = CMulOp@@ -73,8 +77,10 @@ | COrOp -- ^ inclusive bitwise or | CLndOp -- ^ logical and | CLorOp -- ^ logical or- deriving (Eq,Ord,Show,Data,Typeable)+ deriving (Eq,Ord,Show,Data,Generic) +instance NFData CBinaryOp+ isCmpOp :: CBinaryOp -> Bool isCmpOp op = op `elem` [ CLeqOp, CGeqOp, CLeOp, CGrOp, CEqOp, CNeqOp ] @@ -99,7 +105,9 @@ | CMinOp -- ^ prefix minus | CCompOp -- ^ one's complement | CNegOp -- ^ logical negation- deriving (Eq,Ord,Show,Data,Typeable)+ deriving (Eq,Ord,Show,Data,Generic)++instance NFData CUnaryOp isEffectfulOp :: CUnaryOp -> Bool isEffectfulOp op = op `elem` [ CPreIncOp, CPreDecOp, CPostIncOp, CPostDecOp ]
src/Language/C/System/GCC.hs view
@@ -94,7 +94,7 @@ | "-D" `isPrefixOf` cpp_opt = Just (getDefine (drop 2 cpp_opt),rest) getArgOpt "-include" (f:rest') = Just (IncludeFile f, rest') getArgOpt _ _ = Nothing- getDefine opt = let (key,val) = break (== '=') opt in Define key (if null val then "" else tail val)+ getDefine opt = let (key,val) = break (== '=') opt in Define key (drop 1 val) type ParseArgsState = ((Maybe FilePath, Maybe FilePath, RList CppOption), (RList String, RList String))