hjs 0.1 → 0.2
raw patch · 162 files changed
+22369/−3126 lines, 162 filesdep +parsecdep +regex-compatdep −alexdep −happybinary-added
Dependencies added: parsec, regex-compat
Dependencies removed: alex, happy
Files
- .setup-config +1/−1
- AUTHORS +2/−1
- LICENSE +4/−0
- README +22/−0
- Setup.hi binary
- Setup.o binary
- TODO +39/−0
- dist/HJS-0.1.tar.gz binary
- doc/HJS-Interpreter-Host.html +166/−0
- doc/HJS-Interpreter-Interp.html +558/−0
- doc/HJS-Interpreter-InterpM.html +1562/−0
- doc/HJS-Interpreter-Object.html +82/−0
- doc/HJS-Interpreter.html +118/−0
- doc/HJS-Parser-JavaScript.html +3790/−0
- doc/HJS-Parser-LexerM.html +114/−0
- doc/HJS-Parser-ParserMonad.html +439/−0
- doc/HJS-Parser-Regex.html +82/−0
- doc/Main.html +121/−0
- doc/T.html +221/−0
- doc/T2.html +128/−0
- doc/doc-index-A.html +330/−0
- doc/doc-index-B.html +274/−0
- doc/doc-index-C.html +366/−0
- doc/doc-index-D.html +254/−0
- doc/doc-index-E.html +226/−0
- doc/doc-index-F.html +194/−0
- doc/doc-index-G.html +234/−0
- doc/doc-index-H.html +150/−0
- doc/doc-index-I.html +338/−0
- doc/doc-index-J.html +182/−0
- doc/doc-index-K.html +150/−0
- doc/doc-index-L.html +352/−0
- doc/doc-index-M.html +254/−0
- doc/doc-index-N.html +254/−0
- doc/doc-index-O.html +186/−0
- doc/doc-index-P.html +378/−0
- doc/doc-index-R.html +246/−0
- doc/doc-index-S.html +258/−0
- doc/doc-index-T.html +378/−0
- doc/doc-index-U.html +198/−0
- doc/doc-index-V.html +202/−0
- doc/doc-index-W.html +158/−0
- doc/doc-index.html +136/−0
- doc/haddock.css +235/−0
- doc/haddock.js +15/−0
- doc/haskell_icon.gif binary
- doc/index.html +215/−0
- doc/minus.gif binary
- doc/plus.gif binary
- hjs.cabal +7/−10
- makedoc.bat +2/−0
- src/HJS/Interpreter.hs +79/−0
- src/HJS/Interpreter.hs~ +60/−0
- src/HJS/Interpreter/Array.hs +52/−0
- src/HJS/Interpreter/Debugger.hs +94/−0
- src/HJS/Interpreter/Debugger.hs~ +5/−0
- src/HJS/Interpreter/Error.hs +29/−0
- src/HJS/Interpreter/Eval.hs +17/−0
- src/HJS/Interpreter/Eval.hs-boot +4/−0
- src/HJS/Interpreter/Eval.hs~ +5/−0
- src/HJS/Interpreter/Function.hs +26/−0
- src/HJS/Interpreter/Host.hs +114/−0
- src/HJS/Interpreter/Host.hs~ +107/−0
- src/HJS/Interpreter/Interp.hs +423/−60
- src/HJS/Interpreter/Interp.hs-boot +7/−0
- src/HJS/Interpreter/Interp.hs~ +561/−0
- src/HJS/Interpreter/InterpM.hs +622/−0
- src/HJS/Interpreter/InterpM.hs~ +581/−0
- src/HJS/Interpreter/InterpMDecl.hs +96/−0
- src/HJS/Interpreter/InterpMDecl.hs~ +77/−0
- src/HJS/Interpreter/Object.hs +52/−0
- src/HJS/Interpreter/ObjectBasic.hs +9/−0
- src/HJS/Interpreter/Printf.hs +290/−0
- src/HJS/Interpreter/Printf.hs~ +278/−0
- src/HJS/Interpreter/Regex.hs +58/−0
- src/HJS/Interpreter/String.hs +38/−0
- src/HJS/Interpreter/String.hs~ +38/−0
- src/HJS/Interpreter/T.hs +12/−0
- src/HJS/Interpreter/T.hs~ +5/−0
- src/HJS/Interpreter/Value.hs +0/−0
- src/HJS/Interpreter/VarArgs.hs +14/−0
- src/HJS/Interpreter/VarArgs.hs~ +13/−0
- src/HJS/Parser.hs +11/−0
- src/HJS/Parser/JavaScript.hs +26/−15
- src/HJS/Parser/JavaScriptParser.hs +354/−2021
- src/HJS/Parser/JavaScriptParser.y +0/−431
- src/HJS/Parser/Lexer.hs +121/−213
- src/HJS/Parser/Lexer.x +0/−83
- src/HJS/Parser/LexerM.hs +0/−97
- src/HJS/Parser/ParserMonad.hs +0/−40
- src/HJS/Parser/Prim.hs +115/−0
- src/HJS/Parser/Regex.hs +0/−68
- src/HJS/Parser/Utils.hs +20/−0
- src/Main.hs +34/−29
- src/Main.hs~ +142/−0
- testsuite/0_helloworld.js +1/−0
- testsuite/100_animals.js +19/−0
- testsuite/101_inheritance.js +136/−0
- testsuite/101a_in.js +2/−0
- testsuite/10_expressions.js +7/−0
- testsuite/11_funcs_factorial.js +9/−0
- testsuite/12_array.js +14/−0
- testsuite/12_funcs_ackermann.js +8/−0
- testsuite/12_iter.js +30/−0
- testsuite/13_cast.js +13/−0
- testsuite/14_new.js +10/−0
- testsuite/15_tostring.js +17/−0
- testsuite/16_funcs.js +14/−0
- testsuite/16_literals.js +45/−0
- testsuite/16_literals.js~ +43/−0
- testsuite/17_funcs_caller.js +16/−0
- testsuite/18_funcs_apply.js +25/−0
- testsuite/19_func_body.js +17/−0
- testsuite/21_print.js +2/−0
- testsuite/23_switch.js +11/−0
- testsuite/24_switch.js +31/−0
- testsuite/25_regex.js +16/−0
- testsuite/26_regex.js +20/−0
- testsuite/34_throw.js +27/−0
- testsuite/35_throw.js +31/−0
- testsuite/36_throw.js +66/−0
- testsuite/56_arguments.js +17/−0
- testsuite/5_object.js +25/−0
- testsuite/67_method.js +17/−0
- testsuite/6_this.js +11/−0
- testsuite/79_throw.js +25/−0
- testsuite/90_class.js +20/−0
- testsuite/97_funcproto.js +7/−0
- testsuite/99_all.js +16/−0
- testsuite/9_functions.js +19/−0
- testsuite/inherit.html +125/−0
- testsuite/parsingonly/01_semi1.js +6/−0
- testsuite/parsingonly/02_semicolon.js +2/−2
- testsuite/parsingonly/02_sm.js +8/−0
- testsuite/parsingonly/03_sm.js +11/−0
- testsuite/parsingonly/05_comments_simple.js +10/−0
- testsuite/parsingonly/05_regex.js +6/−0
- testsuite/parsingonly/06_block.js +7/−0
- testsuite/parsingonly/06_callexpr.js +8/−0
- testsuite/parsingonly/06_newexpr.js +4/−0
- testsuite/parsingonly/06_var.js +7/−0
- testsuite/parsingonly/07_expr.js +14/−0
- testsuite/parsingonly/101_inheritance.js +122/−0
- testsuite/parsingonly/10_switch.js +36/−0
- testsuite/parsingonly/122_jsexec.js +3/−3
- testsuite/parsingonly/130_htojs.js +2725/−0
- testsuite/parsingonly/130s.js +4/−0
- testsuite/parsingonly/14_labelled_stmts.js +33/−0
- testsuite/parsingonly/15_literals.js +1/−28
- testsuite/parsingonly/16_literals.js +43/−0
- testsuite/parsingonly/1_simple.js +1/−0
- testsuite/parsingonly/20_statements.js +66/−3
- testsuite/parsingonly/25_trycatch.js +21/−2
- testsuite/parsingonly/40_functions.js +4/−1
- testsuite/parsingonly/41_functions.js +1/−0
- testsuite/parsingonly/5_comments.js +19/−1
- testsuite/parsingonly/67_bob.js +64/−0
- testsuite/parsingonly/js.html +8/−0
- testsuite/parsingonly/regex.txt +0/−2
- testsuite/x.html +13/−0
- utils/FixHappy.exe binary
- utils/FixHappy.hs +0/−15
.setup-config view
@@ -1,1 +1,1 @@-LocalBuildInfo {prefix = "C:\\Program Files", bindir = "$prefix\\Haskell\\bin", libdir = "$prefix\\Haskell", libsubdir = "$pkgid\\$compiler", libexecdir = "$prefix\\$pkgid", datadir = "$prefix\\Haskell", datasubdir = "$pkgid", compiler = Compiler {compilerFlavor = GHC, compilerVersion = Version {versionBranch = [6,6], versionTags = []}, compilerPath = "c:\\Software\\haskell\\ghc-6.6.0\\bin\\ghc.exe", compilerPkgTool = "c:\\Software\\haskell\\ghc-6.6.0\\bin\\ghc-pkg.exe"}, buildDir = "dist\\build", packageDeps = [PackageIdentifier {pkgName = "base", pkgVersion = Version {versionBranch = [2,0], versionTags = []}},PackageIdentifier {pkgName = "happy", pkgVersion = Version {versionBranch = [1,16], versionTags = []}},PackageIdentifier {pkgName = "alex", pkgVersion = Version {versionBranch = [2,1,0], versionTags = []}},PackageIdentifier {pkgName = "mtl", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}], withPrograms = [("ar",Program {programName = "ar", programBinName = "ar", programArgs = [], programLocation = FoundOnSystem "c:\\Software\\haskell\\ghc-6.6.0\\bin\\ar.exe"}),("haddock",Program {programName = "haddock", programBinName = "haddock", programArgs = [], programLocation = EmptyLocation}),("pfesetup",Program {programName = "pfesetup", programBinName = "pfesetup", programArgs = [], programLocation = EmptyLocation}),("ranlib",Program {programName = "ranlib", programBinName = "ranlib", programArgs = [], programLocation = FoundOnSystem "c:\\Software\\MinGW\\bin\\ranlib.exe"}),("runghc",Program {programName = "runghc", programBinName = "runghc", programArgs = [], programLocation = FoundOnSystem "c:\\Software\\haskell\\ghc-6.6.0\\bin\\runghc.exe"}),("runhugs",Program {programName = "runhugs", programBinName = "runhugs", programArgs = [], programLocation = FoundOnSystem "c:\\software\\hugs98\\runhugs.exe"})], userConf = False, withHappy = Just "c:\\Software\\haskell\\happy\\happy-1.16\\happy.exe", withAlex = Just "c:\\Software\\haskell\\alex\\alex-2.1.0\\alex.exe", withHsc2hs = Just "c:\\Software\\haskell\\ghc-6.6.0\\bin\\hsc2hs.exe", withC2hs = Nothing, withCpphs = Nothing, withGreencard = Nothing, withVanillaLib = True, withProfLib = False, withProfExe = False, withGHCiLib = True, splitObjs = False}+LocalBuildInfo {prefix = "C:\\Program Files", bindir = "$prefix\\Haskell\\bin", libdir = "$prefix\\Haskell", libsubdir = "$pkgid\\$compiler", libexecdir = "$prefix\\$pkgid", datadir = "$prefix\\Haskell", datasubdir = "$pkgid", compiler = Compiler {compilerFlavor = GHC, compilerVersion = Version {versionBranch = [6,6], versionTags = []}, compilerPath = "C:\\Software\\haskell\\ghc-6.6.0\\bin\\ghc.exe", compilerPkgTool = "C:\\Software\\haskell\\ghc-6.6.0\\bin\\ghc-pkg.exe"}, buildDir = "dist\\build", packageDeps = [PackageIdentifier {pkgName = "base", pkgVersion = Version {versionBranch = [2,0], versionTags = []}},PackageIdentifier {pkgName = "parsec", pkgVersion = Version {versionBranch = [2,0], versionTags = []}},PackageIdentifier {pkgName = "mtl", pkgVersion = Version {versionBranch = [1,0], versionTags = []}},PackageIdentifier {pkgName = "regex-compat", pkgVersion = Version {versionBranch = [0,71], versionTags = []}}], withPrograms = [("ar",Program {programName = "ar", programBinName = "ar", programArgs = [], programLocation = FoundOnSystem "C:\\Software\\haskell\\ghc-6.6.0\\bin\\ar.exe"}),("haddock",Program {programName = "haddock", programBinName = "haddock", programArgs = [], programLocation = EmptyLocation}),("pfesetup",Program {programName = "pfesetup", programBinName = "pfesetup", programArgs = [], programLocation = EmptyLocation}),("ranlib",Program {programName = "ranlib", programBinName = "ranlib", programArgs = [], programLocation = EmptyLocation}),("runghc",Program {programName = "runghc", programBinName = "runghc", programArgs = [], programLocation = FoundOnSystem "C:\\Software\\haskell\\ghc-6.6.0\\bin\\runghc.exe"}),("runhugs",Program {programName = "runhugs", programBinName = "runhugs", programArgs = [], programLocation = FoundOnSystem "c:\\software\\hugs98\\runhugs.exe"})], userConf = False, withHappy = Just "C:\\Software\\haskell\\happy\\happy-1.16\\happy.exe", withAlex = Just "C:\\Software\\haskell\\alex\\alex-2.1.0\\alex.exe", withHsc2hs = Just "C:\\Software\\haskell\\ghc-6.6.0\\bin\\hsc2hs.exe", withC2hs = Nothing, withCpphs = Nothing, withGreencard = Nothing, withVanillaLib = True, withProfLib = False, withProfExe = False, withGHCiLib = True, splitObjs = False}
AUTHORS view
@@ -1,1 +1,2 @@-Mark Wassell mwassell@bigpond.net.au+Mark Wassell mwassell@bigpond.net.au +Example code are authored as indicated.
LICENSE view
@@ -1,3 +1,7 @@+Example code is licensed as indicated in the source files.++Other code is licensed:+ Copyright 2007, Mark Wassell All rights reserved.
+ README view
@@ -0,0 +1,22 @@+HJS - Haskell JavaScript + +Many examples in the testsuite taken from http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference + +This is a development version; don't expect everything to work and to be clear. + +Documentation can be found at http://www.haskell.org/haskellwiki/Libraries_and_tools/HJS + +Installation +============= + +runhaskell.exe Setup.hs configure +runhaskell.exe Setup.hs build + +Quick test after build: + +dist\build\hjs\hjs.exe .\testsuite\0_helloworld.js + +To package up for Hackage (sdist doesn't work) + +tar cvf hjs-0.2.tar hjs-0.2 +gzip hjs-0.2.tar
+ Setup.hi view
binary file changed (absent → 304 bytes)
+ Setup.o view
binary file changed (absent → 1577 bytes)
+ TODO view
@@ -0,0 +1,39 @@+Parser +======= + +Reporting of errors reports for top level construct - not very usefull +Revisit 'new new' + +Rationalise parse tests around productions in parser + +Review handling of whiteSpace (ie occurances of whiteSpace scattered throughout) + +Review error handling and use of try - it seems that excessive use can block where real occurance of error occurs.but results, on first attempt, in more errors + +Interpreter +============ + +Handling inbuilt arrays and Array object + +DONE getValue should go up __proto__ chain +DONE Make this work +for 'new', setup newobject, set __proto__ to be prototype of constructor and set 'this' of the call to be the newobject + +DONE Add a ObjId type so that it can be distinguished from Int + + +'constructor' property of the 'prototype' of a function is the function itself. ie 'this.prototype.constructor == this' + + +Interp - +Think about if Rel needs to be a value +Add Object and Array to Value +Fix code for relops to work. Problem with LiftIt; add Bool to Value... + + +Add eval option to hjs; to evaluate an expression which can be a function call + +Name moduels after the haskell ones and use same functions ... +http://haskell.org/ghc/docs/latest/html/libraries/haskell-src/Language-Haskell-Parser.html +If interested using pprint as well from Language.Haskell +
− dist/HJS-0.1.tar.gz
binary file changed (20 → absent bytes)
+ doc/HJS-Interpreter-Host.html view
@@ -0,0 +1,166 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +>HJS.Interpreter.Host</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +><SCRIPT SRC="haddock.js" TYPE="text/javascript" +></SCRIPT +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="modulebar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><FONT SIZE="6" +>HJS.Interpreter.Host</FONT +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="section1" +>Documentation</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AgetArgs" +></A +><B +>getArgs</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> [<A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +>]</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3Aprint%27" +></A +><B +>print'</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AputBuiltIn" +></A +><B +>putBuiltIn</B +> :: Int -> String -> [String] -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +> -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> ()</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AobjectConstructor" +></A +><B +>objectConstructor</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AaddBuiltIn" +></A +><B +>addBuiltIn</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> ()</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="botbar" +>Produced by <A HREF="http://www.haskell.org/haddock/" +>Haddock</A +> version 0.7</TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/HJS-Interpreter-Interp.html view
@@ -0,0 +1,558 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +>HJS.Interpreter.Interp</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +><SCRIPT SRC="haddock.js" TYPE="text/javascript" +></SCRIPT +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="modulebar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><FONT SIZE="6" +>HJS.Interpreter.Interp</FONT +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="section1" +>Documentation</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AMyError" +></A +><B +>MyError</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ANoMsg" +></A +><B +>NoMsg</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AMsg" +></A +><B +>Msg</B +> String</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:MyError')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:MyError" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Error <A HREF="HJS-Interpreter-Interp.html#t%3AMyError" +>MyError</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Interpreter-Interp.html#t%3AMyError" +>MyError</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>class</SPAN +> <A NAME="t%3AInterpC" +></A +><B +>InterpC</B +> t <SPAN CLASS="keyword" +>where</SPAN +></TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="s8" +></TD +></TR +><TR +><TD CLASS="section4" +>Methods</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A NAME="v%3Ainterp" +></A +><B +>interp</B +> :: t -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s8" +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:InterpC')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:InterpC" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AAddExpr" +>AddExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AAssignE" +>AssignE</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitAnd" +>BitAnd</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitOR" +>BitOR</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitXOR" +>BitXOR</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ACallExpr" +>CallExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ACondE" +>CondE</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AEqualE" +>EqualE</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AFuncDecl" +>FuncDecl</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AIfStmt" +>IfStmt</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AItStmt" +>ItStmt</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AJSProgram" +>JSProgram</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ALeftExpr" +>LeftExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ALiteral" +>Literal</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ALogAnd" +>LogAnd</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ALogOr" +>LogOr</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AMemberExpr" +>MemberExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AMultExpr" +>MultExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ANewExpr" +>NewExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3ANull" +>Null</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3APostFix" +>PostFix</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3APrimExpr" +>PrimExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>RelE</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AShiftE" +>ShiftE</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ASourceElement" +>SourceElement</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AVarDecl" +>VarDecl</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> a => <A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> (Maybe a)</TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> a => <A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> [a]</TD +></TR +><TR +><TD CLASS="decl" +>(<A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> t1, <A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> t2) => <A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> (Either t1 t2)</TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AinterpList" +></A +><B +>interpList</B +> :: <A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> a => [a] -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AliftIt" +></A +><B +>liftIt</B +> :: (<A HREF="HJS-Interpreter-InterpM.html#t%3ASubType" +>SubType</A +> sub <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +>, <A HREF="HJS-Interpreter-InterpM.html#t%3ASubType" +>SubType</A +> sub1 <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +>, <A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> t1, <A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> t) => (sub -> sub1 -> Int) -> t -> t1 -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AliftIt3" +></A +><B +>liftIt3</B +> :: (<A HREF="HJS-Interpreter-InterpM.html#t%3ASubType" +>SubType</A +> sub <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +>, <A HREF="HJS-Interpreter-InterpM.html#t%3ASubType" +>SubType</A +> sub1 <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +>) => (sub -> sub1 -> Int) -> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +> -> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +> -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="botbar" +>Produced by <A HREF="http://www.haskell.org/haddock/" +>Haddock</A +> version 0.7</TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/HJS-Interpreter-InterpM.html view
@@ -0,0 +1,1562 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +>HJS.Interpreter.InterpM</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +><SCRIPT SRC="haddock.js" TYPE="text/javascript" +></SCRIPT +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="modulebar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><FONT SIZE="6" +>HJS.Interpreter.InterpM</FONT +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="section1" +>Documentation</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>class</SPAN +> <A NAME="t%3AConvert" +></A +><B +>Convert</B +> a <SPAN CLASS="keyword" +>where</SPAN +></TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="s8" +></TD +></TR +><TR +><TD CLASS="section4" +>Methods</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A NAME="v%3AtoBoolean" +></A +><B +>toBoolean</B +> :: a -> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +></TR +><TR +><TD CLASS="s8" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AtoNumber" +></A +><B +>toNumber</B +> :: a -> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +></TR +><TR +><TD CLASS="s8" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AtoString" +></A +><B +>toString</B +> :: a -> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +></TR +><TR +><TD CLASS="s8" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AisUndefined" +></A +><B +>isUndefined</B +> :: a -> Bool</TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s8" +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Convert')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:Convert" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> Bool</TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3ABreakContinue" +>BreakContinue</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3ACallValue" +>CallValue</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> Int</TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3ANull" +>Null</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3ARef" +>Ref</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> String</TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AUndefined" +>Undefined</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> ()</TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> [Int]</TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> [<A HREF="HJS-Parser-JavaScript.html#t%3ASourceElement" +>SourceElement</A +>]</TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> [String]</TD +></TR +><TR +><TD CLASS="decl" +>(<A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> a, <A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> b) => <A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> (Either a b)</TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>class</SPAN +> <A NAME="t%3ASubType" +></A +><B +>SubType</B +> sub sup <SPAN CLASS="keyword" +>where</SPAN +></TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="s8" +></TD +></TR +><TR +><TD CLASS="section4" +>Methods</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A NAME="v%3Ainj" +></A +><B +>inj</B +> :: sub -> sup</TD +></TR +><TR +><TD CLASS="s8" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3Aprj" +></A +><B +>prj</B +> :: sup -> Maybe sub</TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s8" +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:SubType')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:SubType" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3ASubType" +>SubType</A +> sub ()</TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3ASubType" +>SubType</A +> a (Either a b)</TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3ASubType" +>SubType</A +> a b => <A HREF="HJS-Interpreter-InterpM.html#t%3ASubType" +>SubType</A +> a (Either c b)</TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AtoRealInt" +></A +><B +>toRealInt</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> a => a -> Int</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AtoRealString" +></A +><B +>toRealString</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> a => a -> String</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AtoRealBool" +></A +><B +>toRealBool</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> a => a -> Bool</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ARef" +></A +><B +>Ref</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ARef" +></A +><B +>Ref</B +> String</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ARefObj" +></A +><B +>RefObj</B +> Int String</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Ref')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:Ref" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3ARef" +>Ref</A +></TD +></TR +><TR +><TD CLASS="decl" +>Eq <A HREF="HJS-Interpreter-InterpM.html#t%3ARef" +>Ref</A +></TD +></TR +><TR +><TD CLASS="decl" +>Ord <A HREF="HJS-Interpreter-InterpM.html#t%3ARef" +>Ref</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Interpreter-InterpM.html#t%3ARef" +>Ref</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AUndefined" +></A +><B +>Undefined</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AUndefined" +></A +><B +>Undefined</B +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Undefined')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:Undefined" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AUndefined" +>Undefined</A +></TD +></TR +><TR +><TD CLASS="decl" +>Eq <A HREF="HJS-Interpreter-InterpM.html#t%3AUndefined" +>Undefined</A +></TD +></TR +><TR +><TD CLASS="decl" +>Ord <A HREF="HJS-Interpreter-InterpM.html#t%3AUndefined" +>Undefined</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Interpreter-InterpM.html#t%3AUndefined" +>Undefined</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ANull" +></A +><B +>Null</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ANull" +></A +><B +>Null</B +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Null')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:Null" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3ANull" +>Null</A +></TD +></TR +><TR +><TD CLASS="decl" +>Eq <A HREF="HJS-Interpreter-InterpM.html#t%3ANull" +>Null</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3ANull" +>Null</A +></TD +></TR +><TR +><TD CLASS="decl" +>Ord <A HREF="HJS-Interpreter-InterpM.html#t%3ANull" +>Null</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Interpreter-InterpM.html#t%3ANull" +>Null</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ACallValue" +></A +><B +>CallValue</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ACallJS" +></A +><B +>CallJS</B +> [<A HREF="HJS-Parser-JavaScript.html#t%3ASourceElement" +>SourceElement</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ACallBuiltIn" +></A +><B +>CallBuiltIn</B +> (<A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +>)</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:CallValue')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:CallValue" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3ACallValue" +>CallValue</A +></TD +></TR +><TR +><TD CLASS="decl" +>Eq <A HREF="HJS-Interpreter-InterpM.html#t%3ACallValue" +>CallValue</A +></TD +></TR +><TR +><TD CLASS="decl" +>Ord <A HREF="HJS-Interpreter-InterpM.html#t%3ACallValue" +>CallValue</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Interpreter-InterpM.html#t%3ACallValue" +>CallValue</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ABreakContinue" +></A +><B +>BreakContinue</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ABreak" +></A +><B +>Break</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AContinue" +></A +><B +>Continue</B +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:BreakContinue')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:BreakContinue" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3ABreakContinue" +>BreakContinue</A +></TD +></TR +><TR +><TD CLASS="decl" +>Eq <A HREF="HJS-Interpreter-InterpM.html#t%3ABreakContinue" +>BreakContinue</A +></TD +></TR +><TR +><TD CLASS="decl" +>Ord <A HREF="HJS-Interpreter-InterpM.html#t%3ABreakContinue" +>BreakContinue</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Interpreter-InterpM.html#t%3ABreakContinue" +>BreakContinue</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AArgList" +></A +><B +>ArgList</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AArgList" +></A +><B +>ArgList</B +> [String]</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AVarArgList" +></A +><B +>VarArgList</B +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>type</SPAN +> <A NAME="t%3AValue" +></A +><B +>Value</B +> = Either Int (Either String (Either Bool (Either <A HREF="HJS-Interpreter-InterpM.html#t%3AUndefined" +>Undefined</A +> (Either <A HREF="HJS-Interpreter-InterpM.html#t%3ANull" +>Null</A +> (Either <A HREF="HJS-Interpreter-InterpM.html#t%3ARef" +>Ref</A +> (Either [Int] (Either <A HREF="HJS-Interpreter-InterpM.html#t%3ACallValue" +>CallValue</A +> (Either [String] (Either <A HREF="HJS-Interpreter-InterpM.html#t%3ABreakContinue" +>BreakContinue</A +> ())))))))))</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AAttribute" +></A +><B +>Attribute</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AReadOnly" +></A +><B +>ReadOnly</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ADontEnum" +></A +><B +>DontEnum</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ADontDelete" +></A +><B +>DontDelete</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AInternal" +></A +><B +>Internal</B +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Attribute')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:Attribute" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Eq <A HREF="HJS-Interpreter-InterpM.html#t%3AAttribute" +>Attribute</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Interpreter-InterpM.html#t%3AAttribute" +>Attribute</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AObject" +></A +><B +>Object</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AObject" +></A +><B +>Object</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="body" COLSPAN="2" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3Aprototype" +></A +><B +>prototype</B +> :: (Maybe Int)</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3Aklass" +></A +><B +>klass</B +> :: String</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3Avalue" +></A +><B +>value</B +> :: (Maybe <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +>)</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3Aproperties" +></A +><B +>properties</B +> :: (Map String (<A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +>, [<A HREF="HJS-Interpreter-InterpM.html#t%3AAttribute" +>Attribute</A +>]))</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Object')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:Object" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Interpreter-InterpM.html#t%3AObject" +>Object</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AgetObject" +></A +><B +>getObject</B +> :: Int -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AObject" +>Object</A +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AputObject" +></A +><B +>putObject</B +> :: Int -> <A HREF="HJS-Interpreter-InterpM.html#t%3AObject" +>Object</A +> -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> ()</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AgetProperty%27" +></A +><B +>getProperty'</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AObject" +>Object</A +> -> String -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AgetProperty" +></A +><B +>getProperty</B +> :: Int -> String -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AputProperty" +></A +><B +>putProperty</B +> :: Int -> String -> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +> -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> ()</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AcanPut" +></A +><B +>canPut</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AObject" +>Object</A +> -> String -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> Bool</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AhasProperty" +></A +><B +>hasProperty</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AObject" +>Object</A +> -> String -> Bool</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AdeleteProperty" +></A +><B +>deleteProperty</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AObject" +>Object</A +> -> String -> <A HREF="HJS-Interpreter-InterpM.html#t%3AObject" +>Object</A +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AnewObject" +></A +><B +>newObject</B +> :: String -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> Int</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AgetValue" +></A +><B +>getValue</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +> -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AgetValue%27" +></A +><B +>getValue'</B +> :: [Int] -> String -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AputValue" +></A +><B +>putValue</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +> -> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +> -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> ()</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AnewBuiltInFunction" +></A +><B +>newBuiltInFunction</B +> :: [String] -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +> -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> Int</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>type</SPAN +> <A NAME="t%3ACtx" +></A +><B +>Ctx</B +> = ([Int], Int, Int)</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>type</SPAN +> <A NAME="t%3AJSState" +></A +><B +>JSState</B +> = ([<A HREF="HJS-Interpreter-InterpM.html#t%3ACtx" +>Ctx</A +>], Map Int <A HREF="HJS-Interpreter-InterpM.html#t%3AObject" +>Object</A +>)</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AThrowable" +></A +><B +>Throwable</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AThrowReturn" +></A +><B +>ThrowReturn</B +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AThrowBreak" +></A +><B +>ThrowBreak</B +> (Maybe String)</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AThrowContinue" +></A +><B +>ThrowContinue</B +> (Maybe String)</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AThrowException" +></A +><B +>ThrowException</B +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AThrowTypeError" +></A +><B +>ThrowTypeError</B +> String</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AThrowInternalError" +></A +><B +>ThrowInternalError</B +> String</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Throwable')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:Throwable" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Error <A HREF="HJS-Interpreter-InterpM.html#t%3AThrowable" +>Throwable</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Interpreter-InterpM.html#t%3AThrowable" +>Throwable</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>type</SPAN +> <A NAME="t%3AInterpM" +></A +><B +>InterpM</B +> = ErrorT <A HREF="HJS-Interpreter-InterpM.html#t%3AThrowable" +>Throwable</A +> (StateT <A HREF="HJS-Interpreter-InterpM.html#t%3AJSState" +>JSState</A +> Identity)</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AputGlobalContext" +></A +><B +>putGlobalContext</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> ()</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3ApushContext" +></A +><B +>pushContext</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3ACtx" +>Ctx</A +> -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> ()</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3ApopContext" +></A +><B +>popContext</B +> :: <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> ()</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="botbar" +>Produced by <A HREF="http://www.haskell.org/haddock/" +>Haddock</A +> version 0.7</TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/HJS-Interpreter-Object.html view
@@ -0,0 +1,82 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +>HJS.Interpreter.Object</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +><SCRIPT SRC="haddock.js" TYPE="text/javascript" +></SCRIPT +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="modulebar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><FONT SIZE="6" +>HJS.Interpreter.Object</FONT +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="botbar" +>Produced by <A HREF="http://www.haskell.org/haddock/" +>Haddock</A +> version 0.7</TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/HJS-Interpreter.html view
@@ -0,0 +1,118 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +>HJS.Interpreter</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +><SCRIPT SRC="haddock.js" TYPE="text/javascript" +></SCRIPT +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="modulebar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><FONT SIZE="6" +>HJS.Interpreter</FONT +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="section1" +>Documentation</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3ArunInterp" +></A +><B +>runInterp</B +> :: <A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> p => p -> <A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>InterpM</A +> <A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>Value</A +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3ArunProgram" +></A +><B +>runProgram</B +> :: <A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> a => Bool -> a -> IO Bool</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="botbar" +>Produced by <A HREF="http://www.haskell.org/haddock/" +>Haddock</A +> version 0.7</TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/HJS-Parser-JavaScript.html view
@@ -0,0 +1,3790 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +>HJS.Parser.JavaScript</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +><SCRIPT SRC="haddock.js" TYPE="text/javascript" +></SCRIPT +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="modulebar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><FONT SIZE="6" +>HJS.Parser.JavaScript</FONT +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="section1" +>Documentation</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>class</SPAN +> <A NAME="t%3AEmitHaskell" +></A +><B +>EmitHaskell</B +> a <SPAN CLASS="keyword" +>where</SPAN +></TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="s8" +></TD +></TR +><TR +><TD CLASS="section4" +>Methods</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A NAME="v%3AeHs" +></A +><B +>eHs</B +> :: a -> String</TD +></TR +></TABLE +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ALiteral" +></A +><B +>Literal</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ALitInt" +></A +><B +>LitInt</B +> Int</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ALitString" +></A +><B +>LitString</B +> String</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Literal')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:Literal" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ALiteral" +>Literal</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ALiteral" +>Literal</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3APrimExpr" +></A +><B +>PrimExpr</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ALiteral" +></A +><B +>Literal</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ALiteral" +>Literal</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AIdent" +></A +><B +>Ident</B +> String</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ABrack" +></A +><B +>Brack</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AThis" +></A +><B +>This</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ARegex" +></A +><B +>Regex</B +> String</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AArray" +></A +><B +>Array</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AArrayLit" +>ArrayLit</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AObject" +></A +><B +>Object</B +> [Either (<A HREF="HJS-Parser-JavaScript.html#t%3APropName" +>PropName</A +>, <A HREF="HJS-Parser-JavaScript.html#t%3AAssignE" +>AssignE</A +>) <A HREF="HJS-Parser-JavaScript.html#t%3AGetterPutter" +>GetterPutter</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:PrimExpr')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:PrimExpr" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3APrimExpr" +>PrimExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3APrimExpr" +>PrimExpr</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AGetterPutter" +></A +><B +>GetterPutter</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AGetterPutter" +></A +><B +>GetterPutter</B +> String <A HREF="HJS-Parser-JavaScript.html#t%3AFuncDecl" +>FuncDecl</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3APutter" +></A +><B +>Putter</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AFuncDecl" +>FuncDecl</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:GetterPutter')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:GetterPutter" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AGetterPutter" +>GetterPutter</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3APropName" +></A +><B +>PropName</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3APropNameId" +></A +><B +>PropNameId</B +> String</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3APropNameStr" +></A +><B +>PropNameStr</B +> String</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3APropNameInt" +></A +><B +>PropNameInt</B +> Int</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:PropName')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:PropName" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3APropName" +>PropName</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AArrayLit" +></A +><B +>ArrayLit</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AArrSimple" +></A +><B +>ArrSimple</B +> [<A HREF="HJS-Parser-JavaScript.html#t%3AAssignE" +>AssignE</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ArrayLit')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:ArrayLit" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AArrayLit" +>ArrayLit</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AMemberExpr" +></A +><B +>MemberExpr</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AMemPrimExpr" +></A +><B +>MemPrimExpr</B +> <A HREF="HJS-Parser-JavaScript.html#t%3APrimExpr" +>PrimExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AArrayExpr" +></A +><B +>ArrayExpr</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AMemberExpr" +>MemberExpr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AMemberNew" +></A +><B +>MemberNew</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AMemberExpr" +>MemberExpr</A +> [<A HREF="HJS-Parser-JavaScript.html#t%3AAssignE" +>AssignE</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AMemberCall" +></A +><B +>MemberCall</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AMemberExpr" +>MemberExpr</A +> String</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:MemberExpr')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:MemberExpr" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AMemberExpr" +>MemberExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AMemberExpr" +>MemberExpr</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ACallExpr" +></A +><B +>CallExpr</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ACallMember" +></A +><B +>CallMember</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AMemberExpr" +>MemberExpr</A +> [<A HREF="HJS-Parser-JavaScript.html#t%3AAssignE" +>AssignE</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ACallCall" +></A +><B +>CallCall</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ACallExpr" +>CallExpr</A +> [<A HREF="HJS-Parser-JavaScript.html#t%3AAssignE" +>AssignE</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ACallSquare" +></A +><B +>CallSquare</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ACallExpr" +>CallExpr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ACallDot" +></A +><B +>CallDot</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ACallExpr" +>CallExpr</A +> String</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:CallExpr')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:CallExpr" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ACallExpr" +>CallExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ACallExpr" +>CallExpr</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ANewExpr" +></A +><B +>NewExpr</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AMemberExpr" +></A +><B +>MemberExpr</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AMemberExpr" +>MemberExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ANewNewExpr" +></A +><B +>NewNewExpr</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ANewExpr" +>NewExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:NewExpr')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:NewExpr" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ANewExpr" +>NewExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ANewExpr" +>NewExpr</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ALeftExpr" +></A +><B +>LeftExpr</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ANewExpr" +></A +><B +>NewExpr</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ANewExpr" +>NewExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ACallExpr" +></A +><B +>CallExpr</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ACallExpr" +>CallExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:LeftExpr')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:LeftExpr" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ALeftExpr" +>LeftExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ALeftExpr" +>LeftExpr</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3APostFix" +></A +><B +>PostFix</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ALeftExpr" +></A +><B +>LeftExpr</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ALeftExpr" +>LeftExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3APostInc" +></A +><B +>PostInc</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ALeftExpr" +>LeftExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3APostDec" +></A +><B +>PostDec</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ALeftExpr" +>LeftExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:PostFix')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:PostFix" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3APostFix" +>PostFix</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3APostFix" +>PostFix</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AUExpr" +></A +><B +>UExpr</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3APostFix" +></A +><B +>PostFix</B +> <A HREF="HJS-Parser-JavaScript.html#t%3APostFix" +>PostFix</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ADelete" +></A +><B +>Delete</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AVoid" +></A +><B +>Void</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ATypeOf" +></A +><B +>TypeOf</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ADoublePlus" +></A +><B +>DoublePlus</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ADoubleMinus" +></A +><B +>DoubleMinus</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AUnaryPlus" +></A +><B +>UnaryPlus</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AUnaryMinus" +></A +><B +>UnaryMinus</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ANot" +></A +><B +>Not</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ABitNot" +></A +><B +>BitNot</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:UExpr')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:UExpr" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AMultExpr" +></A +><B +>MultExpr</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AUExpr" +></A +><B +>UExpr</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ATimes" +></A +><B +>Times</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AMultExpr" +>MultExpr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ADiv" +></A +><B +>Div</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AMultExpr" +>MultExpr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AMod" +></A +><B +>Mod</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AMultExpr" +>MultExpr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>UExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:MultExpr')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:MultExpr" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AMultExpr" +>MultExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AMultExpr" +>MultExpr</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AAddExpr" +></A +><B +>AddExpr</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AMultExpr" +></A +><B +>MultExpr</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AMultExpr" +>MultExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3APlus" +></A +><B +>Plus</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AAddExpr" +>AddExpr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AMultExpr" +>MultExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AMinus" +></A +><B +>Minus</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AAddExpr" +>AddExpr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AMultExpr" +>MultExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:AddExpr')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:AddExpr" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AAddExpr" +>AddExpr</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AAddExpr" +>AddExpr</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AShiftE" +></A +><B +>ShiftE</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AAddExpr" +></A +><B +>AddExpr</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AAddExpr" +>AddExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AShiftLeft" +></A +><B +>ShiftLeft</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AShiftE" +>ShiftE</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AAddExpr" +>AddExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AShiftRight" +></A +><B +>ShiftRight</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AShiftE" +>ShiftE</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AAddExpr" +>AddExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AShiftRight2" +></A +><B +>ShiftRight2</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AShiftE" +>ShiftE</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AAddExpr" +>AddExpr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ShiftE')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:ShiftE" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AShiftE" +>ShiftE</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AShiftE" +>ShiftE</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ARelE" +></A +><B +>RelE</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AShiftE" +></A +><B +>ShiftE</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AShiftE" +>ShiftE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ALessThan" +></A +><B +>LessThan</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>RelE</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AShiftE" +>ShiftE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AGreaterThan" +></A +><B +>GreaterThan</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>RelE</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AShiftE" +>ShiftE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ALessEqual" +></A +><B +>LessEqual</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>RelE</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AShiftE" +>ShiftE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AGreaterEqual" +></A +><B +>GreaterEqual</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>RelE</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AShiftE" +>ShiftE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AInstanceOf" +></A +><B +>InstanceOf</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>RelE</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AShiftE" +>ShiftE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AInObject" +></A +><B +>InObject</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>RelE</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AShiftE" +>ShiftE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:RelE')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:RelE" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>RelE</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>RelE</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AEqualE" +></A +><B +>EqualE</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ARelE" +></A +><B +>RelE</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>RelE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AEqual" +></A +><B +>Equal</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AEqualE" +>EqualE</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>RelE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ANotEqual" +></A +><B +>NotEqual</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AEqualE" +>EqualE</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>RelE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AEqual2" +></A +><B +>Equal2</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AEqualE" +>EqualE</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>RelE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ANotEqual2" +></A +><B +>NotEqual2</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AEqualE" +>EqualE</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>RelE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:EqualE')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:EqualE" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AEqualE" +>EqualE</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AEqualE" +>EqualE</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ABitAnd" +></A +><B +>BitAnd</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AEqualE" +></A +><B +>EqualE</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AEqualE" +>EqualE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ABABitAnd" +></A +><B +>BABitAnd</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitAnd" +>BitAnd</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AEqualE" +>EqualE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:BitAnd')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:BitAnd" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitAnd" +>BitAnd</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ABitAnd" +>BitAnd</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ABitXOR" +></A +><B +>BitXOR</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ABitAnd" +></A +><B +>BitAnd</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitAnd" +>BitAnd</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ABXBitXOR" +></A +><B +>BXBitXOR</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitXOR" +>BitXOR</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitAnd" +>BitAnd</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:BitXOR')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:BitXOR" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitXOR" +>BitXOR</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ABitXOR" +>BitXOR</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ABitOR" +></A +><B +>BitOR</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ABitXOR" +></A +><B +>BitXOR</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitXOR" +>BitXOR</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ABOBitOR" +></A +><B +>BOBitOR</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitOR" +>BitOR</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitXOR" +>BitXOR</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:BitOR')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:BitOR" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitOR" +>BitOR</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ABitOR" +>BitOR</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ALogAnd" +></A +><B +>LogAnd</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ABitOR" +></A +><B +>BitOR</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitOR" +>BitOR</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ALALogAnd" +></A +><B +>LALogAnd</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ALogAnd" +>LogAnd</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ABitOR" +>BitOR</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:LogAnd')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:LogAnd" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ALogAnd" +>LogAnd</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ALogAnd" +>LogAnd</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ALogOr" +></A +><B +>LogOr</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ALogAnd" +></A +><B +>LogAnd</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ALogAnd" +>LogAnd</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ALOLogOr" +></A +><B +>LOLogOr</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ALogOr" +>LogOr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ALogAnd" +>LogAnd</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:LogOr')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:LogOr" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ALogOr" +>LogOr</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ALogOr" +>LogOr</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ACondE" +></A +><B +>CondE</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ALogOr" +></A +><B +>LogOr</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ALogOr" +>LogOr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ACondIf" +></A +><B +>CondIf</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ALogOr" +>LogOr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AAssignE" +>AssignE</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AAssignE" +>AssignE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:CondE')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:CondE" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ACondE" +>CondE</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ACondE" +>CondE</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AAssignOp" +></A +><B +>AssignOp</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AAssignNormal" +></A +><B +>AssignNormal</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AAssignOpMult" +></A +><B +>AssignOpMult</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AAssignOpDiv" +></A +><B +>AssignOpDiv</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AAssignOpMod" +></A +><B +>AssignOpMod</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AAssignOpPlus" +></A +><B +>AssignOpPlus</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AAssignOpMinus" +></A +><B +>AssignOpMinus</B +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:AssignOp')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:AssignOp" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AAssignOp" +>AssignOp</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AAssignE" +></A +><B +>AssignE</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ACondE" +></A +><B +>CondE</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ACondE" +>CondE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AAssign" +></A +><B +>Assign</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ALeftExpr" +>LeftExpr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AAssignOp" +>AssignOp</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AAssignE" +>AssignE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AAEFuncDecl" +></A +><B +>AEFuncDecl</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AFuncDecl" +>FuncDecl</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:AssignE')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:AssignE" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AAssignE" +>AssignE</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AAssignE" +>AssignE</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AExpr" +></A +><B +>Expr</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AAssignE" +></A +><B +>AssignE</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AAssignE" +>AssignE</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Expr')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:Expr" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AVarDecl" +></A +><B +>VarDecl</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AVarDecl" +></A +><B +>VarDecl</B +> String (Maybe <A HREF="HJS-Parser-JavaScript.html#t%3AAssignE" +>AssignE</A +>)</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:VarDecl')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:VarDecl" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AVarDecl" +>VarDecl</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AVarDecl" +>VarDecl</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AIfStmt" +></A +><B +>IfStmt</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AIfElse" +></A +><B +>IfElse</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AIfOnly" +></A +><B +>IfOnly</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AIf2" +></A +><B +>If2</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AIf3" +></A +><B +>If3</B +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:IfStmt')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:IfStmt" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AIfStmt" +>IfStmt</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AIfStmt" +>IfStmt</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AItStmt" +></A +><B +>ItStmt</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ADoWhile" +></A +><B +>DoWhile</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AWhile" +></A +><B +>While</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AFor" +></A +><B +>For</B +> (Maybe <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +>) (Maybe <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +>) (Maybe <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +>) <A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AForVar" +></A +><B +>ForVar</B +> [<A HREF="HJS-Parser-JavaScript.html#t%3AVarDecl" +>VarDecl</A +>] (Maybe <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +>) (Maybe <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +>) <A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AForIn" +></A +><B +>ForIn</B +> [<A HREF="HJS-Parser-JavaScript.html#t%3AVarDecl" +>VarDecl</A +>] <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AIt2" +></A +><B +>It2</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ItStmt')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:ItStmt" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AItStmt" +>ItStmt</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AItStmt" +>ItStmt</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ATryStmt" +></A +><B +>TryStmt</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ATryBC" +></A +><B +>TryBC</B +> [<A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +>] [<A HREF="HJS-Parser-JavaScript.html#t%3ACatch" +>Catch</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ATryBF" +></A +><B +>TryBF</B +> [<A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +>] [<A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ATryBCF" +></A +><B +>TryBCF</B +> [<A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +>] [<A HREF="HJS-Parser-JavaScript.html#t%3ACatch" +>Catch</A +>] [<A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:TryStmt')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:TryStmt" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ATryStmt" +>TryStmt</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ACatch" +></A +><B +>Catch</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ACatch" +></A +><B +>Catch</B +> String [<A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ACatchIf" +></A +><B +>CatchIf</B +> String [<A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +>] <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Catch')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:Catch" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ACatch" +>Catch</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AStmt" +></A +><B +>Stmt</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AIfStmt" +></A +><B +>IfStmt</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AIfStmt" +>IfStmt</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AEmptyStmt" +></A +><B +>EmptyStmt</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AExprStmt" +></A +><B +>ExprStmt</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AItStmt" +></A +><B +>ItStmt</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AItStmt" +>ItStmt</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ABlock" +></A +><B +>Block</B +> [<A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AVarStmt" +></A +><B +>VarStmt</B +> [<A HREF="HJS-Parser-JavaScript.html#t%3AVarDecl" +>VarDecl</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ATryStmt" +></A +><B +>TryStmt</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ATryStmt" +>TryStmt</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AContStmt" +></A +><B +>ContStmt</B +> (Maybe String)</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ABreakStmt" +></A +><B +>BreakStmt</B +> (Maybe String)</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AReturnStmt" +></A +><B +>ReturnStmt</B +> (Maybe <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +>)</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AWithStmt" +></A +><B +>WithStmt</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ALabelledStmt" +></A +><B +>LabelledStmt</B +> String <A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ASwitch" +></A +><B +>Switch</B +> <A HREF="HJS-Parser-JavaScript.html#t%3ASwitch" +>Switch</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AThrowExpr" +></A +><B +>ThrowExpr</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Stmt')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:Stmt" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ASwitch" +></A +><B +>Switch</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ASSwitch" +></A +><B +>SSwitch</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ACaseBlock" +>CaseBlock</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Switch')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:Switch" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ASwitch" +>Switch</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ACaseBlock" +></A +><B +>CaseBlock</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ACaseBlock" +></A +><B +>CaseBlock</B +> [<A HREF="HJS-Parser-JavaScript.html#t%3ACaseClause" +>CaseClause</A +>] [<A HREF="HJS-Parser-JavaScript.html#t%3ADefaultClause" +>DefaultClause</A +>] [<A HREF="HJS-Parser-JavaScript.html#t%3ACaseClause" +>CaseClause</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:CaseBlock')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:CaseBlock" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ACaseBlock" +>CaseBlock</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ACaseClause" +></A +><B +>CaseClause</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ACaseClause" +></A +><B +>CaseClause</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>Expr</A +> [<A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:CaseClause')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:CaseClause" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ACaseClause" +>CaseClause</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ADefaultClause" +></A +><B +>DefaultClause</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ADefaultClause" +></A +><B +>DefaultClause</B +> [<A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:DefaultClause')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:DefaultClause" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ADefaultClause" +>DefaultClause</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AFuncDecl" +></A +><B +>FuncDecl</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AFuncDecl" +></A +><B +>FuncDecl</B +> (Maybe String) [String] [<A HREF="HJS-Parser-JavaScript.html#t%3ASourceElement" +>SourceElement</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:FuncDecl')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:FuncDecl" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AFuncDecl" +>FuncDecl</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AFuncDecl" +>FuncDecl</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ASourceElement" +></A +><B +>SourceElement</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AStmt" +></A +><B +>Stmt</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>Stmt</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3ASEFuncDecl" +></A +><B +>SEFuncDecl</B +> <A HREF="HJS-Parser-JavaScript.html#t%3AFuncDecl" +>FuncDecl</A +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:SourceElement')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:SourceElement" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Eq <A HREF="HJS-Parser-JavaScript.html#t%3ASourceElement" +>SourceElement</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3ASourceElement" +>SourceElement</A +></TD +></TR +><TR +><TD CLASS="decl" +>Ord <A HREF="HJS-Parser-JavaScript.html#t%3ASourceElement" +>SourceElement</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3ASourceElement" +>SourceElement</A +></TD +></TR +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>Convert</A +> [<A HREF="HJS-Parser-JavaScript.html#t%3ASourceElement" +>SourceElement</A +>]</TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AJSProgram" +></A +><B +>JSProgram</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AJSProgram" +></A +><B +>JSProgram</B +> [<A HREF="HJS-Parser-JavaScript.html#t%3ASourceElement" +>SourceElement</A +>]</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:JSProgram')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:JSProgram" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>InterpC</A +> <A HREF="HJS-Parser-JavaScript.html#t%3AJSProgram" +>JSProgram</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-JavaScript.html#t%3AJSProgram" +>JSProgram</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="botbar" +>Produced by <A HREF="http://www.haskell.org/haddock/" +>Haddock</A +> version 0.7</TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/HJS-Parser-LexerM.html view
@@ -0,0 +1,114 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +>HJS.Parser.LexerM</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +><SCRIPT SRC="haddock.js" TYPE="text/javascript" +></SCRIPT +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="modulebar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><FONT SIZE="6" +>HJS.Parser.LexerM</FONT +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="section1" +>Documentation</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3Alexer" +></A +><B +>lexer</B +> :: String -> (Token, String)</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AlexerM" +></A +><B +>lexerM</B +> :: Int -> (Token -> <A HREF="HJS-Parser-ParserMonad.html#t%3AP" +>P</A +> a) -> <A HREF="HJS-Parser-ParserMonad.html#t%3AP" +>P</A +> a</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="botbar" +>Produced by <A HREF="http://www.haskell.org/haddock/" +>Haddock</A +> version 0.7</TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/HJS-Parser-ParserMonad.html view
@@ -0,0 +1,439 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +>HJS.Parser.ParserMonad</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +><SCRIPT SRC="haddock.js" TYPE="text/javascript" +></SCRIPT +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="modulebar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><FONT SIZE="6" +>HJS.Parser.ParserMonad</FONT +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="section1" +>Documentation</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AParseResult" +></A +><B +>ParseResult</B +> a</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AOk" +></A +><B +>Ok</B +> a</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AFailed" +></A +><B +>Failed</B +> String</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ParseResult')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:ParseResult" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Show a => Show (<A HREF="HJS-Parser-ParserMonad.html#t%3AParseResult" +>ParseResult</A +> a)</TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ALexerMode" +></A +><B +>LexerMode</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ANormal" +></A +><B +>Normal</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AInComment" +></A +><B +>InComment</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AInRegex" +></A +><B +>InRegex</B +></TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:LexerMode')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:LexerMode" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-ParserMonad.html#t%3ALexerMode" +>LexerMode</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3ALexerState" +></A +><B +>LexerState</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3ALS" +></A +><B +>LS</B +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="body" COLSPAN="2" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3Arest" +></A +><B +>rest</B +> :: String</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3Alineno" +></A +><B +>lineno</B +> :: Int</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3Amode" +></A +><B +>mode</B +> :: <A HREF="HJS-Parser-ParserMonad.html#t%3ALexerMode" +>LexerMode</A +></TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3Atr" +></A +><B +>tr</B +> :: [String]</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3Anl" +></A +><B +>nl</B +> :: Bool</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3Arest2" +></A +><B +>rest2</B +> :: String</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AexpectRegex" +></A +><B +>expectRegex</B +> :: Bool</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AlastToken" +></A +><B +>lastToken</B +> :: (Maybe Token)</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:LexerState')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:LexerState" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Show <A HREF="HJS-Parser-ParserMonad.html#t%3ALexerState" +>LexerState</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>type</SPAN +> <A NAME="t%3AP" +></A +><B +>P</B +> = StateT <A HREF="HJS-Parser-ParserMonad.html#t%3ALexerState" +>LexerState</A +> (ErrorT String Identity)</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AgetLineNo" +></A +><B +>getLineNo</B +> :: <A HREF="HJS-Parser-ParserMonad.html#t%3AP" +>P</A +> Int</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AputLineNo" +></A +><B +>putLineNo</B +> :: Int -> <A HREF="HJS-Parser-ParserMonad.html#t%3AP" +>P</A +> ()</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3Atrace" +></A +><B +>trace</B +> :: String -> <A HREF="HJS-Parser-ParserMonad.html#t%3AP" +>P</A +> ()</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="botbar" +>Produced by <A HREF="http://www.haskell.org/haddock/" +>Haddock</A +> version 0.7</TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/HJS-Parser-Regex.html view
@@ -0,0 +1,82 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +>HJS.Parser.Regex</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +><SCRIPT SRC="haddock.js" TYPE="text/javascript" +></SCRIPT +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="modulebar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><FONT SIZE="6" +>HJS.Parser.Regex</FONT +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="botbar" +>Produced by <A HREF="http://www.haskell.org/haddock/" +>Haddock</A +> version 0.7</TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/Main.html view
@@ -0,0 +1,121 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +>Main</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +><SCRIPT SRC="haddock.js" TYPE="text/javascript" +></SCRIPT +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="modulebar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><FONT SIZE="6" +>Main</FONT +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="section1" +>Description</TD +></TR +><TR +><TD CLASS="doc" +>HJS Haskell Javascript Interpreter + (c) Mark Wassell 2007 + See LICENSE file for license details +</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="section1" +>Documentation</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3Alexer" +></A +><B +>lexer</B +> :: String -> (Token, String)</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3AparseFile" +></A +><B +>parseFile</B +> :: [VFlag] -> String -> IO ()</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="botbar" +>Produced by <A HREF="http://www.haskell.org/haddock/" +>Haddock</A +> version 0.7</TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/T.html view
@@ -0,0 +1,221 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +>T</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +><SCRIPT SRC="haddock.js" TYPE="text/javascript" +></SCRIPT +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="modulebar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><FONT SIZE="6" +>T</FONT +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="section1" +>Documentation</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>type</SPAN +> <A NAME="t%3ACtx" +></A +><B +>Ctx</B +> = ([Int], Int, Int)</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>type</SPAN +> <A NAME="t%3AJSState" +></A +><B +>JSState</B +> = [Int]</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>data</SPAN +> <A NAME="t%3AThrowable" +></A +><B +>Throwable</B +> </TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="section4" +>Constructors</TD +></TR +><TR +><TD CLASS="body" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="arg" +><A NAME="v%3AThrowReturn" +></A +><B +>ThrowReturn</B +> Int</TD +><TD CLASS="rdoc" +></TD +></TR +><TR +><TD CLASS="arg" +><A NAME="v%3AThrowError" +></A +><B +>ThrowError</B +> String</TD +><TD CLASS="rdoc" +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section4" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:Throwable')" ALT="show/hide" +> Instances</TD +></TR +><TR +><TD CLASS="body" +><DIV ID="i:Throwable" STYLE="display:block;" +><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" +><TR +><TD CLASS="decl" +>Error <A HREF="T.html#t%3AThrowable" +>Throwable</A +></TD +></TR +><TR +><TD CLASS="decl" +>Show <A HREF="T.html#t%3AThrowable" +>Throwable</A +></TD +></TR +></TABLE +></DIV +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>type</SPAN +> <A NAME="t%3AInterpM" +></A +><B +>InterpM</B +> = StateT <A HREF="T.html#t%3AJSState" +>JSState</A +> (ErrorT <A HREF="T.html#t%3AThrowable" +>Throwable</A +> Identity)</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3Adoit" +></A +><B +>doit</B +> :: <A HREF="T.html#t%3AInterpM" +>InterpM</A +> ()</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="botbar" +>Produced by <A HREF="http://www.haskell.org/haddock/" +>Haddock</A +> version 0.7</TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/T2.html view
@@ -0,0 +1,128 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +>T2</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +><SCRIPT SRC="haddock.js" TYPE="text/javascript" +></SCRIPT +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="modulebar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><FONT SIZE="6" +>T2</FONT +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="section1" +>Documentation</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><SPAN CLASS="keyword" +>type</SPAN +> <A NAME="t%3AIM" +></A +><B +>IM</B +> = StateT String (ErrorT String Identity)</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3Adoit3" +></A +><B +>doit3</B +> :: <A HREF="T2.html#t%3AIM" +>IM</A +> String</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="decl" +><A NAME="v%3Adoit" +></A +><B +>doit</B +> :: <A HREF="T2.html#t%3AIM" +>IM</A +> String</TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="botbar" +>Produced by <A HREF="http://www.haskell.org/haddock/" +>Haddock</A +> version 0.7</TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-A.html view
@@ -0,0 +1,330 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (A)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>AEFuncDecl</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AAEFuncDecl" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>AddExpr</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AAddExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AAddExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>ArgList</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3AArgList" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AArgList" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ArrSimple</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AArrSimple" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Array</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AArray" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ArrayExpr</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AArrayExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ArrayLit</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AArrayLit" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Assign</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AAssign" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>AssignE</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AAssignE" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AAssignE" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>AssignNormal</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AAssignNormal" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>AssignOp</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AAssignOp" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>AssignOpDiv</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AAssignOpDiv" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>AssignOpMinus</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AAssignOpMinus" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>AssignOpMod</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AAssignOpMod" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>AssignOpMult</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AAssignOpMult" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>AssignOpPlus</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AAssignOpPlus" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Attribute</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3AAttribute" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>addBuiltIn</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-Host.html#v%3AaddBuiltIn" +>HJS.Interpreter.Host</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>autoSemiInsert</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-LexerM.html#v%3AautoSemiInsert" +>HJS.Parser.LexerM</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-B.html view
@@ -0,0 +1,274 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (B)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>BABitAnd</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ABABitAnd" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>BOBitOR</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ABOBitOR" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>BXBitXOR</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ABXBitXOR" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>BitAnd</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ABitAnd" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ABitAnd" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>BitNot</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ABitNot" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>BitOR</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ABitOR" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ABitOR" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>BitXOR</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ABitXOR" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ABitXOR" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Block</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ABlock" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Brack</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ABrack" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Break</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3ABreak" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>BreakContinue</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3ABreakContinue" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>BreakStmt</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ABreakStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-C.html view
@@ -0,0 +1,366 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (C)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>CallBuiltIn</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3ACallBuiltIn" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>CallCall</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ACallCall" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>CallDot</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ACallDot" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>CallExpr</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ACallExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ACallExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>CallJS</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3ACallJS" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>CallMember</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ACallMember" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>CallSquare</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ACallSquare" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>CallValue</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3ACallValue" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>CaseBlock</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ACaseBlock" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ACaseBlock" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>CaseClause</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ACaseClause" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ACaseClause" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>Catch</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ACatch" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ACatch" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>CatchIf</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ACatchIf" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>CondE</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ACondE" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ACondE" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>CondIf</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ACondIf" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ContStmt</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AContStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Continue</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AContinue" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Convert</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3AConvert" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>Ctx</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3ACtx" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="T.html#t%3ACtx" +>T</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>canPut</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AcanPut" +>HJS.Interpreter.InterpM</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-D.html view
@@ -0,0 +1,254 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (D)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" COLSPAN="2" +>DefaultClause</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ADefaultClause" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ADefaultClause" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Delete</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ADelete" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Div</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ADiv" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>DoWhile</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ADoWhile" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>DontDelete</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3ADontDelete" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>DontEnum</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3ADontEnum" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>DoubleMinus</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ADoubleMinus" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>DoublePlus</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ADoublePlus" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>deleteProperty</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AdeleteProperty" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>doit</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Function)</TD +><TD CLASS="indexlinks" +><A HREF="T.html#v%3Adoit" +>T</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Function)</TD +><TD CLASS="indexlinks" +><A HREF="T2.html#v%3Adoit" +>T2</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>doit3</TD +><TD CLASS="indexlinks" +><A HREF="T2.html#v%3Adoit3" +>T2</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-E.html view
@@ -0,0 +1,226 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (E)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>EmitHaskell</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AEmitHaskell" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>EmptyStmt</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AEmptyStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Equal</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AEqual" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Equal2</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AEqual2" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>EqualE</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AEqualE" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AEqualE" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Expr</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ExprStmt</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AExprStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>eHs</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AeHs" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>expectRegex</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3AexpectRegex" +>HJS.Parser.ParserMonad</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-F.html view
@@ -0,0 +1,194 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (F)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>Failed</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3AFailed" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>For</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AFor" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ForIn</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AForIn" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ForVar</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AForVar" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>FuncDecl</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AFuncDecl" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AFuncDecl" +>HJS.Parser.JavaScript</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-G.html view
@@ -0,0 +1,234 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (G)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" COLSPAN="2" +>GetterPutter</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AGetterPutter" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AGetterPutter" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>GreaterEqual</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AGreaterEqual" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>GreaterThan</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AGreaterThan" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>getArgs</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-Host.html#v%3AgetArgs" +>HJS.Interpreter.Host</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>getLineNo</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3AgetLineNo" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>getObject</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AgetObject" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>getProperty</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AgetProperty" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>getProperty'</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AgetProperty%27" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>getValue</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AgetValue" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>getValue'</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AgetValue%27" +>HJS.Interpreter.InterpM</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-H.html view
@@ -0,0 +1,150 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (H)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>hasProperty</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AhasProperty" +>HJS.Interpreter.InterpM</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-I.html view
@@ -0,0 +1,338 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (I)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>IM</TD +><TD CLASS="indexlinks" +><A HREF="T2.html#t%3AIM" +>T2</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Ident</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AIdent" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>If2</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AIf2" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>If3</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AIf3" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>IfElse</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AIfElse" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>IfOnly</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AIfOnly" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>IfStmt</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AIfStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AIfStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>InComment</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3AInComment" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>InObject</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AInObject" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>InRegex</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3AInRegex" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>InstanceOf</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AInstanceOf" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Internal</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AInternal" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>InterpC</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-Interp.html#t%3AInterpC" +>HJS.Interpreter.Interp</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>InterpM</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3AInterpM" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="T.html#t%3AInterpM" +>T</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>It2</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AIt2" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>ItStmt</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AItStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AItStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>inj</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3Ainj" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>interp</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-Interp.html#v%3Ainterp" +>HJS.Interpreter.Interp</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>interpList</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-Interp.html#v%3AinterpList" +>HJS.Interpreter.Interp</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>isUndefined</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AisUndefined" +>HJS.Interpreter.InterpM</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-J.html view
@@ -0,0 +1,182 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (J)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" COLSPAN="2" +>JSProgram</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AJSProgram" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AJSProgram" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>JSState</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3AJSState" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="T.html#t%3AJSState" +>T</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-K.html view
@@ -0,0 +1,150 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (K)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>klass</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3Aklass" +>HJS.Interpreter.InterpM</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-L.html view
@@ -0,0 +1,352 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (L)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>LALogAnd</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ALALogAnd" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>LOLogOr</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ALOLogOr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>LS</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3ALS" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>LabelledStmt</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ALabelledStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>LeftExpr</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ALeftExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ALeftExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>LessEqual</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ALessEqual" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>LessThan</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ALessThan" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>LexerMode</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#t%3ALexerMode" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>LexerState</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#t%3ALexerState" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>LitInt</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ALitInt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>LitString</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ALitString" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>Literal</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ALiteral" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ALiteral" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>LogAnd</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ALogAnd" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ALogAnd" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>LogOr</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ALogOr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ALogOr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>lastToken</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3AlastToken" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>lexer</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-LexerM.html#v%3Alexer" +>HJS.Parser.LexerM</A +>, <A HREF="Main.html#v%3Alexer" +>Main</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>lexerM</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-LexerM.html#v%3AlexerM" +>HJS.Parser.LexerM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>liftIt</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-Interp.html#v%3AliftIt" +>HJS.Interpreter.Interp</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>liftIt3</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-Interp.html#v%3AliftIt3" +>HJS.Interpreter.Interp</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>lineno</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3Alineno" +>HJS.Parser.ParserMonad</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-M.html view
@@ -0,0 +1,254 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (M)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>MemPrimExpr</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AMemPrimExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>MemberCall</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AMemberCall" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>MemberExpr</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AMemberExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AMemberExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>MemberNew</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AMemberNew" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Minus</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AMinus" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Mod</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AMod" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Msg</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-Interp.html#v%3AMsg" +>HJS.Interpreter.Interp</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>MultExpr</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AMultExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AMultExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>MyError</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-Interp.html#t%3AMyError" +>HJS.Interpreter.Interp</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>main</TD +><TD CLASS="indexlinks" +><A HREF="Main.html#v%3Amain" +>Main</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>mode</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3Amode" +>HJS.Parser.ParserMonad</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-N.html view
@@ -0,0 +1,254 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (N)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" COLSPAN="2" +>NewExpr</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ANewExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ANewExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>NewNewExpr</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ANewNewExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>NoMsg</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-Interp.html#v%3ANoMsg" +>HJS.Interpreter.Interp</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Normal</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3ANormal" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Not</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ANot" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>NotEqual</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ANotEqual" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>NotEqual2</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ANotEqual2" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>Null</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3ANull" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3ANull" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>newBuiltInFunction</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AnewBuiltInFunction" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>newObject</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AnewObject" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>nl</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3Anl" +>HJS.Parser.ParserMonad</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-O.html view
@@ -0,0 +1,186 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (O)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" COLSPAN="2" +>Object</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3AObject" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AObject" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>3 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AObject" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Ok</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3AOk" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>objectConstructor</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-Host.html#v%3AobjectConstructor" +>HJS.Interpreter.Host</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-P.html view
@@ -0,0 +1,378 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (P)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>P</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#t%3AP" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ParseResult</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#t%3AParseResult" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Plus</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3APlus" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>PostDec</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3APostDec" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>PostFix</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3APostFix" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3APostFix" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>PostInc</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3APostInc" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>PrimExpr</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3APrimExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>PropName</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3APropName" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>PropNameId</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3APropNameId" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>PropNameInt</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3APropNameInt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>PropNameStr</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3APropNameStr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Putter</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3APutter" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>parseFile</TD +><TD CLASS="indexlinks" +><A HREF="Main.html#v%3AparseFile" +>Main</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>parseProgram</TD +><TD CLASS="indexlinks" +><A HREF="Main.html#v%3AparseProgram" +>Main</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>parseRegex</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-Regex.html#v%3AparseRegex" +>HJS.Parser.Regex</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>parseTest</TD +><TD CLASS="indexlinks" +><A HREF="Main.html#v%3AparseTest" +>Main</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>popContext</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3ApopContext" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>print'</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-Host.html#v%3Aprint%27" +>HJS.Interpreter.Host</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>prj</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3Aprj" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>properties</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3Aproperties" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>prototype</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3Aprototype" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>pushContext</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3ApushContext" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>putBuiltIn</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-Host.html#v%3AputBuiltIn" +>HJS.Interpreter.Host</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>putGlobalContext</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AputGlobalContext" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>putLineNo</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3AputLineNo" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>putObject</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AputObject" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>putProperty</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AputProperty" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>putValue</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AputValue" +>HJS.Interpreter.InterpM</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-R.html view
@@ -0,0 +1,246 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (R)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>ReadOnly</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AReadOnly" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>Ref</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3ARef" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3ARef" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>RefObj</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3ARefObj" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Regex</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ARegex" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>RelE</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ARelE" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ARelE" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ReturnStmt</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AReturnStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>rest</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3Arest" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>rest2</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3Arest2" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>runInterp</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter.html#v%3ArunInterp" +>HJS.Interpreter</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>runProgram</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter.html#v%3ArunProgram" +>HJS.Interpreter</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-S.html view
@@ -0,0 +1,258 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (S)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>SEFuncDecl</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ASEFuncDecl" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>SSwitch</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ASSwitch" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>ShiftE</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AShiftE" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AShiftE" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ShiftLeft</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AShiftLeft" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ShiftRight</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AShiftRight" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ShiftRight2</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AShiftRight2" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>SourceElement</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ASourceElement" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>Stmt</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>SubType</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3ASubType" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>Switch</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ASwitch" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ASwitch" +>HJS.Parser.JavaScript</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-T.html view
@@ -0,0 +1,378 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (T)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>This</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AThis" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ThrowBreak</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AThrowBreak" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ThrowContinue</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AThrowContinue" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ThrowError</TD +><TD CLASS="indexlinks" +><A HREF="T.html#v%3AThrowError" +>T</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ThrowException</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AThrowException" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ThrowExpr</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AThrowExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ThrowInternalError</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AThrowInternalError" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>ThrowReturn</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AThrowReturn" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="T.html#v%3AThrowReturn" +>T</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>ThrowTypeError</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AThrowTypeError" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>Throwable</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3AThrowable" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="T.html#t%3AThrowable" +>T</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Times</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ATimes" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>TryBC</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ATryBC" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>TryBCF</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ATryBCF" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>TryBF</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ATryBF" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>TryStmt</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3ATryStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ATryStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>TypeOf</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3ATypeOf" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>t</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-Regex.html#v%3At" +>HJS.Parser.Regex</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>toBoolean</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AtoBoolean" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>toNumber</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AtoNumber" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>toRealBool</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AtoRealBool" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>toRealInt</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AtoRealInt" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>toRealString</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AtoRealString" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>toString</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AtoString" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>tr</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3Atr" +>HJS.Parser.ParserMonad</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>trace</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-ParserMonad.html#v%3Atrace" +>HJS.Parser.ParserMonad</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-U.html view
@@ -0,0 +1,198 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (U)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" COLSPAN="2" +>UExpr</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AUExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AUExpr" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>UnaryMinus</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AUnaryMinus" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>UnaryPlus</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AUnaryPlus" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>Undefined</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3AUndefined" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AUndefined" +>HJS.Interpreter.InterpM</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-V.html view
@@ -0,0 +1,202 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (V)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>Value</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#t%3AValue" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>VarArgList</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3AVarArgList" +>HJS.Interpreter.InterpM</A +></TD +></TR +><TR +><TD CLASS="indexentry" COLSPAN="2" +>VarDecl</TD +></TR +><TR +><TD CLASS="indexannot" +>1 (Type/Class)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#t%3AVarDecl" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexannot" +>2 (Data Constructor)</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AVarDecl" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>VarStmt</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AVarStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>Void</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AVoid" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>value</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Interpreter-InterpM.html#v%3Avalue" +>HJS.Interpreter.InterpM</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index-W.html view
@@ -0,0 +1,158 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index (W)</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD CLASS="indexentry" +>While</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AWhile" +>HJS.Parser.JavaScript</A +></TD +></TR +><TR +><TD CLASS="indexentry" +>WithStmt</TD +><TD CLASS="indexlinks" +><A HREF="HJS-Parser-JavaScript.html#v%3AWithStmt" +>HJS.Parser.JavaScript</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/doc-index.html view
@@ -0,0 +1,136 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +> (Index)</TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Index</TD +></TR +><TR +><TD +><TABLE CELLPADDING="0" CELLSPACING="5" +><TR +><TD +><A HREF="doc-index-A.html" +>A</A +></TD +><TD +><A HREF="doc-index-B.html" +>B</A +></TD +><TD +><A HREF="doc-index-C.html" +>C</A +></TD +><TD +><A HREF="doc-index-D.html" +>D</A +></TD +><TD +><A HREF="doc-index-E.html" +>E</A +></TD +><TD +><A HREF="doc-index-F.html" +>F</A +></TD +><TD +><A HREF="doc-index-G.html" +>G</A +></TD +><TD +><A HREF="doc-index-H.html" +>H</A +></TD +><TD +><A HREF="doc-index-I.html" +>I</A +></TD +><TD +><A HREF="doc-index-J.html" +>J</A +></TD +><TD +><A HREF="doc-index-K.html" +>K</A +></TD +><TD +><A HREF="doc-index-L.html" +>L</A +></TD +><TD +><A HREF="doc-index-M.html" +>M</A +></TD +><TD +><A HREF="doc-index-N.html" +>N</A +></TD +><TD +><A HREF="doc-index-O.html" +>O</A +></TD +><TD +><A HREF="doc-index-P.html" +>P</A +></TD +><TD +><A HREF="doc-index-R.html" +>R</A +></TD +><TD +><A HREF="doc-index-S.html" +>S</A +></TD +><TD +><A HREF="doc-index-T.html" +>T</A +></TD +><TD +><A HREF="doc-index-U.html" +>U</A +></TD +><TD +><A HREF="doc-index-V.html" +>V</A +></TD +><TD +><A HREF="doc-index-W.html" +>W</A +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/haddock.css view
@@ -0,0 +1,235 @@+/* -------- Global things --------- */++BODY { + background-color: #ffffff;+ color: #000000;+ font-family: sans-serif;+ } ++A:link { color: #0000e0; text-decoration: none }+A:visited { color: #0000a0; text-decoration: none }+A:hover { background-color: #e0e0ff; text-decoration: none }++TABLE.vanilla {+ width: 100%;+ border-width: 0px;+ /* I can't seem to specify cellspacing or cellpadding properly using CSS... */+}++TABLE.vanilla2 {+ border-width: 0px;+}++/* <TT> font is a little too small in MSIE */+TT { font-size: 100%; }+PRE { font-size: 100%; }++LI P { margin: 0pt } ++TD {+ border-width: 0px;+}++TABLE.narrow {+ border-width: 0px;+}++TD.s8 { height: 8px; }+TD.s15 { height: 15px; }++SPAN.keyword { text-decoration: underline; }++/* Resize the buttom image to match the text size */+IMG.coll { width : 0.75em; height: 0.75em; margin-bottom: 0; margin-right: 0.5em }++/* --------- Contents page ---------- */++DIV.node {+ padding-left: 3em;+}++DIV.cnode {+ padding-left: 1.75em;+}++SPAN.pkg {+ position: absolute;+ left: 50em;+}++/* --------- Documentation elements ---------- */++TD.children {+ padding-left: 25px;+ }++TD.synopsis {+ padding: 2px;+ background-color: #f0f0f0;+ font-family: monospace+ }++TD.decl { + padding: 2px;+ background-color: #f0f0f0; + font-family: monospace;+ vertical-align: top;+ }++/* + arg is just like decl, except that wrapping is not allowed. It is+ used for function and constructor arguments which have a text box+ to the right, where if wrapping is allowed the text box squashes up+ the declaration by wrapping it.+*/+TD.arg { + padding: 2px;+ background-color: #f0f0f0; + font-family: monospace;+ vertical-align: top;+ white-space: nowrap;+ }++TD.recfield { padding-left: 20px }++TD.doc { + padding-top: 2px;+ padding-left: 10px;+ }++TD.ndoc { + padding: 2px;+ }++TD.rdoc { + padding: 2px;+ padding-left: 10px;+ width: 100%;+ }++TD.body { + padding-left: 10px+ }++TD.pkg {+ width: 100%;+ padding-left: 10px+}++TD.indexentry {+ vertical-align: top;+ padding-right: 10px+ }++TD.indexannot {+ vertical-align: top;+ padding-left: 20px;+ white-space: nowrap+ }++TD.indexlinks {+ width: 100%+ }++/* ------- Section Headings ------- */++TD.section1 {+ padding-top: 15px;+ font-weight: bold;+ font-size: 150%+ }++TD.section2 {+ padding-top: 10px;+ font-weight: bold;+ font-size: 130%+ }++TD.section3 {+ padding-top: 5px;+ font-weight: bold;+ font-size: 110%+ }++TD.section4 {+ font-weight: bold;+ font-size: 100%+ }++/* -------------- The title bar at the top of the page */++TD.infohead {+ color: #ffffff;+ font-weight: bold;+ padding-right: 10px;+ text-align: left;+}++TD.infoval {+ color: #ffffff;+ padding-right: 10px;+ text-align: left;+}++TD.topbar {+ background-color: #000099;+ padding: 5px;+}++TD.title {+ color: #ffffff;+ padding-left: 10px;+ width: 100%+ }++TD.topbut {+ padding-left: 5px;+ padding-right: 5px;+ border-left-width: 1px;+ border-left-color: #ffffff;+ border-left-style: solid;+ white-space: nowrap;+ }++TD.topbut A:link {+ color: #ffffff+ }++TD.topbut A:visited {+ color: #ffff00+ }++TD.topbut A:hover {+ background-color: #6060ff;+ }++TD.topbut:hover {+ background-color: #6060ff+ }++TD.modulebar { + background-color: #0077dd;+ padding: 5px;+ border-top-width: 1px;+ border-top-color: #ffffff;+ border-top-style: solid;+ }++/* --------- The page footer --------- */++TD.botbar {+ background-color: #000099;+ color: #ffffff;+ padding: 5px+ }+TD.botbar A:link {+ color: #ffffff;+ text-decoration: underline+ }+TD.botbar A:visited {+ color: #ffff00+ }+TD.botbar A:hover {+ background-color: #6060ff+ }+
+ doc/haddock.js view
@@ -0,0 +1,15 @@+// Haddock JavaScript utilities+function toggle(button,id)+{+ var n = document.getElementById(id).style;+ if (n.display == "none")+ {+ button.src = "minus.gif";+ n.display = "block";+ }+ else+ {+ button.src = "plus.gif";+ n.display = "none";+ }+}
+ doc/haskell_icon.gif view
binary file changed (absent → 911 bytes)
+ doc/index.html view
@@ -0,0 +1,215 @@+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!--Rendered using the Haskell Html Library v0.2--> +<HTML +><HEAD +><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" +><TITLE +></TITLE +><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" +><SCRIPT SRC="haddock.js" TYPE="text/javascript" +></SCRIPT +></HEAD +><BODY +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD CLASS="topbar" +><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" +><TR +><TD +><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " +></TD +><TD CLASS="title" +></TD +><TD CLASS="topbut" +><A HREF="index.html" +>Contents</A +></TD +><TD CLASS="topbut" +><A HREF="doc-index.html" +>Index</A +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="section1" +>Modules</TD +></TR +><TR +><TD +><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" +><TR +><TD STYLE="width: 50em" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:0')" ALT="show/hide" +>HJS</TD +><TD +></TD +><TD +></TD +></TR +><TR +><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3" +><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:0" STYLE="display:block;" +><TR +><TD STYLE="width: 48em" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:1')" ALT="show/hide" +><A HREF="HJS-Interpreter.html" +>HJS.Interpreter</A +></TD +><TD +></TD +><TD +></TD +></TR +><TR +><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3" +><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:1" STYLE="display:block;" +><TR +><TD STYLE="padding-left: 1.25em;width: 46em" +><A HREF="HJS-Interpreter-Host.html" +>HJS.Interpreter.Host</A +></TD +><TD +></TD +><TD +></TD +></TR +><TR +><TD STYLE="padding-left: 1.25em;width: 46em" +><A HREF="HJS-Interpreter-Interp.html" +>HJS.Interpreter.Interp</A +></TD +><TD +></TD +><TD +></TD +></TR +><TR +><TD STYLE="padding-left: 1.25em;width: 46em" +><A HREF="HJS-Interpreter-InterpM.html" +>HJS.Interpreter.InterpM</A +></TD +><TD +></TD +><TD +></TD +></TR +><TR +><TD STYLE="padding-left: 1.25em;width: 46em" +><A HREF="HJS-Interpreter-Object.html" +>HJS.Interpreter.Object</A +></TD +><TD +></TD +><TD +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD STYLE="width: 48em" +><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'n:2')" ALT="show/hide" +>Parser</TD +><TD +></TD +><TD +></TD +></TR +><TR +><TD STYLE="padding: 0; padding-left: 2em" COLSPAN="3" +><TABLE CLASS="vanilla2" CELLSPACING="0" CELLPADDING="0" ID="n:2" STYLE="display:block;" +><TR +><TD STYLE="padding-left: 1.25em;width: 46em" +><A HREF="HJS-Parser-JavaScript.html" +>HJS.Parser.JavaScript</A +></TD +><TD +></TD +><TD +></TD +></TR +><TR +><TD STYLE="padding-left: 1.25em;width: 46em" +><A HREF="HJS-Parser-LexerM.html" +>HJS.Parser.LexerM</A +></TD +><TD +></TD +><TD +></TD +></TR +><TR +><TD STYLE="padding-left: 1.25em;width: 46em" +><A HREF="HJS-Parser-ParserMonad.html" +>HJS.Parser.ParserMonad</A +></TD +><TD +></TD +><TD +></TD +></TR +><TR +><TD STYLE="padding-left: 1.25em;width: 46em" +><A HREF="HJS-Parser-Regex.html" +>HJS.Parser.Regex</A +></TD +><TD +></TD +><TD +></TD +></TR +></TABLE +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD STYLE="padding-left: 1.25em;width: 50em" +><A HREF="Main.html" +>Main</A +></TD +><TD +></TD +><TD +></TD +></TR +><TR +><TD STYLE="padding-left: 1.25em;width: 50em" +><A HREF="T.html" +>T</A +></TD +><TD +></TD +><TD +></TD +></TR +><TR +><TD STYLE="padding-left: 1.25em;width: 50em" +><A HREF="T2.html" +>T2</A +></TD +><TD +></TD +><TD +></TD +></TR +></TABLE +></TD +></TR +><TR +><TD CLASS="s15" +></TD +></TR +><TR +><TD CLASS="botbar" +>Produced by <A HREF="http://www.haskell.org/haddock/" +>Haddock</A +> version 0.7</TD +></TR +></TABLE +></BODY +></HTML +>
+ doc/minus.gif view
binary file changed (absent → 56 bytes)
+ doc/plus.gif view
binary file changed (absent → 59 bytes)
hjs.cabal view
@@ -1,24 +1,21 @@ Name: hjs -Version: 0.1 +Version: 0.2 Copyright: Mark Wassell 2007 License: BSD3 license-file: LICENSE Author: Mark Wassell<mwassell@bigpond.net.au> Maintainer: mwassell@bigpond.net.au -Stability: experiemental -Homepage: +Stability: experimental +Homepage: http://www.haskell.org/haskellwiki/Libraries_and_tools/HJS Category: Compilers/Interpreters -Build-Depends: base,happy>=1.16,alex>=2.1.0,mtl +Build-Depends: base,parsec>=2.0,mtl,regex-compat>=0.71 Synopsis: Javascript Parser Description: - A Javascript parser to be extended to an interpreter in later versions. - Parses as per ECMA-262 plus some parts of JS >=1.5 + A Javascript parser and interpreter. + Works as per ECMA-262 plus some parts of JS >=1.5. -Executable: FixHappy -Main-Is: FixHappy.hs -Hs-Source-Dirs: utils - Executable: hjs +Extensions: OverlappingInstances,UndecidableInstances Main-Is: Main.hs Hs-Source-Dirs: src
+ makedoc.bat view
@@ -0,0 +1,2 @@+cd src +C:\Software\haskell\haddock-0.7\haddock -v -o ..\doc -h *.hs .\HJS\Parser\JavaScript.hs .\HJS\Parser\LexerM.hs .\HJS\Parser\ParserMonad.hs .\HJS\Parser\Regex.hs .\HJS\Interpreter.hs .\HJS\Interpreter\*.hs
+ src/HJS/Interpreter.hs view
@@ -0,0 +1,79 @@+{-# OPTIONS -fglasgow-exts #-} +module HJS.Interpreter where + +import Control.Monad.Identity +import Control.Monad.Error +import Control.Monad.State + +import qualified Data.Map as M + +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM +import HJS.Interpreter.Interp +import HJS.Interpreter.Host + +import Debug.Trace + +runInterp :: InterpC p => p -> InterpM Value +runInterp p = do + initEnvironment + interp p + + + + + +startState f = let db = if elem Debug f then [DBBreak (-1)] else [] + in emptyState { flags = f, debug = db } + +runProgram' f p = runStateT (runErrorT (runInterp p)) (startState f) + +runProgram :: InterpC a => [RunFlag] -> a -> IO Bool +runProgram flags p = do + (ret,state) <- runProgram' flags p + case ret of + Left err -> do + putStrLn $ "Position: " ++ (show $ pos state) + putStrLn (show err ) + handleRunResult flags (undefinedValue, state) + Right r -> handleRunResult flags (r,state) + + + +handleRunResult (ShowHeap : cs) (v,st) = do + let ec = ctx st + s = oheap st + p = pos st + let out = getOut s + putStrLn $ "Return: " ++ (show v) + putStrLn $ "Output: " ++ (show out) + putStrLn $ "Execution Context" ++ (show ec) + putStrLn $ "Heap: " + mapM_ (\(i,o) -> do + putStr $ (show i) ++ " -> " + putStrLn (show o)) (M.toList s) + case (prj v) of + (Just b :: Maybe Bool) -> return b + _ -> return False + + + +handleRunResult [] (v,st) = do + let ec = ctx st + s = oheap st + p = pos st + let out = getOut s + putStrLn $ show $ debug st + case out of + Nothing -> return () + (Just out') -> putStrLn $ "Output: " ++ (show out') + case (prj v) of + (Just b :: Maybe Bool) -> return b + _ -> return False + +handleRunResult (f:fs) (v,st) = handleRunResult fs (v,st) + +getOut s = out where (out::Maybe String) = do + go <- M.lookup globalObj s + (o,_) <- M.lookup "_output" (properties go) + return $ show o
+ src/HJS/Interpreter.hs~ view
@@ -0,0 +1,60 @@+module HJS.Interpreter where + +import Control.Monad.Identity +import Control.Monad.Error +import Control.Monad.State + +import qualified Data.Map as M + +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM +import HJS.Interpreter.Interp +import HJS.Interpreter.Host + +runInterp :: InterpC p => p -> InterpM Value +runInterp p = do + initEnvironment +-- addBuiltIn + interp p + + +runProgram' p = runIdentity $ runStateT (runErrorT (runInterp p)) emptyState + +runProgram :: InterpC a => Bool -> a -> IO Bool +runProgram flags p = do + let (ret,state) = runProgram' p + case ret of + Left err -> do let (_,_,pos) = state + putStrLn $ "Position: " ++ (show pos) + putStrLn (show err ) + handleRunResult flags (undefinedValue, state) + Right r -> handleRunResult flags (r,state) + +handleRunResult True (v,(ec,s,p)) = do + let out = getOut s + putStrLn $ "Return: " ++ (show v) + putStrLn $ "Output: " ++ (show out) + putStrLn $ "Execution Context" ++ (show ec) + putStrLn $ "Heap: " + mapM_ (\(i,o) -> do + putStr $ (show i) ++ " -> " + putStrLn (show o)) (M.toList s) + case (prj v) of + (Just b :: Maybe Bool) -> return b + _ -> return False + + + +handleRunResult False (v,(ec,s,p)) = do + let out = getOut s + case out of + Nothing -> return () + (Just out') -> putStrLn $ "Output: " ++ (show out') + case (prj v) of + (Just b :: Maybe Bool) -> return b + _ -> return False + +getOut s = out where (out::Maybe String) = do + go <- M.lookup globalObj s + (o,_) <- M.lookup "_output" (properties go) + return $ show o
+ src/HJS/Interpreter/Array.hs view
@@ -0,0 +1,52 @@+module HJS.Interpreter.Array where + +import Control.Monad.Identity +import Control.Monad.Error +import Control.Monad.State + +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM +import HJS.Interpreter.ObjectBasic + +arrayConstructor :: InterpM Value +arrayConstructor = do + args <- getArgs + o <- newArrayObject args + t <- getThis + p <- getProperty (toObjId t) "prototype" + putPropertyInternal o "__proto__" p + return $ inj o + +newArrayObject :: [Value] -> InterpM ObjId +newArrayObject vs = do + a <- newObject "Array" + putObjectProperty a "length" (inj (0::Int)) + zipWithM (\x y -> putProperty a (show x) y) [0..] vs + return a + +toList :: Value -> InterpM [Value] +toList v = do + let id' = toObjId v + len <- getProperty id' "length" + let len' = toRealInt len + mapM (\x -> getProperty id' (show x)) [0..(len'-1)] + + + +push :: InterpM Value +push = do + args <- getArgs + t <- getThis + let addone x= do + len <- getProperty (toObjId t) "length" + let l = show $ toRealInt len + putProperty (toObjId t) l x + ls <- mapM addone args + return (inj Undefined) + +-- Create the Array function object and then add the built in functions to the prototype +addArrayBuiltIn newConstructorWith putBuiltIn = do + fo <- newConstructorWith "Array" arrayConstructor + p <- getProperty fo "prototype" + let p' = toObjId p + putBuiltIn p' "push" [] push
+ src/HJS/Interpreter/Debugger.hs view
@@ -0,0 +1,94 @@+{-- + A Simple Debugger for HJS. Makes no allowances for variations in entered text! +--} +module HJS.Interpreter.Debugger(debugPoint) where + +import System.IO +import Control.Monad.Trans +import Control.Monad.State + +import HJS.Interpreter.InterpMDecl hiding (Continue) +import HJS.Interpreter.InterpM + +import {-# SOURCE #-} HJS.Interpreter.Eval + + +haltThisLine (StepOver:xs) (l,c) = (True,xs) +haltThisLine (x@(DBBreak i):xs) (l,c) = if i == (-1) then (True,xs) else + if i == l then (True,x:xs) else let (f, xs') = haltThisLine xs (l,c) in (f,x:xs') +haltThisLine (x:xs) (l,c) = let (f, xs') = haltThisLine xs (l,c) in (f,x:xs') +haltThisLine [] _ = (False,[]) + + +debugPoint :: (Int,Int) -> InterpM () +debugPoint p = do + f <- getDebugFlags + -- liftIO $ putStrLn $ show (f,p) + let (b,f') = haltThisLine f p + putDebugFlags f' + case b of + True -> debugLoop + False -> return () + + +debugLoop :: InterpM () +debugLoop = do + l <- liftIO $ getDBLine + f <- case l of + "c" -> doAction DBContinue + "s" -> doAction StepOver + ('p':[]) -> doAction PrintHeap + ('p':ls) -> doAction $ PrintObj (read ls) + "l" -> doAction PrintLine + ('b':ls) -> doAction $ DBBreak (read ls) + ('e':ls) -> doAction $ Eval ls + + case f of + True -> return () + _ -> debugLoop + +getDBLine :: IO String +getDBLine = do + putStr "hjsd> " + s <- hGetLine stdin + return s + +doAction :: DebugAction -> InterpM Bool + +doAction (Eval s) = do + v <- eval s + liftIO $ putStrLn $ show v + return False + +doAction (DBBreak i) = do + f <- getDebugFlags + putDebugFlags ((DBBreak i):f) + return False + +doAction (StepOver) = do + f <- getDebugFlags + putDebugFlags ((StepOver):f) + return True + +doAction (PrintVar s) = do + v <- getValue (inj $ Ref s) + traceM (show v) + return False + +doAction (PrintHeap) = do + s <- get + liftIO $ putStrLn (show $ oheap s) + return False + +doAction (PrintObj i) = do + o <- getObject (ObjId i) + liftIO $ putStrLn (show o) + return False + +doAction (PrintLine ) = do + l <- getStmtLine + liftIO $ putStrLn $ "Current Line: " ++ (show l) + return False + +doAction _ = return True +
+ src/HJS/Interpreter/Debugger.hs~ view
@@ -0,0 +1,5 @@+{-- + A Simple Debugger for HJS +--} +module HJS.Interpreter.Debugger where +
+ src/HJS/Interpreter/Error.hs view
@@ -0,0 +1,29 @@+module HJS.Interpreter.Error where + +import Control.Monad.Identity +import Control.Monad.Error +import Control.Monad.State + +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM +import HJS.Interpreter.ObjectBasic + + +errorConstructor :: InterpM Value +errorConstructor = do + args <- getArgs + o <- newObject "Error" + t <- getThis + p <- getProperty (toObjId t) "prototype" + putPropertyInternal o "__proto__" p + case args of + (x:_) -> putProperty o "message" x + _ -> return () + return $ inj o + + +addErrorBuiltIn newConstructorWith putBuiltIn = do + newConstructorWith "Error" errorConstructor +-- p <- getProperty fo "prototype" +-- let p' = toObjId p +
+ src/HJS/Interpreter/Eval.hs view
@@ -0,0 +1,17 @@+module HJS.Interpreter.Eval where + +import Control.Monad.Trans + +import HJS.Parser +import HJS.Parser.JavaScript +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM hiding (getArgs) +import HJS.Interpreter.Interp + + +eval :: String -> InterpM Value +eval s = do + case parseProgram s of + Right r -> interp r + Left s -> return $ inj undefinedValue +
+ src/HJS/Interpreter/Eval.hs-boot view
@@ -0,0 +1,4 @@+module HJS.Interpreter.Eval where + +import HJS.Interpreter.InterpMDecl +eval :: String -> InterpM Value
+ src/HJS/Interpreter/Eval.hs~ view
@@ -0,0 +1,5 @@+module HJS.Interpreter.Eval where + +eval :: String -> InterpM Value +eval s = do +
+ src/HJS/Interpreter/Function.hs view
@@ -0,0 +1,26 @@+module HJS.Interpreter.Function where + +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM + +import HJS.Interpreter.Array + +addFunctionBuiltIn newConstructor putBuiltIn callFunction = do + fo <- newConstructor "Function" + putPropertyInternal fo "__proto__" (inj $ ObjId 2) + p <- getProperty fo "prototype" + let p' = toObjId p + putBuiltIn p' "apply" [] (apply callFunction) + + +apply callFunction = do + args <- getArgs + this <- getThis + case args of + [] -> callFunction this [] ObjIdNull + (target:[]) -> callFunction this [] (toObjId target) + (target:args':_) -> do + args' <- toList args' + callFunction this args' (toObjId target) + +
+ src/HJS/Interpreter/Host.hs view
@@ -0,0 +1,114 @@+{-# OPTIONS -fglasgow-exts #-} +{-# OPTIONS -fallow-overlapping-instances #-} +{-# OPTIONS -fallow-incoherent-instances #-} +{- + Built in functions provided by 'host' +-} +module HJS.Interpreter.Host where + + + +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM +import HJS.Interpreter.Interp + +import HJS.Interpreter.ObjectBasic +import HJS.Interpreter.Object +import HJS.Interpreter.Array +import HJS.Interpreter.Function +import HJS.Interpreter.Error +import HJS.Interpreter.String +import HJS.Interpreter.Regex + +import Control.Monad.State + +globalObj = ObjId 1 +objPrototype = ObjId 2 + + +print' :: InterpM Value +print' = do + args' <- getArgs + op <- getProperty globalObj "_output" + args <- mapM toRealString args' + op' <- toRealString op + let + prefix = if isUndefined op then "" else (op' ++ "\n") + s = concat (prefix:args) + putProperty globalObj "_output" (inj s) + return (inj Undefined) + +print'' :: InterpM Value +print'' = do + args' <- getArgs + op <- getProperty globalObj "_output" + args <- mapM toRealString args' + liftIO $ putStrLn $ concat args + return undefinedValue + +putBuiltIn :: ObjId -> String -> [String] -> InterpM Value -> InterpM () +putBuiltIn obj name args f = do + fo <- newBuiltInFunction args f + putProperty obj name (inj fo) + +objectConstructor :: InterpM Value +objectConstructor = do + o <- newObject "Object" + return $ inj o + + + +newClassObject name = do + obj <- newObject "Object" + putProperty globalObj name (inj obj) + fo <- newBuiltInFunction [] objectConstructor + o <- newObject "Object" + putProperty obj "prototype" (inj o) + putProperty obj "Construct" (inj fo) + +constructorConstructor :: InterpM Value +constructorConstructor = defaultConstructor "Object" + +--objectWithClassConstructor klass = do +-- o <- newObject klass +-- (((_,_,t):_), _) <- get +-- args <- getArgs +-- p <- getProperty t "prototype" +-- putObjectProperty o "__proto__" p +-- return $ inj o + + +-- Creates a new constructor with supplied constructor +newConstructorWith :: String -> InterpM Value -> InterpM ObjId +newConstructorWith name c = do + fo <- newFuncObject [] [] c + putObjectProperty fo "name" (inj name) + putObjectProperty globalObj name (inj fo) + return fo + +-- Creates a new constructor +newConstructor name = do + fo <- newFuncObject [] [] (defaultConstructor name) + putObjectProperty fo "name" (inj name) + putObjectProperty globalObj name (inj fo) + return fo + +addBuiltIn :: InterpM () +addBuiltIn = do + fo <- newBuiltInFunction ["arg1"] print'' + putProperty globalObj "print" (inj fo) + addObjectBuiltIn newConstructor putBuiltIn + addFunctionBuiltIn newConstructor putBuiltIn callFunction + addErrorBuiltIn newConstructorWith putBuiltIn + addArrayBuiltIn newConstructorWith putBuiltIn + addStringBuiltIn newConstructorWith + addRegexBuiltIn newConstructorWith putBuiltIn + return () + +initEnvironment = do + go <- newObjectRaw "global" + op <- newObjectRaw "Object" + putPropertyInternal go "__proto__" (inj op) + putPropertyInternal op "__parent__" (inj go) + pushContext ([go],go,go, ObjIdNull) + addBuiltIn
+ src/HJS/Interpreter/Host.hs~ view
@@ -0,0 +1,107 @@+{-# OPTIONS -fglasgow-exts #-} +{-# OPTIONS -fallow-overlapping-instances #-} +{-# OPTIONS -fallow-incoherent-instances #-} +{- + Built in functions provided by 'host' +-} +module HJS.Interpreter.Host where + + + +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM +import HJS.Interpreter.Interp + +import HJS.Interpreter.ObjectBasic +import HJS.Interpreter.Object +import HJS.Interpreter.Array +import HJS.Interpreter.Function +import HJS.Interpreter.Error +import HJS.Interpreter.String +import HJS.Interpreter.Regex + +import Control.Monad.State + +globalObj = ObjId 1 +objPrototype = ObjId 2 + + +print' :: InterpM Value +print' = do + args' <- getArgs + op <- getProperty globalObj "_output" + args <- mapM toRealString args' + op' <- toRealString op + let + prefix = if isUndefined op then "" else (op' ++ "\n") + s = concat (prefix:args) + putProperty globalObj "_output" (inj s) + return (inj Undefined) + + +putBuiltIn :: ObjId -> String -> [String] -> InterpM Value -> InterpM () +putBuiltIn obj name args f = do + fo <- newBuiltInFunction args f + putProperty obj name (inj fo) + +objectConstructor :: InterpM Value +objectConstructor = do + o <- newObject "Object" + return $ inj o + + + +newClassObject name = do + obj <- newObject "Object" + putProperty globalObj name (inj obj) + fo <- newBuiltInFunction [] objectConstructor + o <- newObject "Object" + putProperty obj "prototype" (inj o) + putProperty obj "Construct" (inj fo) + +constructorConstructor :: InterpM Value +constructorConstructor = defaultConstructor "Object" + +--objectWithClassConstructor klass = do +-- o <- newObject klass +-- (((_,_,t):_), _) <- get +-- args <- getArgs +-- p <- getProperty t "prototype" +-- putObjectProperty o "__proto__" p +-- return $ inj o + + +-- Creates a new constructor with supplied constructor +newConstructorWith :: String -> InterpM Value -> InterpM ObjId +newConstructorWith name c = do + fo <- newFuncObject [] [] c + putObjectProperty fo "name" (inj name) + putObjectProperty globalObj name (inj fo) + return fo + +-- Creates a new constructor +newConstructor name = do + fo <- newFuncObject [] [] (defaultConstructor name) + putObjectProperty fo "name" (inj name) + putObjectProperty globalObj name (inj fo) + return fo + +addBuiltIn :: InterpM () +addBuiltIn = do + fo <- newBuiltInFunction ["arg1"] print' + putProperty globalObj "print" (inj fo) + addObjectBuiltIn newConstructor putBuiltIn + addFunctionBuiltIn newConstructor putBuiltIn callFunction + addErrorBuiltIn newConstructorWith putBuiltIn + addArrayBuiltIn newConstructorWith putBuiltIn + addStringBuiltIn newConstructorWith + addRegexBuiltIn newConstructorWith putBuiltIn + return () + +initEnvironment = do + go <- newObjectRaw "global" + op <- newObjectRaw "Object" + putPropertyInternal go "__proto__" (inj op) + putPropertyInternal op "__parent__" (inj go) + pushContext ([go],go,go, ObjIdNull) + addBuiltIn
src/HJS/Interpreter/Interp.hs view
@@ -1,5 +1,6 @@ {-# OPTIONS -fglasgow-exts #-} {-# OPTIONS -fallow-overlapping-instances #-} +{-# OPTIONS -fallow-incoherent-instances #-} module HJS.Interpreter.Interp where import Control.Monad.Identity @@ -8,29 +9,18 @@ import HJS.Parser.JavaScript +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM +import HJS.Interpreter.ObjectBasic +import HJS.Interpreter.Object +import HJS.Interpreter.Array +import HJS.Interpreter.Regex +import HJS.Interpreter.Debugger + import Data.Map (Map,fromList,lookup,empty,insert) -class SubType sub sup where - inj :: sub -> sup - prj :: sup -> Maybe sub -instance SubType a (Either a b) where - inj = Left - prj (Left x) = Just x - prj _ = Nothing - -instance SubType a b => SubType a (Either c b) where - inj = Right . inj - prj (Right a) = prj a - prj _ = Nothing - -data Ref = Ref String deriving Show - --- Think I should be including Ref (ie what is returned by LeftExpr) into the Value type. -type Value = Either Int (Either String (Either Ref ())) -type Term = AddExpr - data MyError = NoMsg | Msg String deriving Show instance Error MyError where @@ -39,41 +29,199 @@ -type InterpM = StateT (Map String Value) (ErrorT String Identity) - -instance Show a => Show (InterpM a) where - show s = show $ runIdentity $ runErrorT $ (runStateT s empty) - class InterpC t where interp :: t -> InterpM Value - + +instance InterpC Null where + interp Null = return $ inj Null + +instance InterpC a => InterpC (Maybe a) where + interp (Just x) = interp x + interp _ = return $ inj Null + +instance InterpC a => InterpC [a] where + interp [] = return $ undefinedValue + interp (x:[]) = interp x + interp (x:xs) = do + interp x + interp xs + instance (InterpC t1, InterpC t2) => InterpC (Either t1 t2) where interp (Left x) = interp x interp (Right x) = interp x instance InterpC Literal where interp (LitInt i) = unitInj i + interp (LitString s) = return $ inj s + interp (LitBool b) = return $ inj b + interp (LitNull) = return nullValue + +pnameToString (PropNameId s) = s +pnameToString (PropNameStr s) = s +pnameToString (PropNameInt i) = show i + instance InterpC PrimExpr where interp (Literal l) = interp l interp (Ident s) = return $ inj (Ref s) + interp (Brack e) = interp e + interp (PEFuncDecl f) = interp f + interp This = getThis + interp (Array (ArrSimple a)) = do + vs <- mapM interp a + o <- newArrayObject vs + return $ inj o + interp (Regex (p,f)) = do + newRegex (inj p) (inj f) + interp (HJS.Parser.JavaScript.Object ls) = do + f <- getValue (inj $ Ref "Object") + o <- newCall f [] + mapM_ (toProperty o) ls + return o + + + interp x = throwInternalError $ "Cannot interp PrimExpr " ++ (show x) +toProperty :: Value -> (Either (PropName, AssignE) GetterPutter) -> InterpM () +toProperty o x = case x of + Left (n,e) -> do + v <- interp e + putProperty (toObjId o) (pnameToString n) v + return () + _ -> return () + instance InterpC MemberExpr where interp (MemPrimExpr p) = interp p + interp (ArrayExpr me e) = do + o <- interp me >>= getValue + e' <- interp e + x <- toRealString e' + case (prj o) of + (Just (o::ObjId)) -> return (inj $ RefObj o x) + _ -> throwInternalError $ "Invalid array access: " ++ (show o) +-- o <- interp me >>= getValue +-- e' <- interp e +-- case (prj o) of +-- (Just (o::ObjId)) -> getProperty o pname(toRealString e') +-- _ -> throwInternalError $ "Invalid array access" ++ (show o) + + interp (MemberNew me args) = do + oref <- interp me >>= getValue + args' <- mapM interp args + newCall oref args' + +-- case (prj o) of +-- (Just (o::ObjId)) -> do +-- args' <- mapM interp args +-- fo <- getProperty o "Construct" +-- callFunction fo args' o +-- _ -> throwInternalError $ "Type Error: Not an Object" ++ (show o) + + interp (MemberCall me s) = do + ro <- getRefObj me s + return $ inj ro + + +getRefObj me s = do + o <- interp me >>= getValue + case (prj o) of + (Just (o::ObjId)) -> return (RefObj o s) + _ -> throwInternalError $ "Not an object" ++ (show o) + + + instance InterpC NewExpr where interp (MemberExpr p) = interp p + -- LeftExpr will return a reference instance InterpC LeftExpr where interp (NewExpr n) = interp n + interp (CallExpr c) = interp c +instance InterpC CallExpr where + interp (CallDot e s) = do + obj <- interp e + case (prj obj) of + (Just (i::ObjId)) -> return (inj $ RefObj i s) + _ -> throwInternalError "Attempt to access property on a non-object" +-- interp (CallMember (MemberCall me s) args) = do +-- r@(RefObj o _) <- getRefObj me s +-- f <- getValue (inj r) +-- callFunction f args o + interp (CallMember m args) = do + r <- interp m + args' <- mapM interp args + case prj r of + Just (ref ::Ref) -> do + f <- getValue r + case ref of + RefObj t _ -> callFunction f args' t + Ref t -> callFunction f args' ObjIdNull + _ -> throwInternalError "CallMember requires function reference" + + interp (CallPrim p) = interp p + interp (CallCall m args) = do + f <- interp m + args' <- mapM interp args + callFunction f args' ObjIdNull + + interp p = throwInternalError $ "Cannot interp " ++ (show p) + +-- Call the function object with supplied arguments +callFunction :: Value -> [Value] -> ObjId -> InterpM Value +callFunction f args' this = do + case (prj f) of + (Just (i::ObjId)) -> do + callFunction' i args' this + _ -> throwInternalError $ "Internal Error: Invalid function object" ++ (show f) + +-- Not used. +getCaller = do + cargs <- getValue (inj $ Ref "arguments") + case cargs == undefinedValue of + True -> return nullValue + False -> getProperty (toObjId cargs) "callee" + +callFunction' i args' this = do + c <- getCallee + putProperty i "caller" c + argo <- newObject "arguments" + act <- newObject "activation" + putProperty argo "callee" (inj i) + putProperty act "arguments" (inj argo) + sc' <- getProperty i "Scope" + let (Just (sc::[ObjId])) = (prj sc') + pushContext (act:sc,act,this,i) + putValue (inj $ Ref "arguments") (inj argo) + fargs' <- getProperty i "Args" + let (Just (fargs::[String])) = (prj fargs') + zipWithM (\x y -> putProperty argo (show x) y) [0..] args' + zipWithM (\x y -> putProperty act x y) fargs args' + putProperty argo "length" (inj (length args')) + se <- getProperty i "Call" + res <- (runFunc se) `catchError` handleReturn + + popContext + return res + + + + +runFunc se = do + case (prj se) of + (Just (CallJS se)) -> foldM (\v x -> interp x) (Left 0) se + (Just (CallBuiltIn f)) -> f + _ -> throwInternalError "Internal Error: Invalid function call block" + + -- PostFix returns a real value, so this is where references get dereferenced instance InterpC PostFix where interp (LeftExpr l) = do @@ -91,7 +239,17 @@ instance InterpC UExpr where interp (PostFix p) = interp p - + interp (Not u ) = do u' <- interp u + b <- toRealBool u' + case b of + True -> return $ inj False + _ -> return $ inj True + interp (TypeOf p) = interp p >>= typeOfString + interp (UnaryMinus p) = do x <- interp p + return $ inj $ ((-1) * (toRealInt x)) + interp x = throwInternalError $ "Internal Error: Cannot handle " ++ (show x) + +{- instance InterpC AddExpr where interp (MultExpr x) = interp x interp (Plus x y) = liftIt (+) x y @@ -102,9 +260,15 @@ instance InterpC RelE where interp (ShiftE p) = interp p + interp (LessThan x y) = liftRel (<) x y + interp (GreaterThan x y) = liftRel (>) x y + interp (LessEqual x y) = liftRel (<=) x y + interp (GreaterEqual x y) = liftRel (>=) x y + instance InterpC EqualE where interp (RelE p) = interp p + interp (Equal x y) = liftRel (==) x y instance InterpC BitAnd where interp (EqualE p) = interp p @@ -117,12 +281,65 @@ instance InterpC LogAnd where interp (BitOR p) = interp p + interp (LALogAnd x y) = liftBool (&&) x y + + instance InterpC LogOr where interp (LogAnd p) = interp p + interp (LOLogOr x y) = liftBool (||) x y +--} +instance InterpC AExpr where + interp (AEUExpr e) = interp e + interp (AOp "-" x y) = liftIt (-) x y + interp (AOp "+" x y) = liftIt22 (+) x y + interp (AOp "*" x y) = liftIt (*) x y + interp (AOp "&&" x y) = liftBool (&&) x y + interp (AOp "==" x y) = do x' <- interp x; y' <- interp y; return $ inj $ abstractEquality x' y' + interp (AOp "!=" x y) = do x' <- interp x; y' <- interp y; return $ inj $ not $ abstractEquality x' y' + interp (AOp "===" x y) = do x' <- interp x; y' <- interp y; return $ inj $ strictEquality x' y' + interp (AOp "<" x y) = liftRel (<) x y + interp (AOp ">" x y) = liftRel (>) x y + interp (AOp "<=" x y) = liftRel (<=) x y + interp (AOp ">=" x y) = liftRel (>=) x y + + interp (AOp op x y) = throwInternalError $ "Operator not implemented: " ++ (show op) + +liftIt22 :: (InterpC x, InterpC y) => (Int -> Int -> Int) -> x -> y -> InterpM Value +liftIt22 f x y = do + x' <- interp x >>= toPrimitive HNone + y' <- interp y >>= toPrimitive HNone + case typeOf x' == typeOf nullStringValue || typeOf y' == typeOf nullStringValue of + True -> do + x'' <- toRealString x' + y'' <- toRealString x' + return $ inj (x'' ++ y'') + False -> return $ inj $ f (toRealInt x') (toRealInt y') + + +strictEquality x y = if typeOf x /= typeOf y then False + else if ( x == nullValue || y == undefinedValue) then True + else ((==) x y) + +abstractEquality x y = if typeOf x == typeOf y then ((==) x y) + else ( x == nullValue && y == undefinedValue) || ( y == nullValue && x == undefinedValue) + +--if typeOf x == (typeOf nullValue) || typeOf x == (typeOf undefinedValue) then True else False + +liftBool f x y = do + x' <- interp x >>= toRealBool + y' <- interp y >>= toRealBool + return $ inj $ (f x' y') + +liftRel f x y = do + x' <- interp x + y' <- interp y + return $ inj $ (f x' y') + + instance InterpC CondE where - interp (LogOr p) = interp p + interp (AExpr p) = interp p instance InterpC AssignE where interp (CondE p) = interp p @@ -130,85 +347,231 @@ v <- interp right r <- interp left putValue r v + return v + interp (Assign left op right ) = do + v <- interp right + r <- interp left + rval <- getValue r + v' <- case op of + AssignOpPlus -> liftIt3 (+) rval v + putValue r v' + return v' + interp (AEFuncDecl fd) = interp fd + +instance InterpC FuncDecl where + interp (FuncDecl (Just s) args ses) = do + fo <- newFuncObject args ses (defaultConstructor "Object") + putProperty fo "name" (inj s) + putValue (inj (Ref s)) (inj fo) + return (inj fo) + instance InterpC Expr where interp (AssignE p) = interp p +instance InterpC VarDecl where + interp (VarDecl s (Just e)) = do v <- interp e; putValue (inj (Ref s)) v; return v + interp (VarDecl s Nothing) = do putValue (inj (Ref s)) (inj Undefined); return (inj Undefined) + instance InterpC IfStmt where interp (IfElse e s1 s2) = do - b <- interp e - case prj b of - Just (0::Int) -> interp s2 - _ -> interp s1 + b <- interp e >>= toRealBool + case b of + True -> interp s1 + _ -> interp s2 + interp (IfOnly e s) = do + b <- interp e >>= toRealBool + case b of + True -> interp s + _ -> return (inj Undefined) + +-- handleBreakContinue +handleBreakContinue (ThrowBreak s) = return (inj Break) +handleBreakContinue (ThrowContinue s) = return (inj (0::Int)) +handleBreakContinue e = throwError e + + + +-- TODO Need to syntacticall check break/continue are within It statement +-- Handle values of the ItStmt +-- Push a context so that vars local to this are lost when leaving. instance InterpC ItStmt where interp (DoWhile s e ) = do - v <- interp s - b <- interp e - case prj b of - Just (0::Int) -> return v - _ -> interp (DoWhile s e ) + vv <- (interp s) `catchError` handleBreakContinue + case (prj vv) of + (Just Break) -> return (inj (0::Int)) + _ -> do + b <- interp e >>= toRealBool + case b of + False -> return vv + _ -> interp (DoWhile s e ) + interp (While e s) = do + b <- interp e >>= toRealBool + case b of + False -> return (inj Undefined) -- FIXME + _ -> do + vv <- (interp s) `catchError` handleBreakContinue + case (prj vv) of + (Just Break) -> return (inj (0::Int)) + _ -> interp (While e s) + interp (For e1 e2 e3 s) = interpFor e1 e2 e3 s + interp (ForVar e1 e2 e3 s) = interpFor e1 e2 e3 s + interp (ForIn e1 e2 s ) = interpForIn e1 e2 s +-- Note that e2 is not evaluated each time around the loop. TODO - check this. +interpForIn e1 e2 s = do + v <- interp e1 + e <- interp e2 + ps <- getPropertyNames (toObjId e) + mapM (\p -> do putValue v (inj p); interp s) ps + return (undefinedValue) + + + +interpFor e1 e2 e3 s = do + interp e1 + b <- interp e2 >>= toRealBool + case b of + False -> return (inj Null) + _ -> do + vv <- interp s `catchError` handleBreakContinue + case (prj vv) of + (Just Break) -> return (inj (0::Int)) + _ -> do interp e3; interp (For Nothing e2 e3 s) + + + + +interpList :: InterpC a => [a] -> InterpM Value +interpList (x:[]) = interp x + + +interpList (x:xs) = do + interp Null + interp x + interpList xs +-- +--interpList (x:[]) = do +-- interp x + instance InterpC Stmt where + interp (StmtPos p s) = do + putPosition p + debugPoint p + interp s + +instance InterpC Stmt' where interp (ExprStmt p) = interp p interp (IfStmt p) = interp p - interp (Block xs) = foldM (\v x -> interp x) (Left 0) xs + interp (Block xs) = interp xs interp (ItStmt p) = interp p + interp (ReturnStmt (Just p)) = interp p >>= throwReturn + interp (ReturnStmt Nothing) = throwReturn (inj Undefined) + interp (BreakStmt s) = throwBreak s + interp (ContStmt s) = throwContinue s + interp (EmptyStmt) = return $ inj Undefined + interp (VarStmt v) = do vs <- mapM interp v; return $ head vs + interp (ThrowExpr e) = interp e >>= throwException + interp (TryStmt e) = interp e + interp (Switch e s) = do + x <- interp e + handleSwitch s x `catchError` handleBreakContinue + interp s = error $ "Missing Stmt handling" ++ (show s) + +handleSwitch ((CaseClause e s):cs) x = do + y <- interp e + case abstractEquality x y of + True -> do interp s; fallThruSwitch cs + False -> handleSwitch cs x + +handleSwitch ((DefaultClause s):cs) x = do interp s; fallThruSwitch cs + +handleSwitch [] x = return $ undefinedValue -- FIXME Wrong if we want to handle values of stmts correctly + +fallThruSwitch ((CaseClause e s):cs) = do interp s; fallThruSwitch cs +fallThruSwitch ((DefaultClause s):cs) = do interp s; fallThruSwitch cs +fallThruSwitch [] = return $ undefinedValue + +instance InterpC TryStmt where + interp (TryTry s1 c s2) = interp s1 `catchError` (handleException c) + +instance InterpC Catch where + interp (Catch _ s) = interp s + interp (CatchIf _ s e) = interp s + interp (CatchCatch i _ s) = interp s + +-- TODO - remove the putValue i +handleException ((CatchCatch i _ s):_) (ThrowException v) = do + putValue (inj $ Ref i) v + interp s +handleException _ e = throwError e + instance InterpC SourceElement where interp (Stmt s) = interp s + interp (SEFuncDecl fd) = interp fd instance InterpC JSProgram where - interp (JSProgram xs) = foldM (\v x -> interp x) (Left 0) xs - + interp (JSProgram xs) = interp xs +-- This needs to have sub -> sub1 -> Int otherwise get problem with bindPrj. +liftIt ::(SubType sub Value, SubType sub1 Value, InterpC t1, InterpC t) => (sub -> sub1 -> Int ) -> t -> t1 -> InterpM Value liftIt f x y = interp x `bindPrj`\i -> interp y `bindPrj` \j -> - unitInj ((f i j)) + (return . inj) ((f i j)) +liftIt3 ::(SubType sub Value, SubType sub1 Value) => (sub -> sub1 -> Int ) -> Value -> Value-> InterpM Value +liftIt3 f x y = case (prj x) of + (Just x') -> case (prj y) of + (Just y') -> return $ inj $ f x' y' + _ -> throwInternalError "Cannot prj" + _ -> throwInternalError "Cannot prj" + liftIt2 g x y = interp x `bindPrj`\i -> interp y `bindPrj` \j -> g i j + + +{-- instance InterpC MultExpr where interp (UExpr x) = interp x interp (Times x y) = liftIt (*) x y interp (Div x y) = liftIt2 (\i j -> if j == 0 then - throwError "Divide by Zero" + throwInternalError "Run Time Error: Divide by Zero" else unitInj ((i `div` j )::Int)) x y interp (Mod x y) = liftIt2 (\i j -> if j == 0 then - throwError "Divide by Zero" + throwInternalError "Run Time Error: Divide by Zero" else unitInj ((i `mod` j )::Int)) x y - +--} unitInj = return . inj m `bindPrj` k = m >>= \a -> case (prj a) of Just x -> k x - Nothing -> error "Run time error" + Nothing -> (throwInternalError $ "Internal Error: Cannot prj Value" ++ (show a)) --- Get value from environment if Value is a reference, throwError if it isn't -getValue :: Value -> InterpM Value -getValue v = do - env <- get - case prj v of - ((Just (Ref s))::Maybe Ref) -> case Data.Map.lookup s env of - Just val -> return val - Nothing -> throwError ("Error: Unbound reference " ++ s) - _ -> return v +defaultConstructor :: String -> InterpM Value +defaultConstructor name = do + o <- newObject name + t <- getThis + args <- getArgs + p <- getProperty (toObjId t) "prototype" + putProperty o "__proto__" p + callFunction' (toObjId t) args o + return $ inj o -putValue :: Value -> Value -> InterpM Value -putValue r v = do - env <- get - case prj r of - ((Just (Ref s))::Maybe Ref) -> put (insert s v env) >>= \_ -> return v - _ -> throwError "Error: Invalid Reference" - +x :: Value +x = inj (ObjId 1) + +callIt :: Int -> Int +callIt _ = 99
+ src/HJS/Interpreter/Interp.hs-boot view
@@ -0,0 +1,7 @@+module HJS.Interpreter.Interp where + +import HJS.Interpreter.InterpMDecl + +callIt :: Int -> Int + +callFunction :: Value -> [Value] -> ObjId -> InterpM Value
+ src/HJS/Interpreter/Interp.hs~ view
@@ -0,0 +1,561 @@+{-# OPTIONS -fglasgow-exts #-} +{-# OPTIONS -fallow-overlapping-instances #-} +{-# OPTIONS -fallow-incoherent-instances #-} +module HJS.Interpreter.Interp where + +import Control.Monad.Identity +import Control.Monad.Error +import Control.Monad.State + + +import HJS.Parser.JavaScript +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM + +import HJS.Interpreter.ObjectBasic +import HJS.Interpreter.Object +import HJS.Interpreter.Array +import HJS.Interpreter.Regex +import HJS.Interpreter.Debugger + +import Data.Map (Map,fromList,lookup,empty,insert) + + +data MyError = NoMsg | Msg String deriving Show + +instance Error MyError where + noMsg = NoMsg + strMsg = Msg + + + +class InterpC t where + interp :: t -> InterpM Value + + +instance InterpC Null where + interp Null = return $ inj Null + +instance InterpC a => InterpC (Maybe a) where + interp (Just x) = interp x + interp _ = return $ inj Null + +instance InterpC a => InterpC [a] where + interp [] = return $ undefinedValue + interp (x:[]) = interp x + interp (x:xs) = do + interp x + interp xs + +instance (InterpC t1, InterpC t2) => InterpC (Either t1 t2) where + interp (Left x) = interp x + interp (Right x) = interp x + +instance InterpC Literal where + interp (LitInt i) = unitInj i + interp (LitString s) = return $ inj s + interp (LitBool b) = return $ inj b + interp (LitNull) = return nullValue + + +instance InterpC PrimExpr where + interp (Literal l) = interp l + interp (Ident s) = return $ inj (Ref s) + interp (Brack e) = interp e + interp (PEFuncDecl f) = interp f + interp This = getThis + interp (Array (ArrSimple a)) = do + vs <- mapM interp a + o <- newArrayObject vs + return $ inj o + interp (Regex (p,f)) = do + newRegex (inj p) (inj f) + + + + interp x = throwInternalError $ "Cannot interp PrimExpr " ++ (show x) + + + +instance InterpC MemberExpr where + interp (MemPrimExpr p) = interp p + interp (ArrayExpr me e) = do + o <- interp me >>= getValue + e' <- interp e + x <- toRealString e' + case (prj o) of + (Just (o::ObjId)) -> return (inj $ RefObj o x) + _ -> throwInternalError $ "Invalid array access: " ++ (show o) + + +-- o <- interp me >>= getValue +-- e' <- interp e +-- case (prj o) of +-- (Just (o::ObjId)) -> getProperty o pname(toRealString e') +-- _ -> throwInternalError $ "Invalid array access" ++ (show o) + + interp (MemberNew me args) = do + oref <- interp me >>= getValue + args' <- mapM interp args + newCall oref args' + +-- case (prj o) of +-- (Just (o::ObjId)) -> do +-- args' <- mapM interp args +-- fo <- getProperty o "Construct" +-- callFunction fo args' o +-- _ -> throwInternalError $ "Type Error: Not an Object" ++ (show o) + + interp (MemberCall me s) = do + ro <- getRefObj me s + return $ inj ro + + +getRefObj me s = do + o <- interp me >>= getValue + case (prj o) of + (Just (o::ObjId)) -> return (RefObj o s) + _ -> throwInternalError $ "Not an object" ++ (show o) + + + +instance InterpC NewExpr where + interp (MemberExpr p) = interp p + + +-- LeftExpr will return a reference +instance InterpC LeftExpr where + interp (NewExpr n) = interp n + interp (CallExpr c) = interp c + +instance InterpC CallExpr where + interp (CallDot e s) = do + obj <- interp e + case (prj obj) of + (Just (i::ObjId)) -> return (inj $ RefObj i s) + _ -> throwInternalError "Attempt to access property on a non-object" + +-- interp (CallMember (MemberCall me s) args) = do +-- r@(RefObj o _) <- getRefObj me s +-- f <- getValue (inj r) +-- callFunction f args o + + interp (CallMember m args) = do + r <- interp m + args' <- mapM interp args + case prj r of + Just (ref ::Ref) -> do + f <- getValue r + case ref of + RefObj t _ -> callFunction f args' t + Ref t -> callFunction f args' ObjIdNull + _ -> throwInternalError "CallMember requires function reference" + + interp (CallPrim p) = interp p + interp (CallCall m args) = do + f <- interp m + args' <- mapM interp args + callFunction f args' ObjIdNull + + interp p = throwInternalError $ "Cannot interp " ++ (show p) + +-- Call the function object with supplied arguments +callFunction :: Value -> [Value] -> ObjId -> InterpM Value +callFunction f args' this = do + case (prj f) of + (Just (i::ObjId)) -> do + callFunction' i args' this + _ -> throwInternalError $ "Internal Error: Invalid function object" ++ (show f) + +-- Not used. +getCaller = do + cargs <- getValue (inj $ Ref "arguments") + case cargs == undefinedValue of + True -> return nullValue + False -> getProperty (toObjId cargs) "callee" + +callFunction' i args' this = do + c <- getCallee + putProperty i "caller" c + argo <- newObject "arguments" + act <- newObject "activation" + putProperty argo "callee" (inj i) + putProperty act "arguments" (inj argo) + sc' <- getProperty i "Scope" + let (Just (sc::[ObjId])) = (prj sc') + pushContext (act:sc,act,this,i) + putValue (inj $ Ref "arguments") (inj argo) + fargs' <- getProperty i "Args" + let (Just (fargs::[String])) = (prj fargs') + zipWithM (\x y -> putProperty argo (show x) y) [0..] args' + zipWithM (\x y -> putProperty act x y) fargs args' + putProperty argo "length" (inj (length args')) + se <- getProperty i "Call" + res <- (runFunc se) `catchError` handleReturn + + popContext + return res + + + + +runFunc se = do + case (prj se) of + (Just (CallJS se)) -> foldM (\v x -> interp x) (Left 0) se + (Just (CallBuiltIn f)) -> f + _ -> throwInternalError "Internal Error: Invalid function call block" + + +-- PostFix returns a real value, so this is where references get dereferenced +instance InterpC PostFix where + interp (LeftExpr l) = do + r <- interp l + getValue r + + interp (PostInc l) = do + r <- interp l + v <- getValue r -- TODO fixme. + v' <- getValue r `bindPrj` \ i -> + unitInj (i+ 1) + putValue r v' + return v + + +instance InterpC UExpr where + interp (PostFix p) = interp p + interp (Not u ) = do u' <- interp u + b <- toRealBool u' + case b of + True -> return $ inj False + _ -> return $ inj True + interp (TypeOf p) = interp p >>= typeOfString + interp (UnaryMinus p) = do x <- interp p + return $ inj $ ((-1) * (toRealInt x)) + interp x = throwInternalError $ "Internal Error: Cannot handle " ++ (show x) + +{- +instance InterpC AddExpr where + interp (MultExpr x) = interp x + interp (Plus x y) = liftIt (+) x y + interp (Minus x y) = liftIt (-) x y + +instance InterpC ShiftE where + interp (AddExpr p) = interp p + +instance InterpC RelE where + interp (ShiftE p) = interp p + interp (LessThan x y) = liftRel (<) x y + interp (GreaterThan x y) = liftRel (>) x y + interp (LessEqual x y) = liftRel (<=) x y + interp (GreaterEqual x y) = liftRel (>=) x y + + +instance InterpC EqualE where + interp (RelE p) = interp p + interp (Equal x y) = liftRel (==) x y + +instance InterpC BitAnd where + interp (EqualE p) = interp p + +instance InterpC BitXOR where + interp (BitAnd p) = interp p + +instance InterpC BitOR where + interp (BitXOR p) = interp p + +instance InterpC LogAnd where + interp (BitOR p) = interp p + interp (LALogAnd x y) = liftBool (&&) x y + + + +instance InterpC LogOr where + interp (LogAnd p) = interp p + interp (LOLogOr x y) = liftBool (||) x y +--} + +instance InterpC AExpr where + interp (AEUExpr e) = interp e + interp (AOp "-" x y) = liftIt (-) x y + interp (AOp "+" x y) = liftIt22 (+) x y + interp (AOp "*" x y) = liftIt (*) x y + interp (AOp "&&" x y) = liftBool (&&) x y + interp (AOp "==" x y) = do x' <- interp x; y' <- interp y; return $ inj $ abstractEquality x' y' + interp (AOp "!=" x y) = do x' <- interp x; y' <- interp y; return $ inj $ not $ abstractEquality x' y' + interp (AOp "===" x y) = do x' <- interp x; y' <- interp y; return $ inj $ strictEquality x' y' + interp (AOp "<" x y) = liftRel (<) x y + interp (AOp ">" x y) = liftRel (>) x y + interp (AOp "<=" x y) = liftRel (<=) x y + interp (AOp ">=" x y) = liftRel (>=) x y + + interp (AOp op x y) = throwInternalError $ "Operator not implemented: " ++ (show op) + +liftIt22 :: (InterpC x, InterpC y) => (Int -> Int -> Int) -> x -> y -> InterpM Value +liftIt22 f x y = do + x' <- interp x >>= toPrimitive HNone + y' <- interp y >>= toPrimitive HNone + case typeOf x' == typeOf nullStringValue || typeOf y' == typeOf nullStringValue of + True -> do + x'' <- toRealString x' + y'' <- toRealString x' + return $ inj (x'' ++ y'') + False -> return $ inj $ f (toRealInt x') (toRealInt y') + + +strictEquality x y = if typeOf x /= typeOf y then False + else if ( x == nullValue || y == undefinedValue) then True + else ((==) x y) + +abstractEquality x y = if typeOf x == typeOf y then ((==) x y) + else ( x == nullValue && y == undefinedValue) || ( y == nullValue && x == undefinedValue) + +--if typeOf x == (typeOf nullValue) || typeOf x == (typeOf undefinedValue) then True else False + +liftBool f x y = do + x' <- interp x >>= toRealBool + y' <- interp y >>= toRealBool + return $ inj $ (f x' y') + +liftRel f x y = do + x' <- interp x + y' <- interp y + return $ inj $ (f x' y') + + +instance InterpC CondE where + interp (AExpr p) = interp p + +instance InterpC AssignE where + interp (CondE p) = interp p + interp (Assign left AssignNormal right) = do + v <- interp right + r <- interp left + putValue r v + return v + interp (Assign left op right ) = do + v <- interp right + r <- interp left + rval <- getValue r + v' <- case op of + AssignOpPlus -> liftIt3 (+) rval v + putValue r v' + return v' + interp (AEFuncDecl fd) = interp fd + +instance InterpC FuncDecl where + interp (FuncDecl (Just s) args ses) = do + fo <- newFuncObject args ses (defaultConstructor "Object") + putProperty fo "name" (inj s) + putValue (inj (Ref s)) (inj fo) + return (inj fo) + + +instance InterpC Expr where + interp (AssignE p) = interp p + +instance InterpC VarDecl where + interp (VarDecl s (Just e)) = do v <- interp e; putValue (inj (Ref s)) v; return v + interp (VarDecl s Nothing) = do putValue (inj (Ref s)) (inj Undefined); return (inj Undefined) + +instance InterpC IfStmt where + interp (IfElse e s1 s2) = do + b <- interp e >>= toRealBool + case b of + True -> interp s1 + _ -> interp s2 + interp (IfOnly e s) = do + b <- interp e >>= toRealBool + case b of + True -> interp s + _ -> return (inj Undefined) + + +-- handleBreakContinue +handleBreakContinue (ThrowBreak s) = return (inj Break) +handleBreakContinue (ThrowContinue s) = return (inj (0::Int)) +handleBreakContinue e = throwError e + + + +-- TODO Need to syntacticall check break/continue are within It statement +-- Handle values of the ItStmt +-- Push a context so that vars local to this are lost when leaving. +instance InterpC ItStmt where + interp (DoWhile s e ) = do + vv <- (interp s) `catchError` handleBreakContinue + case (prj vv) of + (Just Break) -> return (inj (0::Int)) + _ -> do + b <- interp e >>= toRealBool + case b of + False -> return vv + _ -> interp (DoWhile s e ) + interp (While e s) = do + b <- interp e >>= toRealBool + case b of + False -> return (inj Undefined) -- FIXME + _ -> do + vv <- (interp s) `catchError` handleBreakContinue + case (prj vv) of + (Just Break) -> return (inj (0::Int)) + _ -> interp (While e s) + interp (For e1 e2 e3 s) = interpFor e1 e2 e3 s + interp (ForVar e1 e2 e3 s) = interpFor e1 e2 e3 s + interp (ForIn e1 e2 s ) = interpForIn e1 e2 s + +-- Note that e2 is not evaluated each time around the loop. TODO - check this. +interpForIn e1 e2 s = do + v <- interp e1 + e <- interp e2 + ps <- getPropertyNames (toObjId e) + mapM (\p -> do putValue v (inj p); interp s) ps + return (undefinedValue) + + + +interpFor e1 e2 e3 s = do + interp e1 + b <- interp e2 >>= toRealBool + case b of + False -> return (inj Null) + _ -> do + vv <- interp s `catchError` handleBreakContinue + case (prj vv) of + (Just Break) -> return (inj (0::Int)) + _ -> do interp e3; interp (For Nothing e2 e3 s) + + + + +interpList :: InterpC a => [a] -> InterpM Value +interpList (x:[]) = interp x + + +interpList (x:xs) = do + interp Null + interp x + interpList xs +-- +--interpList (x:[]) = do +-- interp x + +instance InterpC Stmt where + interp (StmtPos p s) = do + putPosition p + debugPoint p + interp s + +instance InterpC Stmt' where + interp (ExprStmt p) = interp p + interp (IfStmt p) = interp p + interp (Block xs) = interp xs + interp (ItStmt p) = interp p + interp (ReturnStmt (Just p)) = interp p >>= throwReturn + interp (ReturnStmt Nothing) = throwReturn (inj Undefined) + interp (BreakStmt s) = throwBreak s + interp (ContStmt s) = throwContinue s + interp (EmptyStmt) = return $ inj Undefined + interp (VarStmt v) = do vs <- mapM interp v; return $ head vs + interp (ThrowExpr e) = interp e >>= throwException + interp (TryStmt e) = interp e + interp (Switch e s) = do + x <- interp e + handleSwitch s x `catchError` handleBreakContinue + + interp s = error $ "Missing Stmt handling" ++ (show s) + +handleSwitch ((CaseClause e s):cs) x = do + y <- interp e + case abstractEquality x y of + True -> do interp s; fallThruSwitch cs + False -> handleSwitch cs x + +handleSwitch ((DefaultClause s):cs) x = do interp s; fallThruSwitch cs + +handleSwitch [] x = return $ undefinedValue -- FIXME Wrong if we want to handle values of stmts correctly + +fallThruSwitch ((CaseClause e s):cs) = do interp s; fallThruSwitch cs +fallThruSwitch ((DefaultClause s):cs) = do interp s; fallThruSwitch cs +fallThruSwitch [] = return $ undefinedValue + +instance InterpC TryStmt where + interp (TryTry s1 c s2) = interp s1 `catchError` (handleException c) + +instance InterpC Catch where + interp (Catch _ s) = interp s + interp (CatchIf _ s e) = interp s + interp (CatchCatch i _ s) = interp s + +-- TODO - remove the putValue i +handleException ((CatchCatch i _ s):_) (ThrowException v) = do + putValue (inj $ Ref i) v + interp s +handleException _ e = throwError e + +instance InterpC SourceElement where + interp (Stmt s) = interp s + interp (SEFuncDecl fd) = interp fd + +instance InterpC JSProgram where + interp (JSProgram xs) = interp xs + + +-- This needs to have sub -> sub1 -> Int otherwise get problem with bindPrj. +liftIt ::(SubType sub Value, SubType sub1 Value, InterpC t1, InterpC t) => (sub -> sub1 -> Int ) -> t -> t1 -> InterpM Value +liftIt f x y = interp x `bindPrj`\i -> + interp y `bindPrj` \j -> + (return . inj) ((f i j)) + +liftIt3 ::(SubType sub Value, SubType sub1 Value) => (sub -> sub1 -> Int ) -> Value -> Value-> InterpM Value +liftIt3 f x y = case (prj x) of + (Just x') -> case (prj y) of + (Just y') -> return $ inj $ f x' y' + _ -> throwInternalError "Cannot prj" + _ -> throwInternalError "Cannot prj" + +liftIt2 g x y = interp x `bindPrj`\i -> + interp y `bindPrj` \j -> g i j + + + +{-- +instance InterpC MultExpr where + interp (UExpr x) = interp x + interp (Times x y) = liftIt (*) x y + interp (Div x y) = liftIt2 (\i j -> + if j == 0 then + throwInternalError "Run Time Error: Divide by Zero" + else + unitInj ((i `div` j )::Int)) x y + + interp (Mod x y) = liftIt2 (\i j -> + if j == 0 then + throwInternalError "Run Time Error: Divide by Zero" + else + unitInj ((i `mod` j )::Int)) x y +--} +unitInj = return . inj + +m `bindPrj` k = + m >>= \a -> + case (prj a) of + Just x -> k x + Nothing -> (throwInternalError $ "Internal Error: Cannot prj Value" ++ (show a)) + + +defaultConstructor :: String -> InterpM Value +defaultConstructor name = do + o <- newObject name + t <- getThis + args <- getArgs + p <- getProperty (toObjId t) "prototype" + putProperty o "__proto__" p + callFunction' (toObjId t) args o + return $ inj o + + +x :: Value +x = inj (ObjId 1) + +callIt :: Int -> Int +callIt _ = 99
+ src/HJS/Interpreter/InterpM.hs view
@@ -0,0 +1,622 @@+{- + Note: Do not add + {-# OPTIONS -fglasgow-exts #-} + {-# OPTIONS -fallow-overlapping-instances #-} + {-# OPTIONS -fallow-incoherent-instances #-} + as this causes problems + +--} +{-# OPTIONS -fglasgow-exts #-} +module HJS.Interpreter.InterpM where + +import Control.Monad.Identity +import Control.Monad.Error +import Control.Monad.State +import System.IO.Unsafe +import Debug.Trace +import HJS.Interpreter.Printf + + +import HJS.Parser.JavaScript hiding (Object) + +import HJS.Interpreter.InterpMDecl +import {-# SOURCE #-} HJS.Interpreter.Interp + +import Data.Map as M +import Data.List +{- + + VALUE + +-} + +data PrimHint = HString | HNumber | HNone + +-- These correspond to the ToX functions covered in the specification. +-- Converting from one type to another remaining within the Value type +class Convert a where + typeOf :: a -> [Int] + typeOf _ = [] + toBoolean :: a -> InterpM Value + toBoolean _ = return $ inj False + toNumber :: a -> Value + toNumber _ = inj (0::Int) + toString :: a -> InterpM Value + toString _ = return $ inj "" + toPrimitive :: PrimHint -> a -> InterpM Value + toPrimitive _ i = return $ undefinedValue + + + +instance (Convert a, Convert b) => Convert (Either a b) where + toBoolean (Left x) = toBoolean x + toBoolean (Right x) = toBoolean x + toNumber (Left x) = toNumber x + toNumber (Right x) = toNumber x + toString (Left x) = toString x + toString (Right x) = toString x + typeOf (Left x) = 0:typeOf x + typeOf (Right y) = 1:typeOf y + toPrimitive h (Left x) = toPrimitive h x + toPrimitive h (Right x) = toPrimitive h x + + + +instance Convert Int where + toBoolean 0 = return $ inj False + toBoolean _ = return $ inj True + toNumber i = inj (i::Int) + toString i = return $ inj (show i) + toPrimitive _ i = return $ inj i + + +instance Convert String where + toBoolean "" = return $ inj False + toBoolean _ = return $ inj True + toNumber s = inj $ ((read s)::Int) + toString s = return $ inj s + toPrimitive _ i = return $ inj i + +instance Convert Bool where + toBoolean b = return $ inj b + toNumber False = inj $ (0::Int) + toNumber True = inj $ (1::Int) + toString False = return $ inj "false" + toString True = return $ inj "true" + toPrimitive _ i = return $ inj i + + +instance Convert Ref +instance Convert Null where + toString _ = return $ inj "null" + toPrimitive _ i = return $ inj i + + + +instance Convert Undefined where + toString _ = return $ inj "undefined" + toPrimitive _ i = return $ inj i + + +instance Convert () + +instance Convert [Int] where + toString i = return $ inj (show i) + +instance Convert [SourceElement] where + toString _ = return $ inj "<code>" + +instance Convert [String] where + toString ss = return $ inj (show ss) + +instance Convert CallValue + +instance Convert ObjId where + toString o = do + v <- getProperty o "toString" + case v == undefinedValue of + False -> callFunction v [] o + True -> return $ inj "[object]" + + toPrimitive h o = do + m <- getProperty o "toString" + case m == undefinedValue of + False -> callFunction m [] o + True -> return undefinedValue + toBoolean (ObjId i) = return $ inj True + toBoolean _ = return $ inj False + + +instance Convert [ObjId] + +instance Ord SourceElement where + compare _ _ = EQ + +instance Eq SourceElement where + (==) _ _ = True + +class SubType sub sup where + inj :: sub -> sup + prj :: sup -> Maybe sub + +instance SubType a (Either a b) where + inj = Left + prj (Left x) = Just x + prj _ = Nothing + +instance SubType a b => SubType a (Either c b) where + inj = Right . inj + prj (Right a) = prj a + prj _ = Nothing + +instance SubType sub () where + inj _ = () + prj _ = Nothing + +toObjId = prjObjId + +prjObjId :: Value -> ObjId +prjObjId v = case prj v of + (Just s) -> s + _ -> error $ "Impossible Error converting to ObjId" ++ (show v) + +prjInt :: Value -> Int +prjInt v= case prj v of + (Just s) -> s + _ -> error "Impossible Error" + +prjBool :: Value -> Bool +prjBool v= case prj v of + (Just s) -> s + _ -> error "Impossible Error" + +prjString :: Value -> String +prjString v = case prj v of + (Just s) -> s + _ -> error "Impossible Error" + +toValueList :: Value -> [Value] +toValueList v = case prj v of + (Just (s::[Value])) -> s + _ -> error "Impossible Error" + +toRealInt :: Convert a => a -> Int +toRealInt v = case prj (toNumber v) of + (Just s) -> s + _ -> error "Impossible Error" + + +toRealString :: Convert a => a -> InterpM String +toRealString v = do + s <- toString v + return $ prjString s + +toRealBool :: Convert a => a -> InterpM Bool +toRealBool v = do + b <- toBoolean v + return $ prjBool b + + +typeOfString :: Value -> InterpM Value +typeOfString v | typeOf v == typeOf undefinedValue = return $ inj "undefined" +typeOfString v | typeOf v == typeOf nullValue = return $ inj "object" +typeOfString v | typeOf v == typeOf trueValue = return $ inj "boolean" +typeOfString v | typeOf v == typeOf zeroValue = return $ inj "number" +typeOfString v | typeOf v == typeOf nullStringValue = return $ inj "string" +typeOfString v | typeOf v == typeOf nullObjValue = return $ inj "object" +typeOfString _ = return $ inj "unknown" + + + +instance Convert BreakContinue + +nullValue :: Value +nullValue = inj Null + +undefinedValue :: Value +undefinedValue = inj Undefined + +trueValue :: Value +trueValue = inj True + +zeroValue :: Value +zeroValue = inj (0::Int) + +nullStringValue :: Value +nullStringValue = inj "" + +nullObjValue :: Value +nullObjValue = inj ObjIdNull + + +{- + OBJECT + +-} + + + + + + +getObject :: ObjId -> InterpM Object +getObject i = do + s <- get + case M.lookup i (oheap s) of + Just o -> return o + Nothing -> throwInternalError "Object not found" + +putObject :: Object -> InterpM () +putObject o = do + s <- get + put s { oheap = M.insert (idd o) o (oheap s) } + + +getObjectProperty' :: Object -> String -> InterpM (Maybe ObjId) +getObjectProperty' o k = do + v <- getProperty' o k + case (prj v) of + Just (id::ObjId) -> return $ Just id + Nothing -> return Nothing + +getPrototypeObject' o = do + case M.lookup "__proto__" (properties o) of + Just (v,_) -> do + case prj v of + Just (id::ObjId) -> return $ Just id + Nothing -> return Nothing + Nothing -> return Nothing + + +getProperty' :: Object -> String -> InterpM Value +getProperty' o k = do + case M.lookup k (properties o) of + Just (v,_) -> return v + Nothing -> do + proto <- getPrototypeObject' o + case proto of + Nothing -> return $ inj Undefined + Just p -> getProperty p k + +getProperty :: ObjId -> String -> InterpM Value +getProperty id k = do + traceM $ printf "getProperty %s %s" id k + o <- getObject id + getProperty' o k + + +putPropertyInternal id k v = do + o <- getObject id + cp <- canPut o k + case cp of + True -> do + let o' = o { properties = M.insert k (v,[DontEnum]) (properties o)} + putObject o' + False -> return () + +putProperty :: ObjId -> String -> Value -> InterpM () +putProperty id k v = do + traceM $ printf "putProperty %s %s" id k + o <- getObject id + case klass o of + "Array" -> putArrayProperty id k v + _ -> putObjectProperty id k v + +putObjectProperty id k v = do + o <- getObject id + cp <- canPut o k + case cp of + True -> do + let o' = o { properties = M.insert k (v,[]) (properties o)} + putObject o' + False -> return () + +toUInt32 :: String -> Int +toUInt32 s = read s + +putArrayProperty id k v = do + o <- getObject id + cp <- canPut o k + case cp of + True -> do + len <- getProperty id "length" + case prj len of + (Just (l::Int)) -> do + let idx = toUInt32 k + newlen = if idx < l then l else idx + 1 + putObjectProperty id k v + putObjectProperty id "length" (inj newlen) + _ -> throwInternalError $ "Invalid value for array length: " ++ (show len) + False -> return () + + +checkAttr :: Object -> String -> Attribute -> InterpM Bool +checkAttr o k attr = do attrs <- getAttr o k; return (elem attr attrs) + +getAttr :: Object -> String -> InterpM [Attribute] +getAttr o k = case M.lookup k (properties o) of + Just (_,a) -> return a + Nothing -> case prototype o of + Nothing -> return [] + Just p -> do + p' <- getObject p + getAttr p' k + +putAttr o k attr = case M.lookup k (properties o) of + Just (v,attrs) -> do + let o' = o { properties = M.insert k (v,attr:attrs) (properties o)} + putObject o' + Nothing -> case prototype o of + Nothing -> return () + Just p -> do + p' <- getObject p + putAttr p' k attr + + +canPut o k = do f <- checkAttr o k ReadOnly; return (not f) +canEnum o k = do f <- checkAttr o k DontEnum; return (not f) + + +hasProperty :: Object -> String -> Bool +hasProperty o k = M.member k (properties o) + +deleteProperty :: Object -> String -> Object +deleteProperty o k = o { properties = M.delete k (properties o) } + +-- Creates a new raw object and inserts it into the object store +newObjectRaw :: String -> InterpM ObjId +newObjectRaw k = do + traceM $ printf "newObjectRaw %s" k + s <- get + let os = oheap s + let id' = ObjId $ (size os)+1 + o = Object { idd = id', prototype = Nothing, klass=k, value=Nothing, properties = M.empty } + putObject o + return id' + + + +{- + VALUES +-} + + +-- Get value from environment if Value is a reference, return argument if it isn't, throwError if ref +-- doesn't reference anything. + +-- Get the get function being called +getCallee:: InterpM Value +getCallee = do + s <- get -- (((_,_,_,c):_), _,_) <- get + let ((_,_,_,c):_) = ctx s + case c of + ObjIdNull -> return nullValue + _ -> return $ inj c + +getStmtLine :: InterpM Int +getStmtLine = do + s <- get + let (l,c) = pos s + return l + +putDebugFlags :: [DebugAction] -> InterpM () +putDebugFlags d = do + s <- get + put $ s { debug=d } + +getDebugFlags :: InterpM [DebugAction] +getDebugFlags = do + s <- get + return $ debug s + +getFlags :: InterpM [RunFlag] +getFlags = do + s <- get + return $ flags s + +getThis :: InterpM Value +getThis = do + s <- get + let (_,_,t,_):_ = ctx s + return $ inj t + +getValue :: Value -> InterpM Value +getValue v = do + sc <- getScopeChain + case prj v of + ((Just (Ref s))::Maybe Ref) -> getValue' sc s + ((Just (RefObj o s))::Maybe Ref) -> getProperty o s + _ -> return v + +getObjectValue :: Value -> InterpM ObjId +getObjectValue v = do + ov <- getValue v + case prj ov of + (Just (o::ObjId)) -> return o + _ -> throwInternalError "Expecting to get an object value" + +getValue' :: [ObjId] -> String -> InterpM Value +getValue' (c:cs) s = do + p <- getProperty c s + case prj p of + ((Just Undefined)::Maybe Undefined) -> getValue' cs s + _ -> return p + +getValue' [] s = return $ inj Undefined + + +-- Put value into environment if Value is a reference, throw error if it isn't +putValue :: Value -> Value -> InterpM () +putValue r v = do + s <- get + let (_,vo,_,_):_ = ctx s + case prj r of + ((Just (Ref s))::Maybe Ref) -> putProperty vo s v + ((Just (RefObj o s))::Maybe Ref) -> putProperty o s v + _ -> throwInternalError "Internal Error: Invalid Reference" + +setPrototype o = do + c <- getThis + p <- getProperty (toObjId c) "prototype" + putPropertyInternal o "__proto__" p + +setFuncProto fo = do + v <- getValue (inj $ Ref "Function") + case prj v of + (Just (o::ObjId)) -> do getProperty o "prototype" >>= putProperty fo "__proto__"; return () + Nothing -> return $ inj (ObjId 2) + +getScopeChain = do + s <- get + let (sc,_,_,_):_ = ctx s + return sc + +newFuncObject :: [String] -> [SourceElement] -> InterpM Value -> InterpM ObjId +newFuncObject args ses fc = do + sc <- getScopeChain + fo <- newObjectRaw "Function" + setFuncProto fo + p <- newObjectRaw "Object" + putPropertyInternal p "__proto__" (inj $ ObjId 2) + putProperty fo "prototype" (inj p) + putProperty fo "Scope" (inj sc) + putProperty fo "Call" (inj (CallJS ses)) + putProperty fo "Args" (inj args) + cf <- newBuiltInFunction [] fc + putProperty fo "Construct" (inj cf) + return fo + +newBuiltInFunction :: [String] -> InterpM Value -> InterpM ObjId +newBuiltInFunction args f = do + sc <- getScopeChain + fo <- newObjectRaw "Function" + p <- newObjectRaw "Object" + putProperty fo "prototype" (inj p) + putProperty fo "Scope" (inj sc) + putProperty fo "Call" (inj (CallBuiltIn f)) + putProperty fo "Args" (inj args) + return fo + + +{- +-- Some test objects + +newObject = Object { prototype = Nothing, klass="Object", value=Nothing, properties = M.empty } + +objectHeap = M.empty + +o1 = newObject { klass="Top" } +o2 = newObject { klass="Child", prototype=Just o1} + +o1' = putProperty o1 "x" (inj (1::Int)::Value) +-} + + + + +throwReturn v = throwError (ThrowReturn v) +throwInternalError s = throwError (ThrowInternalError s) +throwBreak s = throwError (ThrowBreak s) +throwContinue s = throwError (ThrowContinue s) +throwTypeError s = throwError (ThrowTypeError s) +throwException v = throwError (ThrowException v) + +handleReturn (ThrowReturn v) = return v +handleReturn s = throwError s + +handleBreak (ThrowBreak s) = return False +handleBreak e = throwError e + +handleContinue (ThrowContinue s) = return True +handleContinue e = throwError e + + + +-- The order of Monad composition is important. If you don't then when +-- throwing you lose state +-- type InterpM = ErrorT Throwable (StateT JSState Identity) +--type InterpM = StateT JSState (ErrorT Throwable Identity) + +instance Error Throwable where + noMsg = ThrowInternalError "An Error" + strMsg s = ThrowInternalError s + +emptyState = JSS { ctx = [] , oheap = M.empty, pos = (0::Int,0::Int), flags = [], debug=[]} + +--putGlobalContext :: InterpM () +--putGlobalContext = do +-- put globalContext + +putPosition p = do + s <- get + put s { pos = p } + +pushContext :: Ctx -> InterpM () +pushContext c = do + s <- get + let cs = ctx s + put s { ctx = c:cs } + +popContext :: InterpM () +popContext = do + s <- get + let (c:cs) = ctx s + put s { ctx = cs } + +--globalContext = ( [([ObjId 1],ObjId 1,ObjId 1)], M.fromList [(ObjId 1, Object { idd = ObjId 1, prototype = Nothing, klass="_global", value=Nothing, properties = M.empty })]) + + + +-- instance Show a => Show (InterpM a) where +-- show s = show $ runIt s + + +getArgs :: InterpM [Value] +getArgs = do + arg' <- getValue (inj $ Ref "arguments") + let arg = prjObjId arg' + len <- getProperty arg "length" + mapM (\x -> getProperty arg (show x)) [0.. (toRealInt len)-1] + +getPropertyNames :: ObjId -> InterpM [String] +getPropertyNames id = do + o <- getObject id + getPropertyNames' o + +getPropertyNames' :: Object -> InterpM [String] +getPropertyNames' o = do + let ks = keys $ properties o + ks <- filterM (canEnum o) ks + p <- getProperty' o "__proto__" + case prj p of + (Just (i::ObjId)) -> do + ks' <- getPropertyNames i + return $ Data.List.union ks ks' + _ -> return ks + + + + + +-- All internal new object calls actions must go through this. +newCall name args = do + o <- getValue name + case (prj o) of + (Just (o::ObjId)) -> do + fo <- getProperty o "Construct" + callFunction fo args o + _ -> throwInternalError $ "Type Error: Not an Object" ++ (show o) + + +isUndefined x = x == undefinedValue + +--argsListS :: forall a r. (Show a, BuildList a r) => a -> r +--argsListS x = Data.List.map show $ argsList x + +traceM :: String -> InterpM () +traceM s = do + f <- getFlags + case elem Trace f of + True -> liftIO $ putStrLn s + False -> return () +
+ src/HJS/Interpreter/InterpM.hs~ view
@@ -0,0 +1,581 @@+{- + Note: Do not add + {-# OPTIONS -fglasgow-exts #-} + {-# OPTIONS -fallow-overlapping-instances #-} + {-# OPTIONS -fallow-incoherent-instances #-} + as this causes problems + +-} + +module HJS.Interpreter.InterpM where + +import Control.Monad.Identity +import Control.Monad.Error +import Control.Monad.State +import System.IO.Unsafe + +import HJS.Parser.JavaScript hiding (Object) + +import HJS.Interpreter.InterpMDecl +import {-# SOURCE #-} HJS.Interpreter.Interp + +import Data.Map as M +import Data.List +{- + + VALUE + +-} + +data PrimHint = HString | HNumber | HNone + +-- These correspond to the ToX functions covered in the specification. +-- Converting from one type to another remaining within the Value type +class Convert a where + typeOf :: a -> [Int] + typeOf _ = [] + toBoolean :: a -> InterpM Value + toBoolean _ = return $ inj False + toNumber :: a -> Value + toNumber _ = inj (0::Int) + toString :: a -> InterpM Value + toString _ = return $ inj "" + toPrimitive :: PrimHint -> a -> InterpM Value + toPrimitive _ i = return $ undefinedValue + + + +instance (Convert a, Convert b) => Convert (Either a b) where + toBoolean (Left x) = toBoolean x + toBoolean (Right x) = toBoolean x + toNumber (Left x) = toNumber x + toNumber (Right x) = toNumber x + toString (Left x) = toString x + toString (Right x) = toString x + typeOf (Left x) = 0:typeOf x + typeOf (Right y) = 1:typeOf y + toPrimitive h (Left x) = toPrimitive h x + toPrimitive h (Right x) = toPrimitive h x + + + +instance Convert Int where + toBoolean 0 = return $ inj False + toBoolean _ = return $ inj True + toNumber i = inj (i::Int) + toString i = return $ inj (show i) + toPrimitive _ i = return $ inj i + + +instance Convert String where + toBoolean "" = return $ inj False + toBoolean _ = return $ inj True + toNumber s = inj $ ((read s)::Int) + toString s = return $ inj s + toPrimitive _ i = return $ inj i + +instance Convert Bool where + toBoolean b = return $ inj b + toNumber False = inj $ (0::Int) + toNumber True = inj $ (1::Int) + toString False = return $ inj "false" + toString True = return $ inj "true" + toPrimitive _ i = return $ inj i + + +instance Convert Ref +instance Convert Null where + toString _ = return $ inj "null" + toPrimitive _ i = return $ inj i + + + +instance Convert Undefined where + toString _ = return $ inj "undefined" + toPrimitive _ i = return $ inj i + + +instance Convert () + +instance Convert [Int] where + toString i = return $ inj (show i) + +instance Convert [SourceElement] where + toString _ = return $ inj "<code>" + +instance Convert [String] where + toString ss = return $ inj (show ss) + +instance Convert CallValue + +instance Convert ObjId where + toString o = do + v <- getProperty o "toString" + case v == undefinedValue of + False -> callFunction v [] o + True -> return $ inj "[object]" + + toPrimitive h o = do + m <- getProperty o "toString" + case m == undefinedValue of + False -> callFunction m [] o + True -> return undefinedValue + toBoolean (ObjId i) = return $ inj True + toBoolean _ = return $ inj False + + +instance Convert [ObjId] + +instance Ord SourceElement where + compare _ _ = EQ + +instance Eq SourceElement where + (==) _ _ = True + +class SubType sub sup where + inj :: sub -> sup + prj :: sup -> Maybe sub + +instance SubType a (Either a b) where + inj = Left + prj (Left x) = Just x + prj _ = Nothing + +instance SubType a b => SubType a (Either c b) where + inj = Right . inj + prj (Right a) = prj a + prj _ = Nothing + +instance SubType sub () where + inj _ = () + prj _ = Nothing + +toObjId = prjObjId + +prjObjId :: Value -> ObjId +prjObjId v = case prj v of + (Just s) -> s + _ -> error $ "Impossible Error converting to ObjId" ++ (show v) + +prjInt :: Value -> Int +prjInt v= case prj v of + (Just s) -> s + _ -> error "Impossible Error" + +prjBool :: Value -> Bool +prjBool v= case prj v of + (Just s) -> s + _ -> error "Impossible Error" + +prjString :: Value -> String +prjString v = case prj v of + (Just s) -> s + _ -> error "Impossible Error" + +toValueList :: Value -> [Value] +toValueList v = case prj v of + (Just (s::[Value])) -> s + _ -> error "Impossible Error" + +toRealInt :: Convert a => a -> Int +toRealInt v = case prj (toNumber v) of + (Just s) -> s + _ -> error "Impossible Error" + + +toRealString :: Convert a => a -> InterpM String +toRealString v = do + s <- toString v + return $ prjString s + +toRealBool :: Convert a => a -> InterpM Bool +toRealBool v = do + b <- toBoolean v + return $ prjBool b + + +typeOfString :: Value -> InterpM Value +typeOfString v | typeOf v == typeOf undefinedValue = return $ inj "undefined" +typeOfString v | typeOf v == typeOf nullValue = return $ inj "object" +typeOfString v | typeOf v == typeOf trueValue = return $ inj "boolean" +typeOfString v | typeOf v == typeOf zeroValue = return $ inj "number" +typeOfString v | typeOf v == typeOf nullStringValue = return $ inj "string" +typeOfString v | typeOf v == typeOf nullObjValue = return $ inj "object" +typeOfString _ = return $ inj "unknown" + + + +instance Convert BreakContinue + +nullValue :: Value +nullValue = inj Null + +undefinedValue :: Value +undefinedValue = inj Undefined + +trueValue :: Value +trueValue = inj True + +zeroValue :: Value +zeroValue = inj (0::Int) + +nullStringValue :: Value +nullStringValue = inj "" + +nullObjValue :: Value +nullObjValue = inj ObjIdNull + + +{- + OBJECT + +-} + + + + + + +getObject :: ObjId -> InterpM Object +getObject i = do + (_,os,p) <- get + case M.lookup i os of + Just o -> return o + Nothing -> throwInternalError "Object not found" + +putObject :: Object -> InterpM () +putObject o = do + + (ctxs,os,p) <- get + put (ctxs,M.insert (idd o) o os,p) + + +getObjectProperty' :: Object -> String -> InterpM (Maybe ObjId) +getObjectProperty' o k = do + v <- getProperty' o k + case (prj v) of + Just (id::ObjId) -> return $ Just id + Nothing -> return Nothing + +getPrototypeObject' o = do + case M.lookup "__proto__" (properties o) of + Just (v,_) -> do + case prj v of + Just (id::ObjId) -> return $ Just id + Nothing -> return Nothing + Nothing -> return Nothing + + +getProperty' :: Object -> String -> InterpM Value +getProperty' o k = do + case M.lookup k (properties o) of + Just (v,_) -> return v + Nothing -> do + proto <- getPrototypeObject' o + case proto of + Nothing -> return $ inj Undefined + Just p -> getProperty p k + +getProperty :: ObjId -> String -> InterpM Value +getProperty id k = do + o <- getObject id + getProperty' o k + + +putPropertyInternal id k v = do + o <- getObject id + cp <- canPut o k + case cp of + True -> do + let o' = o { properties = M.insert k (v,[DontEnum]) (properties o)} + putObject o' + False -> return () + +putProperty :: ObjId -> String -> Value -> InterpM () +putProperty id k v = do + traceM $ "putProperty" ++ (show id) ++ " " ++ k + o <- getObject id + case klass o of + "Array" -> putArrayProperty id k v + _ -> putObjectProperty id k v + +putObjectProperty id k v = do + o <- getObject id + cp <- canPut o k + case cp of + True -> do + let o' = o { properties = M.insert k (v,[]) (properties o)} + putObject o' + False -> return () + +toUInt32 :: String -> Int +toUInt32 s = read s + +putArrayProperty id k v = do + o <- getObject id + cp <- canPut o k + case cp of + True -> do + len <- getProperty id "length" + case prj len of + (Just (l::Int)) -> do + let idx = toUInt32 k + newlen = if idx < l then l else idx + 1 + putObjectProperty id k v + putObjectProperty id "length" (inj newlen) + _ -> throwInternalError $ "Invalid value for array length: " ++ (show len) + False -> return () + + +checkAttr :: Object -> String -> Attribute -> InterpM Bool +checkAttr o k attr = do attrs <- getAttr o k; return (elem attr attrs) + +getAttr :: Object -> String -> InterpM [Attribute] +getAttr o k = case M.lookup k (properties o) of + Just (_,a) -> return a + Nothing -> case prototype o of + Nothing -> return [] + Just p -> do + p' <- getObject p + getAttr p' k + +putAttr o k attr = case M.lookup k (properties o) of + Just (v,attrs) -> do + let o' = o { properties = M.insert k (v,attr:attrs) (properties o)} + putObject o' + Nothing -> case prototype o of + Nothing -> return () + Just p -> do + p' <- getObject p + putAttr p' k attr + + +canPut o k = do f <- checkAttr o k ReadOnly; return (not f) +canEnum o k = do f <- checkAttr o k DontEnum; return (not f) + + +hasProperty :: Object -> String -> Bool +hasProperty o k = M.member k (properties o) + +deleteProperty :: Object -> String -> Object +deleteProperty o k = o { properties = M.delete k (properties o) } + +-- Creates a new raw object and inserts it into the object store +newObjectRaw :: String -> InterpM ObjId +newObjectRaw k = do + (_,os,_) <- get + let id' = ObjId $ (size os)+1 + o = Object { idd = id', prototype = Nothing, klass=k, value=Nothing, properties = M.empty } + putObject o + return id' + + + +{- + VALUES +-} + + +-- Get value from environment if Value is a reference, return argument if it isn't, throwError if ref +-- doesn't reference anything. + +-- Get the get function being called +getCallee:: InterpM Value +getCallee = do + (((_,_,_,c):_), _,_) <- get + case c of + ObjIdNull -> return nullValue + _ -> return $ inj c + +getThis :: InterpM Value +getThis = do + (((_,_,t,_):_), _,_) <- get + return $ inj t + +getValue :: Value -> InterpM Value +getValue v = do + (((sc,_,_,_):_), _,_) <- get + case prj v of + ((Just (Ref s))::Maybe Ref) -> getValue' sc s + ((Just (RefObj o s))::Maybe Ref) -> getProperty o s + _ -> return v + +getObjectValue :: Value -> InterpM ObjId +getObjectValue v = do + ov <- getValue v + case prj ov of + (Just (o::ObjId)) -> return o + _ -> throwInternalError "Expecting to get an object value" + +getValue' :: [ObjId] -> String -> InterpM Value +getValue' (c:cs) s = do + p <- getProperty c s + case prj p of + ((Just Undefined)::Maybe Undefined) -> getValue' cs s + _ -> return p + +getValue' [] s = return $ inj Undefined + + +-- Put value into environment if Value is a reference, throw error if it isn't +putValue :: Value -> Value -> InterpM () +putValue r v = do + ((_,vo,_,_):_,_,_) <- get + case prj r of + ((Just (Ref s))::Maybe Ref) -> putProperty vo s v + ((Just (RefObj o s))::Maybe Ref) -> putProperty o s v + _ -> throwInternalError "Internal Error: Invalid Reference" + +setPrototype o = do + c <- getThis + p <- getProperty (toObjId c) "prototype" + putPropertyInternal o "__proto__" p + +setFuncProto fo = do + v <- getValue (inj $ Ref "Function") + case prj v of + (Just (o::ObjId)) -> do getProperty o "prototype" >>= putProperty fo "__proto__"; return () + Nothing -> return $ inj (ObjId 2) + +newFuncObject :: [String] -> [SourceElement] -> InterpM Value -> InterpM ObjId +newFuncObject args ses fc = do + ((sc,_,_,_):_,_,_) <- get + fo <- newObjectRaw "Function" + setFuncProto fo + p <- newObjectRaw "Object" + putPropertyInternal p "__proto__" (inj $ ObjId 2) + putProperty fo "prototype" (inj p) + putProperty fo "Scope" (inj sc) + putProperty fo "Call" (inj (CallJS ses)) + putProperty fo "Args" (inj args) + cf <- newBuiltInFunction [] fc + putProperty fo "Construct" (inj cf) + return fo + +newBuiltInFunction :: [String] -> InterpM Value -> InterpM ObjId +newBuiltInFunction args f = do + ((sc,_,_,_):_,_,_) <- get + fo <- newObjectRaw "Function" + p <- newObjectRaw "Object" + putProperty fo "prototype" (inj p) + putProperty fo "Scope" (inj sc) + putProperty fo "Call" (inj (CallBuiltIn f)) + putProperty fo "Args" (inj args) + return fo + + +{- +-- Some test objects + +newObject = Object { prototype = Nothing, klass="Object", value=Nothing, properties = M.empty } + +objectHeap = M.empty + +o1 = newObject { klass="Top" } +o2 = newObject { klass="Child", prototype=Just o1} + +o1' = putProperty o1 "x" (inj (1::Int)::Value) +-} + + + + +throwReturn v = throwError (ThrowReturn v) +throwInternalError s = throwError (ThrowInternalError s) +throwBreak s = throwError (ThrowBreak s) +throwContinue s = throwError (ThrowContinue s) +throwTypeError s = throwError (ThrowTypeError s) +throwException v = throwError (ThrowException v) + +handleReturn (ThrowReturn v) = return v +handleReturn s = throwError s + +handleBreak (ThrowBreak s) = return False +handleBreak e = throwError e + +handleContinue (ThrowContinue s) = return True +handleContinue e = throwError e + + + +-- The order of Monad composition is important. If you don't then when +-- throwing you lose state +-- type InterpM = ErrorT Throwable (StateT JSState Identity) +--type InterpM = StateT JSState (ErrorT Throwable Identity) + +instance Error Throwable where + noMsg = ThrowInternalError "An Error" + strMsg s = ThrowInternalError s + +emptyState = ([], M.empty,(0::Int,0::Int)) + +--putGlobalContext :: InterpM () +--putGlobalContext = do +-- put globalContext + +putPosition p = do + (cs,h,_) <- get + put (cs,h,p) + +pushContext :: Ctx -> InterpM () +pushContext c = do + (cs,h,p) <- get + put (c:cs,h,p) + +popContext :: InterpM () +popContext = do + (c:cs,h,p) <- get + put (cs,h,p) + +--globalContext = ( [([ObjId 1],ObjId 1,ObjId 1)], M.fromList [(ObjId 1, Object { idd = ObjId 1, prototype = Nothing, klass="_global", value=Nothing, properties = M.empty })]) + + + +-- instance Show a => Show (InterpM a) where +-- show s = show $ runIt s + + +getArgs :: InterpM [Value] +getArgs = do + arg' <- getValue (inj $ Ref "arguments") + let arg = prjObjId arg' + len <- getProperty arg "length" + mapM (\x -> getProperty arg (show x)) [0.. (toRealInt len)-1] + +getPropertyNames :: ObjId -> InterpM [String] +getPropertyNames id = do + o <- getObject id + getPropertyNames' o + +getPropertyNames' :: Object -> InterpM [String] +getPropertyNames' o = do + let ks = keys $ properties o + ks <- filterM (canEnum o) ks + p <- getProperty' o "__proto__" + case prj p of + (Just (i::ObjId)) -> do + ks' <- getPropertyNames i + return $ Data.List.union ks ks' + _ -> return ks + + + + + +-- All internal new object calls actions must go through this. +newCall name args = do + o <- getValue name + case (prj o) of + (Just (o::ObjId)) -> do + fo <- getProperty o "Construct" + callFunction fo args o + _ -> throwInternalError $ "Type Error: Not an Object" ++ (show o) + + +isUndefined x = x == undefinedValue + +traceM :: String -> InterpM () +traceM s = return $ unsafePerformIO $ do putStrLn s; return () + + +
+ src/HJS/Interpreter/InterpMDecl.hs view
@@ -0,0 +1,96 @@+module HJS.Interpreter.InterpMDecl where + +import Control.Monad.Identity +import Control.Monad.Error +import Control.Monad.State + +import Data.Map as M + +import HJS.Parser.JavaScript hiding (Object) + +data Ref = Ref String | RefObj ObjId String deriving (Eq,Show,Ord) + +data ObjId = ObjId Int | ObjIdNull deriving (Eq,Show,Ord) + +data Undefined = Undefined deriving (Eq,Show,Ord) +data Null = Null deriving (Eq,Show,Ord) + +data RunFlag = Debug | Trace | ShowHeap deriving (Show,Eq) + +-- Either JS source from a function or a built in function +data CallValue = CallJS [SourceElement] | CallBuiltIn (InterpM Value) + +data BreakContinue = Break | Continue deriving (Show,Eq,Ord) + +data ArgList = ArgList [String] | VarArgList + +-- Think I should be including Ref (ie what is returned by LeftExpr) into the Value type. +type Value = Either Int -- Primitive values + ( Either String + ( Either Bool + ( Either Undefined + ( Either Null + -- Internal values + ( Either ObjId + ( Either Ref -- Reference + ( Either [ObjId] -- List of object ids + ( Either CallValue -- Code, used 'Call' property of Function object. + ( Either [String] -- List of argument names + ( Either BreakContinue + ())))))))))) + + +type InterpM = ErrorT Throwable (StateT JSState IO) -- Identity) + +-- Execution Context = Scope chain, variable object, this object, current function +type Ctx = ([ObjId],ObjId,ObjId,ObjId) +data JSState = JSS { + ctx :: [Ctx], + oheap :: Map ObjId Object, + pos :: (Int,Int), + flags :: [ RunFlag ], + debug :: [DebugAction] + } deriving Show + + + +data Throwable = ThrowReturn Value + | ThrowBreak (Maybe String) + | ThrowContinue (Maybe String) + | ThrowException Value + | ThrowTypeError String + | ThrowInternalError String + deriving Show + +-- Section 8.6.2 +data Object = Object { + idd :: ObjId, + prototype :: Maybe ObjId, + klass :: String, + value :: Maybe Value, + properties :: M.Map String (Value,[Attribute]) + } deriving Show + +data Attribute = ReadOnly | DontEnum | DontDelete | Internal deriving (Eq,Show) + +instance Show CallValue where + show (CallJS x) = show x + show (CallBuiltIn _) = show "<builtin>" + +instance Ord CallValue where + compare _ _ = EQ + +instance Eq CallValue where + (==) _ _ = True + +data DebugAction = DBBreak Int -- Set a break point at a line + | DBContinue -- Continue execution to next break point + | StepOver -- Step over a statement + | StepInto -- Step into a statement + | PrintObj Int -- Print object with ID + | PrintHeap -- Print the whole heap + | PrintVar String -- Print variable + | PrintLine -- Print current statement + | PrintStack -- Print the stack + | Eval String + deriving (Show,Eq)
+ src/HJS/Interpreter/InterpMDecl.hs~ view
@@ -0,0 +1,77 @@+module HJS.Interpreter.InterpMDecl where + +import Control.Monad.Identity +import Control.Monad.Error +import Control.Monad.State + +import Data.Map as M + +import HJS.Parser.JavaScript hiding (Object) + +data Ref = Ref String | RefObj ObjId String deriving (Eq,Show,Ord) + +data ObjId = ObjId Int | ObjIdNull deriving (Eq,Show,Ord) + +data Undefined = Undefined deriving (Eq,Show,Ord) +data Null = Null deriving (Eq,Show,Ord) + + +-- Either JS source from a function or a built in function +data CallValue = CallJS [SourceElement] | CallBuiltIn (InterpM Value) + +data BreakContinue = Break | Continue deriving (Show,Eq,Ord) + +data ArgList = ArgList [String] | VarArgList + +-- Think I should be including Ref (ie what is returned by LeftExpr) into the Value type. +type Value = Either Int -- Primitive values + ( Either String + ( Either Bool + ( Either Undefined + ( Either Null + -- Internal values + ( Either ObjId + ( Either Ref -- Reference + ( Either [ObjId] -- List of object ids + ( Either CallValue -- Code, used 'Call' property of Function object. + ( Either [String] -- List of argument names + ( Either BreakContinue + ())))))))))) + + +type InterpM = ErrorT Throwable (StateT JSState Identity) + +-- Execution Context = Scope chain, variable object, this object, current function +type Ctx = ([ObjId],ObjId,ObjId,ObjId) +type JSState = ([Ctx],Map ObjId Object,(Int,Int)) + + + +data Throwable = ThrowReturn Value + | ThrowBreak (Maybe String) + | ThrowContinue (Maybe String) + | ThrowException Value + | ThrowTypeError String + | ThrowInternalError String + deriving Show + +-- Section 8.6.2 +data Object = Object { + idd :: ObjId, + prototype :: Maybe ObjId, + klass :: String, + value :: Maybe Value, + properties :: M.Map String (Value,[Attribute]) + } deriving Show + +data Attribute = ReadOnly | DontEnum | DontDelete | Internal deriving (Eq,Show) + +instance Show CallValue where + show (CallJS x) = show x + show (CallBuiltIn _) = show "<builtin>" + +instance Ord CallValue where + compare _ _ = EQ + +instance Eq CallValue where + (==) _ _ = True
+ src/HJS/Interpreter/Object.hs view
@@ -0,0 +1,52 @@+module HJS.Interpreter.Object where + +import Control.Monad.Identity +import Control.Monad.Error +import Control.Monad.State + +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM + +import HJS.Interpreter.ObjectBasic +import HJS.Interpreter.Array + +import qualified Data.Map as M + + + +addObjectBuiltIn newConstructor putBuiltIn = do + fo <- newConstructor "Object" + putPropertyInternal fo "prototype" (inj $ ObjId 2) + putBuiltIn (ObjId 2) "propertyNames" [] propertyNames + putBuiltIn (ObjId 2) "hasOwnProperty" [] hasOwnProperty + putBuiltIn (ObjId 2) "toString" [] toString' + + +propertyNames :: InterpM Value +propertyNames = do + this <- getThis + ps <- getPropertyNames (toObjId this) + let ps' = map (\x -> (inj (x::String)::Value)) ps + o <- newArrayObject ps' + return $ ((inj (o::ObjId))::Value) + +toString' :: InterpM Value +toString' = do + this <- getThis + ts <- getProperty (toObjId this) "Value" + case ts == undefinedValue of + True -> return $ inj "[object]" + False -> toString ts + +-- toString ts +-- case ts of +-- undefinedValue -> return $ inj "[an object]" +-- _ -> toString ts + +hasOwnProperty :: InterpM Value +hasOwnProperty = do + this <- getThis + (arg:_) <- getArgs + o <- getObject (prjObjId this) + s <- toRealString arg + return $ inj $ elem s (M.keys $ properties o)
+ src/HJS/Interpreter/ObjectBasic.hs view
@@ -0,0 +1,9 @@+module HJS.Interpreter.ObjectBasic where + +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM + +newObject name = do + o <- newObjectRaw name + putPropertyInternal o "__proto__" (inj $ ObjId 2) + return o
+ src/HJS/Interpreter/Printf.hs view
@@ -0,0 +1,290 @@+----------------------------------------------------------------------------- +-- | +-- Module : Text.Printf +-- Copyright : (c) Lennart Augustsson, 2004 +-- License : BSD-style (see the file libraries/base/LICENSE) +-- +-- Maintainer : lennart@augustsson.net +-- Stability : provisional +-- Portability : portable +-- +-- A C printf like formatter. +-- +-- Modified by MPW to take arbitrary instances of Show +-- +----------------------------------------------------------------------------- +{-# OPTIONS -fglasgow-exts #-} +{-# OPTIONS -fallow-undecidable-instances #-} +{-# OPTIONS -fallow-overlapping-instances #-} +{-# OPTIONS -fallow-incoherent-instances #-} +module HJS.Interpreter.Printf( + printf, hPrintf, + PrintfType, HPrintfType, PrintfArg, IsChar +) where + +import Prelude +import Data.Array +import Data.Char +import Numeric(showEFloat, showFFloat, showGFloat) +import System.IO + +------------------- + +-- | Format a variable number of arguments with the C-style formatting string. +-- The return value is either 'String' or @('IO' a)@. +-- +-- The format string consists of ordinary characters and /conversion +-- specifications/, which specify how to format one of the arguments +-- to printf in the output string. A conversion specification begins with the +-- character @%@, followed by one or more of the following flags: +-- +-- > - left adjust (default is right adjust) +-- > 0 pad with zeroes rather than spaces +-- +-- followed optionally by a field width: +-- +-- > num field width +-- > * as num, but taken from argument list +-- +-- followed optionally by a precision: +-- +-- > .num precision (number of decimal places) +-- +-- and finally, a format character: +-- +-- > c character Char, Int, Integer +-- > d decimal Char, Int, Integer +-- > o octal Char, Int, Integer +-- > x hexadecimal Char, Int, Integer +-- > u unsigned decimal Char, Int, Integer +-- > f floating point Float, Double +-- > g general format float Float, Double +-- > e exponent format float Float, Double +-- > s string String +-- +-- Mismatch between the argument types and the format string will cause +-- an exception to be thrown at runtime. +-- +-- Examples: +-- +-- > > printf "%d\n" (23::Int) +-- > 23 +-- > > printf "%s %s\n" "Hello" "World" +-- > Hello World +-- > > printf "%.2f\n" pi +-- > 3.14 +-- +printf :: (PrintfType r) => String -> r +printf fmt = spr fmt [] + +-- | Similar to 'printf', except that output is via the specified +-- 'Handle'. The return type is restricted to @('IO' a)@. +hPrintf :: (HPrintfType r) => Handle -> String -> r +hPrintf hdl fmt = hspr hdl fmt [] + +-- |The 'PrintfType' class provides the variable argument magic for +-- 'printf'. Its implementation is intentionally not visible from +-- this module. If you attempt to pass an argument of a type which +-- is not an instance of this class to 'printf' or 'hPrintf', then +-- the compiler will report it as a missing instance of 'PrintfArg'. +class PrintfType t where + spr :: String -> [UPrintf] -> t + +-- | The 'HPrintfType' class provides the variable argument magic for +-- 'hPrintf'. Its implementation is intentionally not visible from +-- this module. +class HPrintfType t where + hspr :: Handle -> String -> [UPrintf] -> t + +{- not allowed in Haskell 98 +instance PrintfType String where + spr fmt args = uprintf fmt (reverse args) +-} +instance (IsChar c) => PrintfType [c] where + spr fmt args = map fromChar (uprintf fmt (reverse args)) + +instance PrintfType (IO a) where + spr fmt args = do + putStr (uprintf fmt (reverse args)) + return undefined + +instance HPrintfType (IO a) where + hspr hdl fmt args = do + hPutStr hdl (uprintf fmt (reverse args)) + return undefined + +instance (PrintfArg a, PrintfType r) => PrintfType (a -> r) where + spr fmt args = \ a -> spr fmt (toUPrintf a : args) + +instance (PrintfArg a, HPrintfType r) => HPrintfType (a -> r) where + hspr hdl fmt args = \ a -> hspr hdl fmt (toUPrintf a : args) + +class PrintfArg a where + toUPrintf :: a -> UPrintf + +instance PrintfArg Char where + toUPrintf c = UChar c + +{- not allowed in Haskell 98 +instance PrintfArg String where + toUPrintf s = UString s +-} +instance (IsChar c) => PrintfArg [c] where + toUPrintf s = UString (map toChar s) + +instance PrintfArg Int where + toUPrintf i = UInt i + +instance PrintfArg Integer where + toUPrintf i = UInteger i + +instance PrintfArg Float where + toUPrintf f = UFloat f + +instance PrintfArg Double where + toUPrintf d = UDouble d + +class IsChar c where + toChar :: c -> Char + fromChar :: Char -> c + +instance IsChar Char where + toChar c = c + fromChar c = c + +------------------- + +data UPrintf = UChar Char | UString String | UInt Int | UInteger Integer | UFloat Float | UDouble Double + +uprintf :: String -> [UPrintf] -> String +uprintf "" [] = "" +uprintf "" (_:_) = fmterr +uprintf ('%':'%':cs) us = '%':uprintf cs us +uprintf ('%':_) [] = argerr +uprintf ('%':cs) us@(_:_) = fmt cs us +uprintf (c:cs) us = c:uprintf cs us + +fmt :: String -> [UPrintf] -> String +fmt cs us = + let (width, prec, ladj, zero, cs', us') = getSpecs False False cs us + adjust (pre, str) = + let lstr = length str + lpre = length pre + fill = if lstr+lpre < width then take (width-(lstr+lpre)) (repeat (if zero then '0' else ' ')) else "" + in if ladj then pre ++ str ++ fill else if zero then pre ++ fill ++ str else fill ++ pre ++ str + in + case cs' of + [] -> fmterr + c:cs'' -> + case us' of + [] -> argerr + u:us'' -> + (case c of + 'c' -> adjust ("", [toEnum (toint u)]) + 'd' -> adjust (fmti u) + 'x' -> adjust ("", fmtu 16 u) + 'o' -> adjust ("", fmtu 8 u) + 'u' -> adjust ("", fmtu 10 u) + 'e' -> adjust (dfmt' c prec u) + 'f' -> adjust (dfmt' c prec u) + 'g' -> adjust (dfmt' c prec u) + 's' -> adjust ("", tostr u) + c -> perror ("bad formatting char " ++ [c]) + ) ++ uprintf cs'' us'' + +fmti (UInt i) = if i < 0 then + if i == -i then fmti (UInteger (toInteger i)) else ("-", itos (-i)) + else + ("", itos i) +fmti (UInteger i) = if i < 0 then ("-", itos (-i)) else ("", itos i) +fmti (UChar c) = fmti (UInt (fromEnum c)) +fmti u = baderr + +fmtu b (UInt i) = if i < 0 then + if i == -i then itosb b (maxi - toInteger (i+1) - 1) else itosb b (maxi - toInteger (-i)) + else + itosb b (toInteger i) +fmtu b (UInteger i) = itosb b i +fmtu b (UChar c) = itosb b (toInteger (fromEnum c)) +fmtu b u = baderr + +maxi :: Integer +maxi = (toInteger (maxBound::Int) + 1) * 2 + +toint (UInt i) = i +toint (UInteger i) = toInt i +toint (UChar c) = fromEnum c +toint u = baderr + +tostr (UString s) = s +tostr u = baderr + +itos n = + if n < 10 then + [toEnum (fromEnum '0' + toInt n)] + else + let (q, r) = quotRem n 10 in + itos q ++ [toEnum (fromEnum '0' + toInt r)] + +chars = array (0,15) (zipWith (,) [0..] "0123456789abcdef") +itosb :: Integer -> Integer -> String +itosb b n = + if n < b then + [chars!n] + else + let (q, r) = quotRem n b in + itosb b q ++ [chars!r] + +stoi :: Int -> String -> (Int, String) +stoi a (c:cs) | isDigit c = stoi (a*10 + fromEnum c - fromEnum '0') cs +stoi a cs = (a, cs) + +getSpecs :: Bool -> Bool -> String -> [UPrintf] -> (Int, Int, Bool, Bool, String, [UPrintf]) +getSpecs l z ('-':cs) us = getSpecs True z cs us +getSpecs l z ('0':cs) us = getSpecs l True cs us +getSpecs l z ('*':cs) us = + case us of + [] -> argerr + nu : us' -> + let n = toint nu + (p, cs'', us'') = + case cs of + '.':'*':r -> case us' of { [] -> argerr; pu:us'' -> (toint pu, r, us'') } + '.':r -> let (n, cs') = stoi 0 r in (n, cs', us') + _ -> (-1, cs, us') + in (n, p, l, z, cs'', us'') +getSpecs l z ('.':cs) us = + let (p, cs') = stoi 0 cs + in (0, p, l, z, cs', us) +getSpecs l z cs@(c:_) us | isDigit c = + let (n, cs') = stoi 0 cs + (p, cs'') = case cs' of + '.':r -> stoi 0 r + _ -> (-1, cs') + in (n, p, l, z, cs'', us) +getSpecs l z cs us = (0, -1, l, z, cs, us) + +dfmt' c p (UDouble d) = dfmt c p d +dfmt' c p (UFloat f) = dfmt c p f +dfmt' c p u = baderr + +dfmt c p d = + case (case c of 'e' -> showEFloat; 'f' -> showFFloat; 'g' -> showGFloat) + (if p < 0 then Nothing else Just p) d "" of + '-':cs -> ("-", cs) + cs -> ("" , cs) + +perror s = error ("Printf.printf: "++s) +fmterr = perror "formatting string ended prematurely" +argerr = perror "argument list ended prematurely" +baderr = perror "bad argument" + +toInt :: (Integral a) => a -> Int +toInt x = fromInteger (toInteger x) + +--- +--- Extras +--- + +instance Show a => PrintfArg a where + toUPrintf x = toUPrintf $ show x
+ src/HJS/Interpreter/Printf.hs~ view
@@ -0,0 +1,278 @@+----------------------------------------------------------------------------- +-- | +-- Module : Text.Printf +-- Copyright : (c) Lennart Augustsson, 2004 +-- License : BSD-style (see the file libraries/base/LICENSE) +-- +-- Maintainer : lennart@augustsson.net +-- Stability : provisional +-- Portability : portable +-- +-- A C printf like formatter. +-- +----------------------------------------------------------------------------- + +module Text.Printf( + printf, hPrintf, + PrintfType, HPrintfType, PrintfArg, IsChar +) where + +import Prelude +import Data.Array +import Data.Char +import Numeric(showEFloat, showFFloat, showGFloat) +import System.IO + +------------------- + +-- | Format a variable number of arguments with the C-style formatting string. +-- The return value is either 'String' or @('IO' a)@. +-- +-- The format string consists of ordinary characters and /conversion +-- specifications/, which specify how to format one of the arguments +-- to printf in the output string. A conversion specification begins with the +-- character @%@, followed by one or more of the following flags: +-- +-- > - left adjust (default is right adjust) +-- > 0 pad with zeroes rather than spaces +-- +-- followed optionally by a field width: +-- +-- > num field width +-- > * as num, but taken from argument list +-- +-- followed optionally by a precision: +-- +-- > .num precision (number of decimal places) +-- +-- and finally, a format character: +-- +-- > c character Char, Int, Integer +-- > d decimal Char, Int, Integer +-- > o octal Char, Int, Integer +-- > x hexadecimal Char, Int, Integer +-- > u unsigned decimal Char, Int, Integer +-- > f floating point Float, Double +-- > g general format float Float, Double +-- > e exponent format float Float, Double +-- > s string String +-- +-- Mismatch between the argument types and the format string will cause +-- an exception to be thrown at runtime. +-- +-- Examples: +-- +-- > > printf "%d\n" (23::Int) +-- > 23 +-- > > printf "%s %s\n" "Hello" "World" +-- > Hello World +-- > > printf "%.2f\n" pi +-- > 3.14 +-- +printf :: (PrintfType r) => String -> r +printf fmt = spr fmt [] + +-- | Similar to 'printf', except that output is via the specified +-- 'Handle'. The return type is restricted to @('IO' a)@. +hPrintf :: (HPrintfType r) => Handle -> String -> r +hPrintf hdl fmt = hspr hdl fmt [] + +-- |The 'PrintfType' class provides the variable argument magic for +-- 'printf'. Its implementation is intentionally not visible from +-- this module. If you attempt to pass an argument of a type which +-- is not an instance of this class to 'printf' or 'hPrintf', then +-- the compiler will report it as a missing instance of 'PrintfArg'. +class PrintfType t where + spr :: String -> [UPrintf] -> t + +-- | The 'HPrintfType' class provides the variable argument magic for +-- 'hPrintf'. Its implementation is intentionally not visible from +-- this module. +class HPrintfType t where + hspr :: Handle -> String -> [UPrintf] -> t + +{- not allowed in Haskell 98 +instance PrintfType String where + spr fmt args = uprintf fmt (reverse args) +-} +instance (IsChar c) => PrintfType [c] where + spr fmt args = map fromChar (uprintf fmt (reverse args)) + +instance PrintfType (IO a) where + spr fmt args = do + putStr (uprintf fmt (reverse args)) + return undefined + +instance HPrintfType (IO a) where + hspr hdl fmt args = do + hPutStr hdl (uprintf fmt (reverse args)) + return undefined + +instance (PrintfArg a, PrintfType r) => PrintfType (a -> r) where + spr fmt args = \ a -> spr fmt (toUPrintf a : args) + +instance (PrintfArg a, HPrintfType r) => HPrintfType (a -> r) where + hspr hdl fmt args = \ a -> hspr hdl fmt (toUPrintf a : args) + +class PrintfArg a where + toUPrintf :: a -> UPrintf + +instance PrintfArg Char where + toUPrintf c = UChar c + +{- not allowed in Haskell 98 +instance PrintfArg String where + toUPrintf s = UString s +-} +instance (IsChar c) => PrintfArg [c] where + toUPrintf s = UString (map toChar s) + +instance PrintfArg Int where + toUPrintf i = UInt i + +instance PrintfArg Integer where + toUPrintf i = UInteger i + +instance PrintfArg Float where + toUPrintf f = UFloat f + +instance PrintfArg Double where + toUPrintf d = UDouble d + +class IsChar c where + toChar :: c -> Char + fromChar :: Char -> c + +instance IsChar Char where + toChar c = c + fromChar c = c + +------------------- + +data UPrintf = UChar Char | UString String | UInt Int | UInteger Integer | UFloat Float | UDouble Double + +uprintf :: String -> [UPrintf] -> String +uprintf "" [] = "" +uprintf "" (_:_) = fmterr +uprintf ('%':'%':cs) us = '%':uprintf cs us +uprintf ('%':_) [] = argerr +uprintf ('%':cs) us@(_:_) = fmt cs us +uprintf (c:cs) us = c:uprintf cs us + +fmt :: String -> [UPrintf] -> String +fmt cs us = + let (width, prec, ladj, zero, cs', us') = getSpecs False False cs us + adjust (pre, str) = + let lstr = length str + lpre = length pre + fill = if lstr+lpre < width then take (width-(lstr+lpre)) (repeat (if zero then '0' else ' ')) else "" + in if ladj then pre ++ str ++ fill else if zero then pre ++ fill ++ str else fill ++ pre ++ str + in + case cs' of + [] -> fmterr + c:cs'' -> + case us' of + [] -> argerr + u:us'' -> + (case c of + 'c' -> adjust ("", [toEnum (toint u)]) + 'd' -> adjust (fmti u) + 'x' -> adjust ("", fmtu 16 u) + 'o' -> adjust ("", fmtu 8 u) + 'u' -> adjust ("", fmtu 10 u) + 'e' -> adjust (dfmt' c prec u) + 'f' -> adjust (dfmt' c prec u) + 'g' -> adjust (dfmt' c prec u) + 's' -> adjust ("", tostr u) + c -> perror ("bad formatting char " ++ [c]) + ) ++ uprintf cs'' us'' + +fmti (UInt i) = if i < 0 then + if i == -i then fmti (UInteger (toInteger i)) else ("-", itos (-i)) + else + ("", itos i) +fmti (UInteger i) = if i < 0 then ("-", itos (-i)) else ("", itos i) +fmti (UChar c) = fmti (UInt (fromEnum c)) +fmti u = baderr + +fmtu b (UInt i) = if i < 0 then + if i == -i then itosb b (maxi - toInteger (i+1) - 1) else itosb b (maxi - toInteger (-i)) + else + itosb b (toInteger i) +fmtu b (UInteger i) = itosb b i +fmtu b (UChar c) = itosb b (toInteger (fromEnum c)) +fmtu b u = baderr + +maxi :: Integer +maxi = (toInteger (maxBound::Int) + 1) * 2 + +toint (UInt i) = i +toint (UInteger i) = toInt i +toint (UChar c) = fromEnum c +toint u = baderr + +tostr (UString s) = s +tostr u = baderr + +itos n = + if n < 10 then + [toEnum (fromEnum '0' + toInt n)] + else + let (q, r) = quotRem n 10 in + itos q ++ [toEnum (fromEnum '0' + toInt r)] + +chars = array (0,15) (zipWith (,) [0..] "0123456789abcdef") +itosb :: Integer -> Integer -> String +itosb b n = + if n < b then + [chars!n] + else + let (q, r) = quotRem n b in + itosb b q ++ [chars!r] + +stoi :: Int -> String -> (Int, String) +stoi a (c:cs) | isDigit c = stoi (a*10 + fromEnum c - fromEnum '0') cs +stoi a cs = (a, cs) + +getSpecs :: Bool -> Bool -> String -> [UPrintf] -> (Int, Int, Bool, Bool, String, [UPrintf]) +getSpecs l z ('-':cs) us = getSpecs True z cs us +getSpecs l z ('0':cs) us = getSpecs l True cs us +getSpecs l z ('*':cs) us = + case us of + [] -> argerr + nu : us' -> + let n = toint nu + (p, cs'', us'') = + case cs of + '.':'*':r -> case us' of { [] -> argerr; pu:us'' -> (toint pu, r, us'') } + '.':r -> let (n, cs') = stoi 0 r in (n, cs', us') + _ -> (-1, cs, us') + in (n, p, l, z, cs'', us'') +getSpecs l z ('.':cs) us = + let (p, cs') = stoi 0 cs + in (0, p, l, z, cs', us) +getSpecs l z cs@(c:_) us | isDigit c = + let (n, cs') = stoi 0 cs + (p, cs'') = case cs' of + '.':r -> stoi 0 r + _ -> (-1, cs') + in (n, p, l, z, cs'', us) +getSpecs l z cs us = (0, -1, l, z, cs, us) + +dfmt' c p (UDouble d) = dfmt c p d +dfmt' c p (UFloat f) = dfmt c p f +dfmt' c p u = baderr + +dfmt c p d = + case (case c of 'e' -> showEFloat; 'f' -> showFFloat; 'g' -> showGFloat) + (if p < 0 then Nothing else Just p) d "" of + '-':cs -> ("-", cs) + cs -> ("" , cs) + +perror s = error ("Printf.printf: "++s) +fmterr = perror "formatting string ended prematurely" +argerr = perror "argument list ended prematurely" +baderr = perror "bad argument" + +toInt :: (Integral a) => a -> Int +toInt x = fromInteger (toInteger x)
+ src/HJS/Interpreter/Regex.hs view
@@ -0,0 +1,58 @@+module HJS.Interpreter.Regex where + +import Control.Monad.Identity +import Control.Monad.Error +import Control.Monad.State + +import Text.Regex + +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM +import HJS.Interpreter.ObjectBasic + +regexConstructor :: InterpM Value +regexConstructor = do + args <- getArgs + t <- getThis + case args of + (p:f:_) -> do newRegexObject t p f + (p:[]) -> do newRegexObject t p undefinedValue + _ -> newRegexObject t undefinedValue undefinedValue + +test :: InterpM Value +test = do + t <- getThis + args <- getArgs + p <- getProperty (toObjId t) "Match" + p' <- toRealString p + s <- toRealString (head args) + case simpleMatch p' s of + Nothing -> return $ inj $ False + _ -> return $ inj $ True + + +simpleMatch p s = case matchRegexAll (mkRegex p) s of + Just (before,match,[],subexpr) -> Just subexpr + _ -> Nothing + + +newRegex p f = do + c <- getValue (inj $ Ref "Regex") + newRegexObject c p f + + +newRegexObject :: Value -> Value -> Value -> InterpM Value +newRegexObject c p f = do + o <- newObject "Regex" + putPropertyInternal o "Match" p + putPropertyInternal o "Flags" f + p <- getProperty (toObjId c) "prototype" + putPropertyInternal o "__proto__" p + return (inj o) + + +addRegexBuiltIn newConstructorWith putBuiltIn = do + fo <- newConstructorWith "Regex" regexConstructor + p <- getProperty fo "prototype" + let p' = toObjId p + putBuiltIn p' "test" [] test
+ src/HJS/Interpreter/String.hs view
@@ -0,0 +1,38 @@+module HJS.Interpreter.String where + +import Control.Monad.Identity +import Control.Monad.Error +import Control.Monad.State + +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM +import HJS.Interpreter.ObjectBasic +import HJS.Interpreter.Regex +import HJS.Interpreter.Array + + +stringConstructor :: InterpM Value +stringConstructor = do + args <- getArgs + o <- newObject "String" + putPropertyInternal o "Value" (head args) + setPrototype o + return (inj o) + + +match :: InterpM Value +match = do + t <- getThis + (re:_) <- getArgs + s <- getProperty (toObjId t) "Value" >>= toRealString + p <- getProperty (toObjId re) "Match" >>= toRealString + let res = case simpleMatch p s of + Nothing -> [] + Just ss -> ss + let res' = map (\x -> (inj (x::String))::Value) res + o <- newArrayObject res' + return $ inj o + + +addStringBuiltIn newConstructorWith = do + newConstructorWith "String" stringConstructor
+ src/HJS/Interpreter/String.hs~ view
@@ -0,0 +1,38 @@+module HJS.Interpreter.String where + +import Control.Monad.Identity +import Control.Monad.Error +import Control.Monad.State + +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM +import HJS.Interpreter.ObjectBasic +import HJS.Interpreter.Regex +import HJS.Interpreter.Array + + +stringConstructor :: InterpM Value +stringConstructor = do + args <- getArgs + o <- newObject "String" + putPropertyInternal o "Value" (head args) + setPrototype o + return (inj o) + + +match :: InterpM Value +match = do + t <- getThis + (re:_) <- getArgs + s <- getProperty (toObjId t) "Value" >>= toRealString + p <- getProperty (toObjId re) "Match" >>= toRealString + let res = case simpleMatch p s of + Nothing -> [] + Just ss -> ss + let res' = map (\x -> (inj (x::String))::Value) res + o <- newArrayObject res' + return $ inj o + + +addStringBuiltIn newConstructorWith = do + newConstructorWith "String" stringConstructor
+ src/HJS/Interpreter/T.hs view
@@ -0,0 +1,12 @@+module T where + + + +class Fraggle a where + frag :: a -> (Int -> Int) + +instance Fraggle Bool where + frag _ = const 0 + +instance Fraggle a => Fraggle (a -> Bool) where + frag x y = 1
+ src/HJS/Interpreter/T.hs~ view
@@ -0,0 +1,5 @@+module T where + +import Debug.Trace + +doit = trace "hello" 1
+ src/HJS/Interpreter/Value.hs view
+ src/HJS/Interpreter/VarArgs.hs view
@@ -0,0 +1,14 @@+{-# OPTIONS -fglasgow-exts #-} +module HJS.Interpreter.VarArgs where + +class BuildList a r | r-> a where + build' :: [a] -> a -> r + +instance Show a => BuildList a [String] where + build' l x = reverse $ (show x):(map show l) + +instance BuildList a b => BuildList a (a->b) where + build' l x y = build' (x:l) y + +--argsList x = build' [] x +
+ src/HJS/Interpreter/VarArgs.hs~ view
@@ -0,0 +1,13 @@+{-# OPTIONS -fglasgow-exts #-} +module VarArg where + +class BuildList a r | r-> a where + build' :: [a] -> a -> r + +instance BuildList a [a] where + build' l x = reverse$ x:l + +instance BuildList a r => BuildList a (a->r) where + build' l x y = build'(x:l) y + +build x = build' [] x
+ src/HJS/Parser.hs view
@@ -0,0 +1,11 @@+module HJS.Parser(parseProgram,lexProgram,lexFile,runLexer) where + +import HJS.Parser.JavaScriptParser +import HJS.Parser.JavaScript + + +lexFile flags name = do + input <- readFile name + putStrLn $ show $ lexProgram input + +
src/HJS/Parser/JavaScript.hs view
@@ -6,6 +6,8 @@ data Literal = LitInt Int | LitString String + | LitNull + | LitBool Bool deriving Show data PrimExpr @@ -13,13 +15,14 @@ | Ident String | Brack Expr | This - | Regex String + | Regex (String,String) | Array ArrayLit | Object [Either (PropName, AssignE) GetterPutter ] + | PEFuncDecl FuncDecl deriving Show data GetterPutter = - GetterPutter String FuncDecl | Putter FuncDecl deriving Show + GetterPutter PropName FuncDecl | Putter FuncDecl deriving Show data PropName = PropNameId String | PropNameStr String | PropNameInt Int deriving Show @@ -31,9 +34,11 @@ | ArrayExpr MemberExpr Expr | MemberNew MemberExpr [AssignE] | MemberCall MemberExpr String + | MemberCall2 MemberExpr MemberExpr deriving Show -data CallExpr = CallMember MemberExpr [AssignE] +data CallExpr = CallPrim MemberExpr + | CallMember MemberExpr [AssignE] | CallCall CallExpr [AssignE] | CallSquare CallExpr Expr | CallDot CallExpr String @@ -64,7 +69,7 @@ | BitNot UExpr deriving Show - +{-- data MultExpr = UExpr UExpr | Times MultExpr UExpr | Div MultExpr UExpr @@ -116,9 +121,12 @@ data LogOr = LogAnd LogAnd | LOLogOr LogOr LogAnd deriving Show +--} -data CondE = LogOr LogOr - | CondIf LogOr AssignE AssignE +data AExpr = AEUExpr UExpr | AOp String AExpr AExpr deriving Show + +data CondE = AExpr AExpr + | CondIf AExpr AssignE AssignE deriving Show data AssignOp = AssignNormal @@ -150,19 +158,22 @@ | While Expr Stmt | For (Maybe Expr) (Maybe Expr) (Maybe Expr) Stmt | ForVar [VarDecl] (Maybe Expr) (Maybe Expr) Stmt - | ForIn [VarDecl] Expr Stmt + | ForIn LeftExpr Expr Stmt | It2 Expr deriving Show data TryStmt = TryBC [Stmt] [Catch] | TryBF [Stmt] [Stmt] | TryBCF [Stmt] [Catch] [Stmt] + | TryTry [Stmt] [Catch] [Stmt] deriving Show -data Catch = Catch String [Stmt] | CatchIf String [Stmt] Expr +data Catch = Catch String [Stmt] | CatchIf String [Stmt] Expr | CatchCatch String (Maybe Expr) [Stmt] deriving Show -data Stmt = IfStmt IfStmt | EmptyStmt | ExprStmt Expr | ItStmt ItStmt | Block [Stmt] +data Stmt = StmtPos (Int,Int) Stmt' deriving Show + +data Stmt' = IfStmt IfStmt | EmptyStmt | ExprStmt Expr | ItStmt ItStmt | Block [Stmt] | VarStmt [VarDecl ] | TryStmt TryStmt | ContStmt (Maybe String) @@ -170,21 +181,21 @@ | ReturnStmt (Maybe Expr) | WithStmt Expr Stmt | LabelledStmt String Stmt - | Switch Switch + | Switch Expr [CaseClause] | ThrowExpr Expr deriving Show -data Switch = SSwitch Expr CaseBlock +data Switch = SSwitch Expr [CaseClause] deriving Show -data CaseBlock = CaseBlock [CaseClause] [DefaultClause] [CaseClause] +data CaseBlock = CaseBlock [CaseClause] deriving Show -data CaseClause = CaseClause Expr [Stmt] +data CaseClause = CaseClause Expr [Stmt] | DefaultClause [Stmt] deriving Show -data DefaultClause = DefaultClause [Stmt] - deriving Show +-- data DefaultClause = DefaultClause [Stmt] +-- deriving Show data FuncDecl = FuncDecl (Maybe String) [String] [SourceElement] deriving Show
src/HJS/Parser/JavaScriptParser.hs view
@@ -1,2021 +1,354 @@-{-# OPTIONS -cpp #-} -module HJS.Parser.JavaScriptParser where - -import Data.Char -import Control.Monad.State -import Control.Monad.Error - -import HJS.Parser.Lexer -import HJS.Parser.LexerM -import HJS.Parser.JavaScript -import HJS.Parser.ParserMonad -#if __GLASGOW_HASKELL__ >= 503 -import Data.Array -#else -import Array -#endif - --- parser produced by Happy Version 1.16 - -data HappyAbsSyn t5 t6 t7 t8 t9 t11 t12 t13 t14 t15 t16 t18 t19 t20 t21 t22 t23 t24 t25 t26 t27 t28 t29 t30 t31 t32 t33 t34 t35 t36 t37 t38 t39 t40 t41 t42 t43 t44 t45 t46 t47 t48 t49 t50 t51 t52 t53 t54 t55 t56 t57 t58 t59 t60 t61 t62 t63 t64 t65 t66 - = HappyTerminal Token - | HappyErrorToken Int - | HappyAbsSyn5 t5 - | HappyAbsSyn6 t6 - | HappyAbsSyn7 t7 - | HappyAbsSyn8 t8 - | HappyAbsSyn9 t9 - | HappyAbsSyn10 (PrimExpr) - | HappyAbsSyn11 t11 - | HappyAbsSyn12 t12 - | HappyAbsSyn13 t13 - | HappyAbsSyn14 t14 - | HappyAbsSyn15 t15 - | HappyAbsSyn16 t16 - | HappyAbsSyn17 (MemberExpr) - | HappyAbsSyn18 t18 - | HappyAbsSyn19 t19 - | HappyAbsSyn20 t20 - | HappyAbsSyn21 t21 - | HappyAbsSyn22 t22 - | HappyAbsSyn23 t23 - | HappyAbsSyn24 t24 - | HappyAbsSyn25 t25 - | HappyAbsSyn26 t26 - | HappyAbsSyn27 t27 - | HappyAbsSyn28 t28 - | HappyAbsSyn29 t29 - | HappyAbsSyn30 t30 - | HappyAbsSyn31 t31 - | HappyAbsSyn32 t32 - | HappyAbsSyn33 t33 - | HappyAbsSyn34 t34 - | HappyAbsSyn35 t35 - | HappyAbsSyn36 t36 - | HappyAbsSyn37 t37 - | HappyAbsSyn38 t38 - | HappyAbsSyn39 t39 - | HappyAbsSyn40 t40 - | HappyAbsSyn41 t41 - | HappyAbsSyn42 t42 - | HappyAbsSyn43 t43 - | HappyAbsSyn44 t44 - | HappyAbsSyn45 t45 - | HappyAbsSyn46 t46 - | HappyAbsSyn47 t47 - | HappyAbsSyn48 t48 - | HappyAbsSyn49 t49 - | HappyAbsSyn50 t50 - | HappyAbsSyn51 t51 - | HappyAbsSyn52 t52 - | HappyAbsSyn53 t53 - | HappyAbsSyn54 t54 - | HappyAbsSyn55 t55 - | HappyAbsSyn56 t56 - | HappyAbsSyn57 t57 - | HappyAbsSyn58 t58 - | HappyAbsSyn59 t59 - | HappyAbsSyn60 t60 - | HappyAbsSyn61 t61 - | HappyAbsSyn62 t62 - | HappyAbsSyn63 t63 - | HappyAbsSyn64 t64 - | HappyAbsSyn65 t65 - | HappyAbsSyn66 t66 - -happyActOffsets :: Array Int Int -happyActOffsets = listArray (0,331) ([137,655,137,0,417,0,0,0,0,121,0,79,46,0,0,76,313,156,127,160,447,468,464,449,14,0,0,0,0,0,0,0,409,0,0,0,0,408,0,137,0,0,445,0,641,641,0,592,641,641,641,641,592,68,641,641,641,448,0,137,444,438,0,440,440,17,652,402,26,20,592,579,429,428,372,0,8,372,5,0,422,0,433,0,0,592,592,393,0,0,391,389,0,378,0,253,137,77,0,0,420,426,414,0,416,394,519,592,350,592,280,0,0,0,0,-1,386,4,385,74,0,0,0,0,0,388,0,0,137,0,0,592,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,641,592,0,0,0,0,0,0,0,0,0,507,384,592,0,383,592,0,347,0,345,0,296,0,0,0,0,0,0,76,76,277,277,277,156,156,156,156,156,156,127,127,127,127,160,377,363,375,364,362,0,0,592,0,0,0,0,369,368,365,0,322,23,9,367,367,0,592,266,0,366,0,200,0,0,358,326,0,0,0,0,349,334,592,146,0,0,0,305,137,0,337,0,0,242,300,335,0,0,10,592,592,592,137,592,137,0,592,0,592,0,0,0,0,284,321,0,274,314,271,592,592,0,137,283,-7,0,0,250,-25,0,592,270,592,137,239,137,293,246,592,137,592,222,137,0,0,260,0,237,592,137,0,226,232,0,223,0,143,0,203,137,-22,137,136,0,0,199,137,137,0,0,137,0,137,0,137,0,0 - ]) - -happyGotoOffsets :: Array Int Int -happyGotoOffsets = listArray (0,331) ([390,158,329,0,0,0,0,0,0,186,0,174,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,451,0,0,0,0,3443,3424,0,2465,3405,3386,3367,3348,2426,713,3329,3310,3291,0,0,1545,0,0,0,213,211,109,695,126,0,0,1918,1879,0,0,0,0,88,0,0,0,0,0,100,0,0,2387,2348,0,0,0,0,0,0,0,0,-15,869,130,0,0,0,94,0,0,83,0,1597,2309,0,2270,0,0,0,0,0,1493,0,86,0,0,0,0,0,0,0,0,0,0,1441,0,0,2738,2777,2805,2832,2858,2883,2976,2953,2930,2907,3109,3087,3065,3043,3021,2999,3173,3152,3131,3214,3194,3272,3253,3234,2699,0,0,0,0,0,0,0,0,0,2231,0,2191,0,0,2152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2660,0,0,0,0,0,0,0,0,0,0,57,208,56,0,2621,0,0,33,0,206,0,0,0,53,0,0,0,0,0,0,2582,212,0,0,0,-8,1389,0,0,0,0,0,0,0,0,0,0,1840,2113,1801,1337,2074,1285,0,2543,0,2504,0,0,0,0,0,0,0,0,0,0,1762,2035,0,268,0,0,0,0,164,114,0,1996,2,1957,207,0,451,0,0,1723,1233,1684,0,1181,0,0,0,0,0,1645,1129,0,0,0,0,0,0,65,0,0,817,-40,765,-19,0,0,0,1077,1025,0,0,973,0,921,0,921,0,0 - ]) - -happyDefActions :: Array Int Int -happyDefActions = listArray (0,331) ([0,0,0,-11,0,-12,-29,-13,-14,-33,-43,-44,-45,-48,-58,-62,-65,-69,-76,-81,-83,-85,-87,-89,-91,-100,-102,-134,-170,-103,-104,-119,0,-106,-107,-108,-117,-171,0,-167,-168,-4,-10,-5,0,0,-6,0,0,0,0,0,-17,0,0,0,0,0,-105,0,0,0,-9,0,0,0,0,0,0,0,0,0,0,0,0,-10,0,0,0,-22,0,-28,-26,-27,-20,0,0,0,-101,-114,0,0,-112,0,-110,0,-121,-33,-34,-160,0,-163,-125,-147,-150,-124,-145,0,0,0,-45,-51,-50,-49,-122,0,-4,-10,-5,0,-18,-53,-52,-57,-56,0,-55,-54,0,-169,-135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-98,-46,-47,-93,-94,-95,-96,-97,-36,0,0,0,-35,0,0,-8,0,-31,0,-38,0,-41,-39,-99,-61,-60,-59,-64,-63,-68,-67,-66,-75,-74,-71,-73,-72,-70,-80,-79,-78,-77,-82,-84,-86,-88,-90,0,-116,-15,0,-16,-25,-123,-120,0,0,0,-146,0,0,-10,0,0,-149,0,0,-164,-163,-32,-126,-129,-127,0,0,-109,-111,-118,-113,0,0,0,0,-21,-23,-24,0,0,-133,0,-130,-128,0,0,0,-151,-148,0,-145,0,-145,0,0,0,-19,0,-40,0,-37,-30,-42,-92,-137,0,-139,0,0,0,-145,0,-165,0,0,0,-115,-152,-155,0,-156,0,0,0,0,0,-166,0,0,-145,0,-145,0,0,-136,-138,0,-144,0,-145,0,-161,0,0,-131,0,-157,-155,-153,0,-121,0,-121,0,-162,-143,0,0,0,-140,-142,0,-132,-158,-154,-159,-141 - ]) - -happyCheck :: Array Int Int -happyCheck = listArray (0,3518) ([-1,2,3,4,11,6,7,3,9,10,2,3,4,53,5,40,35,12,40,15,3,12,12,3,39,40,41,10,14,3,16,32,33,34,35,12,37,35,39,40,41,42,43,51,51,40,71,72,40,71,51,5,53,54,55,56,57,58,59,60,61,62,53,53,65,66,67,68,69,70,2,3,4,53,6,7,53,9,10,53,34,35,73,73,8,9,12,10,35,10,57,45,46,47,48,49,73,9,10,11,32,33,34,35,48,37,49,39,40,41,42,43,38,36,37,36,37,52,53,51,44,53,54,55,56,57,58,59,60,61,62,10,49,65,66,67,68,69,70,2,3,4,56,6,7,15,9,10,2,3,4,57,25,26,27,28,56,36,37,1,2,35,4,5,6,56,8,53,54,32,33,34,35,31,37,39,39,50,41,42,43,21,22,23,24,29,30,31,51,15,53,54,55,56,57,58,59,60,61,62,73,15,65,66,67,68,69,70,1,2,11,4,5,6,71,8,52,53,15,12,13,14,10,11,17,18,19,20,21,22,23,24,25,26,27,28,29,30,15,32,33,34,35,11,37,38,40,41,11,42,43,44,45,11,12,47,48,50,47,48,47,48,55,63,64,58,40,60,61,1,2,11,4,5,6,53,8,11,12,40,12,13,14,6,7,17,18,19,20,21,22,23,24,25,26,27,28,29,30,53,32,33,34,35,11,37,38,11,12,39,42,43,44,45,34,35,63,64,50,6,7,71,39,55,53,11,58,53,60,61,1,2,11,4,5,6,52,8,3,39,3,12,13,14,39,11,17,18,19,20,21,22,23,24,25,26,27,28,29,30,11,32,33,34,35,39,37,38,10,3,3,42,43,44,45,53,11,15,10,50,11,17,19,38,55,38,3,3,59,60,61,1,2,18,4,5,6,20,8,11,15,15,12,13,14,55,12,17,18,19,20,21,22,23,24,25,26,27,28,29,30,5,32,33,34,35,12,37,38,3,10,53,42,43,44,45,3,15,10,10,50,39,53,3,53,55,53,75,10,59,60,61,1,2,10,4,5,6,10,8,15,53,53,12,13,14,17,20,17,18,19,20,21,22,23,24,25,26,27,28,29,30,18,32,33,34,35,19,37,38,-1,74,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,-1,-1,55,-1,-1,2,3,4,61,6,7,-1,9,10,11,-1,-1,2,3,4,-1,6,7,-1,9,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,32,33,34,35,-1,37,-1,39,-1,41,42,43,32,33,34,35,-1,37,-1,39,-1,41,42,43,-1,57,-1,-1,60,61,-1,-1,-1,-1,-1,-1,-1,57,58,-1,60,61,2,3,4,-1,6,7,-1,9,10,-1,-1,-1,-1,2,3,4,-1,6,7,-1,9,10,-1,-1,-1,-1,-1,-1,-1,-1,32,33,34,35,-1,37,-1,39,-1,41,42,43,-1,32,33,34,35,-1,37,-1,39,53,41,42,43,57,-1,-1,60,61,-1,-1,2,3,4,-1,6,7,57,9,10,60,61,2,3,4,2,3,4,-1,9,10,-1,9,10,-1,-1,-1,-1,-1,-1,-1,32,33,34,35,-1,37,-1,39,-1,41,42,43,-1,-1,-1,-1,37,-1,39,37,-1,39,-1,1,2,57,4,5,6,61,8,-1,-1,-1,12,13,57,-1,-1,57,61,1,2,-1,4,5,6,-1,8,9,10,11,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,36,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,36,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,36,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,36,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,-1,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,-1,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,-1,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,-1,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,-1,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,-1,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,-1,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,-1,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,-1,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,-1,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,-1,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,-1,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,34,35,-1,37,38,-1,-1,-1,42,43,44,45,-1,-1,-1,-1,50,-1,-1,1,2,55,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,46,47,48,1,2,-1,4,5,6,55,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,46,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,46,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,46,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,46,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,46,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,46,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,42,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,42,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,55,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,-1,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,7,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,-1,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,33,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,-1,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,-1,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,-1,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,-1,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,-1,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,-1,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,29,30,-1,32,-1,-1,-1,-1,-1,-1,-1,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,55,17,18,19,20,21,22,23,24,25,26,27,28,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,27,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,26,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,25,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,24,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,23,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,22,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,21,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,20,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,1,2,-1,4,5,6,-1,8,-1,-1,-1,12,13,14,-1,-1,17,18,19,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 - ]) - -happyTable :: Array Int Int -happyTable = listArray (0,3518) ([0,42,43,44,287,45,46,101,47,48,82,83,84,310,222,313,326,239,329,129,101,-150,220,92,226,227,228,102,132,94,133,49,50,51,52,220,53,308,54,211,55,56,57,281,288,240,286,314,85,286,58,157,59,60,61,62,63,64,65,66,67,68,-150,275,69,70,71,72,73,74,117,118,119,93,45,46,255,47,48,95,158,159,-150,276,153,154,207,166,244,166,248,160,161,162,163,164,256,78,79,80,49,50,51,52,252,53,220,54,85,55,56,57,208,170,171,167,168,315,284,58,155,59,60,61,62,63,64,65,66,67,68,166,220,69,70,71,72,73,74,42,43,44,208,45,46,225,47,48,82,83,84,222,142,143,144,145,208,170,171,3,4,95,5,74,7,99,8,310,311,49,50,51,52,155,53,97,54,146,55,56,57,138,139,140,141,148,149,150,58,164,59,60,61,62,63,64,65,66,67,68,147,168,69,70,71,72,73,74,3,4,326,5,6,7,286,8,283,284,315,9,10,11,240,80,12,13,14,15,16,17,18,19,20,21,22,23,24,25,317,26,27,28,29,318,30,31,246,247,322,32,33,34,35,279,251,253,103,36,102,103,105,103,37,230,231,306,319,290,40,3,4,323,5,6,7,300,8,250,251,306,9,10,11,151,152,12,13,14,15,16,17,18,19,20,21,22,23,24,25,304,26,27,28,29,305,30,31,263,264,97,32,33,34,35,158,159,230,231,36,151,152,286,289,37,294,295,289,296,290,40,3,4,297,5,6,7,298,8,277,278,280,9,10,11,283,243,12,13,14,15,16,17,18,19,20,21,22,23,24,25,244,26,27,28,29,97,30,31,246,224,105,32,33,34,35,257,258,262,259,36,260,134,136,265,37,266,174,176,38,39,40,3,4,135,5,6,7,137,8,206,-27,-28,9,10,11,213,220,12,13,14,15,16,17,18,19,20,21,22,23,24,25,222,26,27,28,29,220,30,31,224,225,232,32,33,34,35,101,238,86,87,36,97,233,105,234,37,235,-1,107,77,39,40,3,4,108,5,6,7,110,8,129,-171,131,9,10,11,134,137,12,13,14,15,16,17,18,19,20,21,22,23,24,25,135,26,27,28,29,136,30,31,0,172,0,32,33,34,35,0,0,0,0,36,0,0,0,0,37,0,0,42,76,44,129,45,46,0,47,48,179,0,0,42,218,44,0,45,46,0,47,48,0,0,0,0,0,0,0,0,0,49,50,51,52,0,53,0,77,0,55,56,57,49,50,51,52,0,53,0,77,0,55,56,57,0,63,0,0,66,67,0,0,0,0,0,0,0,63,219,0,66,67,42,76,44,0,45,46,0,47,48,0,0,0,0,42,76,44,0,45,46,0,47,48,0,0,0,0,0,0,0,0,49,50,51,52,0,53,0,77,0,55,56,57,0,49,50,51,52,0,53,0,77,90,55,56,57,63,0,0,66,67,0,0,42,76,44,0,45,46,63,47,48,66,67,42,76,44,42,76,44,0,47,48,0,47,48,0,0,0,0,0,0,0,49,50,51,52,0,53,0,77,0,55,56,57,0,0,0,0,53,0,77,53,0,77,0,3,4,63,5,6,7,67,8,0,0,0,97,98,63,0,0,63,67,3,4,0,5,6,7,0,8,78,79,80,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,114,29,115,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,114,29,327,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,114,29,329,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,114,29,115,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,209,29,0,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,330,29,0,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,323,29,0,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,324,29,0,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,319,29,0,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,298,29,0,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,301,29,0,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,268,29,0,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,270,29,0,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,280,29,0,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,204,29,0,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,209,29,0,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,108,29,0,30,31,0,0,0,32,33,34,35,0,0,0,0,36,0,0,3,4,88,5,6,7,0,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,214,0,0,0,0,0,0,0,0,0,0,0,0,215,216,103,3,4,0,5,6,7,88,8,0,0,0,9,10,11,0,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,214,0,0,0,0,0,0,3,4,0,5,6,7,320,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,214,0,0,0,0,0,0,3,4,0,5,6,7,300,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,214,0,0,0,0,0,0,3,4,0,5,6,7,302,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,214,0,0,0,0,0,0,3,4,0,5,6,7,292,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,214,0,0,0,0,0,0,3,4,0,5,6,7,271,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,214,0,0,0,0,0,0,3,4,0,5,6,7,273,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,0,0,0,0,0,0,3,4,87,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,27,0,0,0,0,0,0,3,4,90,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,307,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,309,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,291,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,269,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,272,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,172,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,174,0,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,88,176,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,177,0,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,211,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,213,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,235,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,236,0,0,0,0,0,0,3,4,0,5,6,7,119,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,120,0,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,26,125,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,266,0,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,267,0,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,241,0,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,251,0,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,260,0,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,179,0,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,203,0,0,0,0,0,0,0,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,88,110,13,14,15,16,17,18,19,20,21,22,202,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,16,17,18,19,20,21,201,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,16,17,18,19,20,200,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,16,17,18,19,199,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,16,17,18,198,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,16,17,194,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,16,17,195,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,16,17,196,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,16,17,197,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,16,188,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,16,189,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,16,190,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,16,191,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,16,192,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,16,193,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,185,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,186,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,15,187,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,183,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,14,184,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,180,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,181,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,182,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,111,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,112,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,113,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,121,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,122,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,123,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,124,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,126,3,4,0,5,6,7,0,8,0,0,0,9,10,11,0,0,110,13,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ]) - -happyReduceArr = array (2, 170) [ - (2 , happyReduce_2), - (3 , happyReduce_3), - (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) - ] - -happy_n_terms = 76 :: Int -happy_n_nonterms = 62 :: Int - -happyReduce_2 = happySpecReduce_1 0 happyReduction_2 -happyReduction_2 (HappyAbsSyn64 happy_var_1) - = HappyAbsSyn5 - (happy_var_1 - ) -happyReduction_2 _ = notHappyAtAll - -happyReduce_3 = happySpecReduce_1 1 happyReduction_3 -happyReduction_3 (HappyTerminal (TokenInt happy_var_1)) - = HappyAbsSyn6 - (LitInt happy_var_1 - ) -happyReduction_3 _ = notHappyAtAll - -happyReduce_4 = happySpecReduce_1 1 happyReduction_4 -happyReduction_4 (HappyTerminal (TokenStringLit happy_var_1)) - = HappyAbsSyn6 - (LitString happy_var_1 - ) -happyReduction_4 _ = notHappyAtAll - -happyReduce_5 = happySpecReduce_1 2 happyReduction_5 -happyReduction_5 _ - = HappyAbsSyn7 - ( - ) - -happyReduce_6 = happySpecReduce_1 3 happyReduction_6 -happyReduction_6 _ - = HappyAbsSyn8 - ( - ) - -happyReduce_7 = happySpecReduce_2 4 happyReduction_7 -happyReduction_7 (HappyTerminal (TokenRegex happy_var_2)) - _ - = HappyAbsSyn9 - (happy_var_2 - ) -happyReduction_7 _ _ = notHappyAtAll - -happyReduce_8 = happySpecReduce_1 5 happyReduction_8 -happyReduction_8 _ - = HappyAbsSyn10 - (This - ) - -happyReduce_9 = happySpecReduce_1 5 happyReduction_9 -happyReduction_9 (HappyTerminal (TokenIdent happy_var_1)) - = HappyAbsSyn10 - (Ident happy_var_1 - ) -happyReduction_9 _ = notHappyAtAll - -happyReduce_10 = happySpecReduce_1 5 happyReduction_10 -happyReduction_10 (HappyAbsSyn6 happy_var_1) - = HappyAbsSyn10 - (Literal happy_var_1 - ) -happyReduction_10 _ = notHappyAtAll - -happyReduce_11 = happySpecReduce_1 5 happyReduction_11 -happyReduction_11 (HappyAbsSyn9 happy_var_1) - = HappyAbsSyn10 - (Regex happy_var_1 - ) -happyReduction_11 _ = notHappyAtAll - -happyReduce_12 = happySpecReduce_1 5 happyReduction_12 -happyReduction_12 (HappyAbsSyn11 happy_var_1) - = HappyAbsSyn10 - (Array happy_var_1 - ) -happyReduction_12 _ = notHappyAtAll - -happyReduce_13 = happySpecReduce_1 5 happyReduction_13 -happyReduction_13 (HappyAbsSyn13 happy_var_1) - = HappyAbsSyn10 - (Object happy_var_1 - ) -happyReduction_13 _ = notHappyAtAll - -happyReduce_14 = happySpecReduce_3 5 happyReduction_14 -happyReduction_14 _ - (HappyAbsSyn38 happy_var_2) - _ - = HappyAbsSyn10 - (Brack happy_var_2 - ) -happyReduction_14 _ _ _ = notHappyAtAll - -happyReduce_15 = happySpecReduce_3 6 happyReduction_15 -happyReduction_15 _ - (HappyAbsSyn12 happy_var_2) - _ - = HappyAbsSyn11 - (ArrSimple happy_var_2 - ) -happyReduction_15 _ _ _ = notHappyAtAll - -happyReduce_16 = happySpecReduce_0 7 happyReduction_16 -happyReduction_16 = HappyAbsSyn12 - ([] - ) - -happyReduce_17 = happySpecReduce_1 7 happyReduction_17 -happyReduction_17 (HappyAbsSyn37 happy_var_1) - = HappyAbsSyn12 - ([happy_var_1] - ) -happyReduction_17 _ = notHappyAtAll - -happyReduce_18 = happySpecReduce_3 7 happyReduction_18 -happyReduction_18 (HappyAbsSyn37 happy_var_3) - _ - (HappyAbsSyn12 happy_var_1) - = HappyAbsSyn12 - (happy_var_1 ++ [happy_var_3] - ) -happyReduction_18 _ _ _ = notHappyAtAll - -happyReduce_19 = happySpecReduce_2 8 happyReduction_19 -happyReduction_19 _ - _ - = HappyAbsSyn13 - ([] - ) - -happyReduce_20 = happySpecReduce_3 8 happyReduction_20 -happyReduction_20 _ - (HappyAbsSyn14 happy_var_2) - _ - = HappyAbsSyn13 - (happy_var_2 - ) -happyReduction_20 _ _ _ = notHappyAtAll - -happyReduce_21 = happySpecReduce_1 9 happyReduction_21 -happyReduction_21 (HappyAbsSyn15 happy_var_1) - = HappyAbsSyn14 - ([happy_var_1 ] - ) -happyReduction_21 _ = notHappyAtAll - -happyReduce_22 = happySpecReduce_3 9 happyReduction_22 -happyReduction_22 (HappyAbsSyn15 happy_var_3) - _ - (HappyAbsSyn14 happy_var_1) - = HappyAbsSyn14 - (happy_var_1 ++ [happy_var_3] - ) -happyReduction_22 _ _ _ = notHappyAtAll - -happyReduce_23 = happySpecReduce_3 10 happyReduction_23 -happyReduction_23 (HappyAbsSyn37 happy_var_3) - _ - (HappyAbsSyn16 happy_var_1) - = HappyAbsSyn15 - (Left (happy_var_1, happy_var_3 ) - ) -happyReduction_23 _ _ _ = notHappyAtAll - -happyReduce_24 = happySpecReduce_2 10 happyReduction_24 -happyReduction_24 (HappyAbsSyn61 happy_var_2) - (HappyTerminal (TokenIdent happy_var_1)) - = HappyAbsSyn15 - (Right $ GetterPutter happy_var_1 happy_var_2 - ) -happyReduction_24 _ _ = notHappyAtAll - -happyReduce_25 = happySpecReduce_1 11 happyReduction_25 -happyReduction_25 (HappyTerminal (TokenIdent happy_var_1)) - = HappyAbsSyn16 - (PropNameId happy_var_1 - ) -happyReduction_25 _ = notHappyAtAll - -happyReduce_26 = happySpecReduce_1 11 happyReduction_26 -happyReduction_26 (HappyTerminal (TokenStringLit happy_var_1)) - = HappyAbsSyn16 - (PropNameStr happy_var_1 - ) -happyReduction_26 _ = notHappyAtAll - -happyReduce_27 = happySpecReduce_1 11 happyReduction_27 -happyReduction_27 (HappyTerminal (TokenInt happy_var_1)) - = HappyAbsSyn16 - (PropNameInt happy_var_1 - ) -happyReduction_27 _ = notHappyAtAll - -happyReduce_28 = happySpecReduce_1 12 happyReduction_28 -happyReduction_28 (HappyAbsSyn10 happy_var_1) - = HappyAbsSyn17 - (MemPrimExpr happy_var_1 - ) -happyReduction_28 _ = notHappyAtAll - -happyReduce_29 = happyReduce 4 12 happyReduction_29 -happyReduction_29 (_ `HappyStk` - (HappyAbsSyn38 happy_var_3) `HappyStk` - _ `HappyStk` - (HappyAbsSyn17 happy_var_1) `HappyStk` - happyRest) - = HappyAbsSyn17 - (ArrayExpr happy_var_1 happy_var_3 - ) `HappyStk` happyRest - -happyReduce_30 = happySpecReduce_3 12 happyReduction_30 -happyReduction_30 (HappyTerminal (TokenIdent happy_var_3)) - _ - (HappyAbsSyn17 happy_var_1) - = HappyAbsSyn17 - (MemberCall happy_var_1 happy_var_3 - ) -happyReduction_30 _ _ _ = notHappyAtAll - -happyReduce_31 = happySpecReduce_3 12 happyReduction_31 -happyReduction_31 (HappyAbsSyn20 happy_var_3) - (HappyAbsSyn17 happy_var_2) - _ - = HappyAbsSyn17 - (MemberNew happy_var_2 happy_var_3 - ) -happyReduction_31 _ _ _ = notHappyAtAll - -happyReduce_32 = happySpecReduce_1 13 happyReduction_32 -happyReduction_32 (HappyAbsSyn17 happy_var_1) - = HappyAbsSyn18 - (MemberExpr happy_var_1 - ) -happyReduction_32 _ = notHappyAtAll - -happyReduce_33 = happySpecReduce_2 13 happyReduction_33 -happyReduction_33 (HappyAbsSyn18 happy_var_2) - _ - = HappyAbsSyn18 - (NewNewExpr happy_var_2 - ) -happyReduction_33 _ _ = notHappyAtAll - -happyReduce_34 = happySpecReduce_2 14 happyReduction_34 -happyReduction_34 (HappyAbsSyn20 happy_var_2) - (HappyAbsSyn17 happy_var_1) - = HappyAbsSyn19 - (CallMember happy_var_1 happy_var_2 - ) -happyReduction_34 _ _ = notHappyAtAll - -happyReduce_35 = happySpecReduce_2 14 happyReduction_35 -happyReduction_35 (HappyAbsSyn20 happy_var_2) - (HappyAbsSyn19 happy_var_1) - = HappyAbsSyn19 - (CallCall happy_var_1 happy_var_2 - ) -happyReduction_35 _ _ = notHappyAtAll - -happyReduce_36 = happyReduce 4 14 happyReduction_36 -happyReduction_36 (_ `HappyStk` - (HappyAbsSyn38 happy_var_3) `HappyStk` - _ `HappyStk` - (HappyAbsSyn19 happy_var_1) `HappyStk` - happyRest) - = HappyAbsSyn19 - (CallSquare happy_var_1 happy_var_3 - ) `HappyStk` happyRest - -happyReduce_37 = happySpecReduce_3 14 happyReduction_37 -happyReduction_37 (HappyTerminal (TokenIdent happy_var_3)) - _ - (HappyAbsSyn19 happy_var_1) - = HappyAbsSyn19 - (CallDot happy_var_1 happy_var_3 - ) -happyReduction_37 _ _ _ = notHappyAtAll - -happyReduce_38 = happySpecReduce_2 15 happyReduction_38 -happyReduction_38 _ - _ - = HappyAbsSyn20 - ([] - ) - -happyReduce_39 = happySpecReduce_3 15 happyReduction_39 -happyReduction_39 _ - (HappyAbsSyn21 happy_var_2) - _ - = HappyAbsSyn20 - (happy_var_2 - ) -happyReduction_39 _ _ _ = notHappyAtAll - -happyReduce_40 = happySpecReduce_1 16 happyReduction_40 -happyReduction_40 (HappyAbsSyn37 happy_var_1) - = HappyAbsSyn21 - ([happy_var_1] - ) -happyReduction_40 _ = notHappyAtAll - -happyReduce_41 = happySpecReduce_3 16 happyReduction_41 -happyReduction_41 (HappyAbsSyn37 happy_var_3) - _ - (HappyAbsSyn21 happy_var_1) - = HappyAbsSyn21 - (happy_var_1 ++ [happy_var_3] - ) -happyReduction_41 _ _ _ = notHappyAtAll - -happyReduce_42 = happySpecReduce_1 17 happyReduction_42 -happyReduction_42 (HappyAbsSyn18 happy_var_1) - = HappyAbsSyn22 - (NewExpr happy_var_1 - ) -happyReduction_42 _ = notHappyAtAll - -happyReduce_43 = happySpecReduce_1 17 happyReduction_43 -happyReduction_43 (HappyAbsSyn19 happy_var_1) - = HappyAbsSyn22 - (CallExpr happy_var_1 - ) -happyReduction_43 _ = notHappyAtAll - -happyReduce_44 = happySpecReduce_1 18 happyReduction_44 -happyReduction_44 (HappyAbsSyn22 happy_var_1) - = HappyAbsSyn23 - (LeftExpr happy_var_1 - ) -happyReduction_44 _ = notHappyAtAll - -happyReduce_45 = happySpecReduce_2 18 happyReduction_45 -happyReduction_45 _ - (HappyAbsSyn22 happy_var_1) - = HappyAbsSyn23 - (PostInc happy_var_1 - ) -happyReduction_45 _ _ = notHappyAtAll - -happyReduce_46 = happySpecReduce_2 18 happyReduction_46 -happyReduction_46 _ - (HappyAbsSyn22 happy_var_1) - = HappyAbsSyn23 - (PostDec happy_var_1 - ) -happyReduction_46 _ _ = notHappyAtAll - -happyReduce_47 = happySpecReduce_1 19 happyReduction_47 -happyReduction_47 (HappyAbsSyn23 happy_var_1) - = HappyAbsSyn24 - (PostFix happy_var_1 - ) -happyReduction_47 _ = notHappyAtAll - -happyReduce_48 = happySpecReduce_2 19 happyReduction_48 -happyReduction_48 (HappyAbsSyn24 happy_var_2) - _ - = HappyAbsSyn24 - (Delete happy_var_2 - ) -happyReduction_48 _ _ = notHappyAtAll - -happyReduce_49 = happySpecReduce_2 19 happyReduction_49 -happyReduction_49 (HappyAbsSyn24 happy_var_2) - _ - = HappyAbsSyn24 - (Void happy_var_2 - ) -happyReduction_49 _ _ = notHappyAtAll - -happyReduce_50 = happySpecReduce_2 19 happyReduction_50 -happyReduction_50 (HappyAbsSyn24 happy_var_2) - _ - = HappyAbsSyn24 - (TypeOf happy_var_2 - ) -happyReduction_50 _ _ = notHappyAtAll - -happyReduce_51 = happySpecReduce_2 19 happyReduction_51 -happyReduction_51 (HappyAbsSyn24 happy_var_2) - _ - = HappyAbsSyn24 - (DoublePlus happy_var_2 - ) -happyReduction_51 _ _ = notHappyAtAll - -happyReduce_52 = happySpecReduce_2 19 happyReduction_52 -happyReduction_52 (HappyAbsSyn24 happy_var_2) - _ - = HappyAbsSyn24 - (DoubleMinus happy_var_2 - ) -happyReduction_52 _ _ = notHappyAtAll - -happyReduce_53 = happySpecReduce_2 19 happyReduction_53 -happyReduction_53 (HappyAbsSyn24 happy_var_2) - _ - = HappyAbsSyn24 - (UnaryPlus happy_var_2 - ) -happyReduction_53 _ _ = notHappyAtAll - -happyReduce_54 = happySpecReduce_2 19 happyReduction_54 -happyReduction_54 (HappyAbsSyn24 happy_var_2) - _ - = HappyAbsSyn24 - (UnaryMinus happy_var_2 - ) -happyReduction_54 _ _ = notHappyAtAll - -happyReduce_55 = happySpecReduce_2 19 happyReduction_55 -happyReduction_55 (HappyAbsSyn24 happy_var_2) - _ - = HappyAbsSyn24 - (Not happy_var_2 - ) -happyReduction_55 _ _ = notHappyAtAll - -happyReduce_56 = happySpecReduce_2 19 happyReduction_56 -happyReduction_56 (HappyAbsSyn24 happy_var_2) - _ - = HappyAbsSyn24 - (BitNot happy_var_2 - ) -happyReduction_56 _ _ = notHappyAtAll - -happyReduce_57 = happySpecReduce_1 20 happyReduction_57 -happyReduction_57 (HappyAbsSyn24 happy_var_1) - = HappyAbsSyn25 - (UExpr happy_var_1 - ) -happyReduction_57 _ = notHappyAtAll - -happyReduce_58 = happySpecReduce_3 20 happyReduction_58 -happyReduction_58 (HappyAbsSyn24 happy_var_3) - _ - (HappyAbsSyn25 happy_var_1) - = HappyAbsSyn25 - (Times happy_var_1 happy_var_3 - ) -happyReduction_58 _ _ _ = notHappyAtAll - -happyReduce_59 = happySpecReduce_3 20 happyReduction_59 -happyReduction_59 (HappyAbsSyn24 happy_var_3) - _ - (HappyAbsSyn25 happy_var_1) - = HappyAbsSyn25 - (Div happy_var_1 happy_var_3 - ) -happyReduction_59 _ _ _ = notHappyAtAll - -happyReduce_60 = happySpecReduce_3 20 happyReduction_60 -happyReduction_60 (HappyAbsSyn24 happy_var_3) - _ - (HappyAbsSyn25 happy_var_1) - = HappyAbsSyn25 - (Mod happy_var_1 happy_var_3 - ) -happyReduction_60 _ _ _ = notHappyAtAll - -happyReduce_61 = happySpecReduce_1 21 happyReduction_61 -happyReduction_61 (HappyAbsSyn25 happy_var_1) - = HappyAbsSyn26 - (MultExpr happy_var_1 - ) -happyReduction_61 _ = notHappyAtAll - -happyReduce_62 = happySpecReduce_3 21 happyReduction_62 -happyReduction_62 (HappyAbsSyn25 happy_var_3) - _ - (HappyAbsSyn26 happy_var_1) - = HappyAbsSyn26 - (Plus happy_var_1 happy_var_3 - ) -happyReduction_62 _ _ _ = notHappyAtAll - -happyReduce_63 = happySpecReduce_3 21 happyReduction_63 -happyReduction_63 (HappyAbsSyn25 happy_var_3) - _ - (HappyAbsSyn26 happy_var_1) - = HappyAbsSyn26 - (Minus happy_var_1 happy_var_3 - ) -happyReduction_63 _ _ _ = notHappyAtAll - -happyReduce_64 = happySpecReduce_1 22 happyReduction_64 -happyReduction_64 (HappyAbsSyn26 happy_var_1) - = HappyAbsSyn27 - (AddExpr happy_var_1 - ) -happyReduction_64 _ = notHappyAtAll - -happyReduce_65 = happySpecReduce_3 22 happyReduction_65 -happyReduction_65 (HappyAbsSyn26 happy_var_3) - _ - (HappyAbsSyn27 happy_var_1) - = HappyAbsSyn27 - (ShiftLeft happy_var_1 happy_var_3 - ) -happyReduction_65 _ _ _ = notHappyAtAll - -happyReduce_66 = happySpecReduce_3 22 happyReduction_66 -happyReduction_66 (HappyAbsSyn26 happy_var_3) - _ - (HappyAbsSyn27 happy_var_1) - = HappyAbsSyn27 - (ShiftRight happy_var_1 happy_var_3 - ) -happyReduction_66 _ _ _ = notHappyAtAll - -happyReduce_67 = happySpecReduce_3 22 happyReduction_67 -happyReduction_67 (HappyAbsSyn26 happy_var_3) - _ - (HappyAbsSyn27 happy_var_1) - = HappyAbsSyn27 - (ShiftRight2 happy_var_1 happy_var_3 - ) -happyReduction_67 _ _ _ = notHappyAtAll - -happyReduce_68 = happySpecReduce_1 23 happyReduction_68 -happyReduction_68 (HappyAbsSyn27 happy_var_1) - = HappyAbsSyn28 - (ShiftE happy_var_1 - ) -happyReduction_68 _ = notHappyAtAll - -happyReduce_69 = happySpecReduce_3 23 happyReduction_69 -happyReduction_69 (HappyAbsSyn27 happy_var_3) - _ - (HappyAbsSyn28 happy_var_1) - = HappyAbsSyn28 - (LessThan happy_var_1 happy_var_3 - ) -happyReduction_69 _ _ _ = notHappyAtAll - -happyReduce_70 = happySpecReduce_3 23 happyReduction_70 -happyReduction_70 (HappyAbsSyn27 happy_var_3) - _ - (HappyAbsSyn28 happy_var_1) - = HappyAbsSyn28 - (GreaterThan happy_var_1 happy_var_3 - ) -happyReduction_70 _ _ _ = notHappyAtAll - -happyReduce_71 = happySpecReduce_3 23 happyReduction_71 -happyReduction_71 (HappyAbsSyn27 happy_var_3) - _ - (HappyAbsSyn28 happy_var_1) - = HappyAbsSyn28 - (LessEqual happy_var_1 happy_var_3 - ) -happyReduction_71 _ _ _ = notHappyAtAll - -happyReduce_72 = happySpecReduce_3 23 happyReduction_72 -happyReduction_72 (HappyAbsSyn27 happy_var_3) - _ - (HappyAbsSyn28 happy_var_1) - = HappyAbsSyn28 - (GreaterEqual happy_var_1 happy_var_3 - ) -happyReduction_72 _ _ _ = notHappyAtAll - -happyReduce_73 = happySpecReduce_3 23 happyReduction_73 -happyReduction_73 (HappyAbsSyn27 happy_var_3) - _ - (HappyAbsSyn28 happy_var_1) - = HappyAbsSyn28 - (InstanceOf happy_var_1 happy_var_3 - ) -happyReduction_73 _ _ _ = notHappyAtAll - -happyReduce_74 = happySpecReduce_3 23 happyReduction_74 -happyReduction_74 (HappyAbsSyn27 happy_var_3) - _ - (HappyAbsSyn28 happy_var_1) - = HappyAbsSyn28 - (InObject happy_var_1 happy_var_3 - ) -happyReduction_74 _ _ _ = notHappyAtAll - -happyReduce_75 = happySpecReduce_1 24 happyReduction_75 -happyReduction_75 (HappyAbsSyn28 happy_var_1) - = HappyAbsSyn29 - (RelE happy_var_1 - ) -happyReduction_75 _ = notHappyAtAll - -happyReduce_76 = happySpecReduce_3 24 happyReduction_76 -happyReduction_76 (HappyAbsSyn28 happy_var_3) - _ - (HappyAbsSyn29 happy_var_1) - = HappyAbsSyn29 - (Equal happy_var_1 happy_var_3 - ) -happyReduction_76 _ _ _ = notHappyAtAll - -happyReduce_77 = happySpecReduce_3 24 happyReduction_77 -happyReduction_77 (HappyAbsSyn28 happy_var_3) - _ - (HappyAbsSyn29 happy_var_1) - = HappyAbsSyn29 - (NotEqual happy_var_1 happy_var_3 - ) -happyReduction_77 _ _ _ = notHappyAtAll - -happyReduce_78 = happySpecReduce_3 24 happyReduction_78 -happyReduction_78 (HappyAbsSyn28 happy_var_3) - _ - (HappyAbsSyn29 happy_var_1) - = HappyAbsSyn29 - (Equal2 happy_var_1 happy_var_3 - ) -happyReduction_78 _ _ _ = notHappyAtAll - -happyReduce_79 = happySpecReduce_3 24 happyReduction_79 -happyReduction_79 (HappyAbsSyn28 happy_var_3) - _ - (HappyAbsSyn29 happy_var_1) - = HappyAbsSyn29 - (NotEqual happy_var_1 happy_var_3 - ) -happyReduction_79 _ _ _ = notHappyAtAll - -happyReduce_80 = happySpecReduce_1 25 happyReduction_80 -happyReduction_80 (HappyAbsSyn29 happy_var_1) - = HappyAbsSyn30 - (EqualE happy_var_1 - ) -happyReduction_80 _ = notHappyAtAll - -happyReduce_81 = happySpecReduce_3 25 happyReduction_81 -happyReduction_81 (HappyAbsSyn29 happy_var_3) - _ - (HappyAbsSyn30 happy_var_1) - = HappyAbsSyn30 - (BABitAnd happy_var_1 happy_var_3 - ) -happyReduction_81 _ _ _ = notHappyAtAll - -happyReduce_82 = happySpecReduce_1 26 happyReduction_82 -happyReduction_82 (HappyAbsSyn30 happy_var_1) - = HappyAbsSyn31 - (BitAnd happy_var_1 - ) -happyReduction_82 _ = notHappyAtAll - -happyReduce_83 = happySpecReduce_3 26 happyReduction_83 -happyReduction_83 (HappyAbsSyn30 happy_var_3) - _ - (HappyAbsSyn31 happy_var_1) - = HappyAbsSyn31 - (BXBitXOR happy_var_1 happy_var_3 - ) -happyReduction_83 _ _ _ = notHappyAtAll - -happyReduce_84 = happySpecReduce_1 27 happyReduction_84 -happyReduction_84 (HappyAbsSyn31 happy_var_1) - = HappyAbsSyn32 - (BitXOR happy_var_1 - ) -happyReduction_84 _ = notHappyAtAll - -happyReduce_85 = happySpecReduce_3 27 happyReduction_85 -happyReduction_85 (HappyAbsSyn31 happy_var_3) - _ - (HappyAbsSyn32 happy_var_1) - = HappyAbsSyn32 - (BOBitOR happy_var_1 happy_var_3 - ) -happyReduction_85 _ _ _ = notHappyAtAll - -happyReduce_86 = happySpecReduce_1 28 happyReduction_86 -happyReduction_86 (HappyAbsSyn32 happy_var_1) - = HappyAbsSyn33 - (BitOR happy_var_1 - ) -happyReduction_86 _ = notHappyAtAll - -happyReduce_87 = happySpecReduce_3 28 happyReduction_87 -happyReduction_87 (HappyAbsSyn32 happy_var_3) - _ - (HappyAbsSyn33 happy_var_1) - = HappyAbsSyn33 - (LALogAnd happy_var_1 happy_var_3 - ) -happyReduction_87 _ _ _ = notHappyAtAll - -happyReduce_88 = happySpecReduce_1 29 happyReduction_88 -happyReduction_88 (HappyAbsSyn33 happy_var_1) - = HappyAbsSyn34 - (LogAnd happy_var_1 - ) -happyReduction_88 _ = notHappyAtAll - -happyReduce_89 = happySpecReduce_3 29 happyReduction_89 -happyReduction_89 (HappyAbsSyn33 happy_var_3) - _ - (HappyAbsSyn34 happy_var_1) - = HappyAbsSyn34 - (LOLogOr happy_var_1 happy_var_3 - ) -happyReduction_89 _ _ _ = notHappyAtAll - -happyReduce_90 = happySpecReduce_1 30 happyReduction_90 -happyReduction_90 (HappyAbsSyn34 happy_var_1) - = HappyAbsSyn35 - (LogOr happy_var_1 - ) -happyReduction_90 _ = notHappyAtAll - -happyReduce_91 = happyReduce 5 30 happyReduction_91 -happyReduction_91 ((HappyAbsSyn37 happy_var_5) `HappyStk` - _ `HappyStk` - (HappyAbsSyn37 happy_var_3) `HappyStk` - _ `HappyStk` - (HappyAbsSyn34 happy_var_1) `HappyStk` - happyRest) - = HappyAbsSyn35 - (CondIf happy_var_1 happy_var_3 happy_var_5 - ) `HappyStk` happyRest - -happyReduce_92 = happySpecReduce_1 31 happyReduction_92 -happyReduction_92 _ - = HappyAbsSyn36 - (AssignOpMult - ) - -happyReduce_93 = happySpecReduce_1 31 happyReduction_93 -happyReduction_93 _ - = HappyAbsSyn36 - (AssignOpDiv - ) - -happyReduce_94 = happySpecReduce_1 31 happyReduction_94 -happyReduction_94 _ - = HappyAbsSyn36 - (AssignOpMod - ) - -happyReduce_95 = happySpecReduce_1 31 happyReduction_95 -happyReduction_95 _ - = HappyAbsSyn36 - (AssignOpPlus - ) - -happyReduce_96 = happySpecReduce_1 31 happyReduction_96 -happyReduction_96 _ - = HappyAbsSyn36 - (AssignOpMinus - ) - -happyReduce_97 = happySpecReduce_1 31 happyReduction_97 -happyReduction_97 _ - = HappyAbsSyn36 - (AssignNormal - ) - -happyReduce_98 = happySpecReduce_3 32 happyReduction_98 -happyReduction_98 (HappyAbsSyn37 happy_var_3) - (HappyAbsSyn36 happy_var_2) - (HappyAbsSyn22 happy_var_1) - = HappyAbsSyn37 - (Assign happy_var_1 happy_var_2 happy_var_3 - ) -happyReduction_98 _ _ _ = notHappyAtAll - -happyReduce_99 = happySpecReduce_1 32 happyReduction_99 -happyReduction_99 (HappyAbsSyn35 happy_var_1) - = HappyAbsSyn37 - (CondE happy_var_1 - ) -happyReduction_99 _ = notHappyAtAll - -happyReduce_100 = happySpecReduce_1 32 happyReduction_100 -happyReduction_100 (HappyAbsSyn60 happy_var_1) - = HappyAbsSyn37 - (AEFuncDecl happy_var_1 - ) -happyReduction_100 _ = notHappyAtAll - -happyReduce_101 = happySpecReduce_1 33 happyReduction_101 -happyReduction_101 (HappyAbsSyn37 happy_var_1) - = HappyAbsSyn38 - (AssignE happy_var_1 - ) -happyReduction_101 _ = notHappyAtAll - -happyReduce_102 = happySpecReduce_1 34 happyReduction_102 -happyReduction_102 (HappyAbsSyn40 happy_var_1) - = HappyAbsSyn39 - (Block happy_var_1 - ) -happyReduction_102 _ = notHappyAtAll - -happyReduce_103 = happySpecReduce_1 34 happyReduction_103 -happyReduction_103 (HappyAbsSyn42 happy_var_1) - = HappyAbsSyn39 - (VarStmt happy_var_1 - ) -happyReduction_103 _ = notHappyAtAll - -happyReduce_104 = happySpecReduce_1 34 happyReduction_104 -happyReduction_104 _ - = HappyAbsSyn39 - (EmptyStmt - ) - -happyReduce_105 = happySpecReduce_1 34 happyReduction_105 -happyReduction_105 (HappyAbsSyn48 happy_var_1) - = HappyAbsSyn39 - (ExprStmt happy_var_1 - ) -happyReduction_105 _ = notHappyAtAll - -happyReduce_106 = happySpecReduce_1 34 happyReduction_106 -happyReduction_106 (HappyAbsSyn49 happy_var_1) - = HappyAbsSyn39 - (IfStmt happy_var_1 - ) -happyReduction_106 _ = notHappyAtAll - -happyReduce_107 = happySpecReduce_1 34 happyReduction_107 -happyReduction_107 (HappyAbsSyn50 happy_var_1) - = HappyAbsSyn39 - (ItStmt happy_var_1 - ) -happyReduction_107 _ = notHappyAtAll - -happyReduce_108 = happySpecReduce_3 34 happyReduction_108 -happyReduction_108 _ - (HappyTerminal (TokenIdent happy_var_2)) - _ - = HappyAbsSyn39 - (ContStmt $ Just happy_var_2 - ) -happyReduction_108 _ _ _ = notHappyAtAll - -happyReduce_109 = happySpecReduce_2 34 happyReduction_109 -happyReduction_109 _ - _ - = HappyAbsSyn39 - (ContStmt Nothing - ) - -happyReduce_110 = happySpecReduce_3 34 happyReduction_110 -happyReduction_110 _ - (HappyTerminal (TokenIdent happy_var_2)) - _ - = HappyAbsSyn39 - (BreakStmt $ Just happy_var_2 - ) -happyReduction_110 _ _ _ = notHappyAtAll - -happyReduce_111 = happySpecReduce_2 34 happyReduction_111 -happyReduction_111 _ - _ - = HappyAbsSyn39 - (BreakStmt Nothing - ) - -happyReduce_112 = happySpecReduce_3 34 happyReduction_112 -happyReduction_112 _ - (HappyAbsSyn47 happy_var_2) - _ - = HappyAbsSyn39 - (ReturnStmt $ Just happy_var_2 - ) -happyReduction_112 _ _ _ = notHappyAtAll - -happyReduce_113 = happySpecReduce_2 34 happyReduction_113 -happyReduction_113 _ - _ - = HappyAbsSyn39 - (ReturnStmt Nothing - ) - -happyReduce_114 = happyReduce 5 34 happyReduction_114 -happyReduction_114 ((HappyAbsSyn39 happy_var_5) `HappyStk` - _ `HappyStk` - (HappyAbsSyn38 happy_var_3) `HappyStk` - _ `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn39 - (WithStmt happy_var_3 happy_var_5 - ) `HappyStk` happyRest - -happyReduce_115 = happySpecReduce_3 34 happyReduction_115 -happyReduction_115 (HappyAbsSyn39 happy_var_3) - _ - (HappyTerminal (TokenIdent happy_var_1)) - = HappyAbsSyn39 - (LabelledStmt happy_var_1 happy_var_3 - ) -happyReduction_115 _ _ _ = notHappyAtAll - -happyReduce_116 = happySpecReduce_1 34 happyReduction_116 -happyReduction_116 (HappyAbsSyn55 happy_var_1) - = HappyAbsSyn39 - (Switch happy_var_1 - ) -happyReduction_116 _ = notHappyAtAll - -happyReduce_117 = happySpecReduce_3 34 happyReduction_117 -happyReduction_117 _ - (HappyAbsSyn47 happy_var_2) - _ - = HappyAbsSyn39 - (ThrowExpr happy_var_2 - ) -happyReduction_117 _ _ _ = notHappyAtAll - -happyReduce_118 = happySpecReduce_1 34 happyReduction_118 -happyReduction_118 (HappyAbsSyn43 happy_var_1) - = HappyAbsSyn39 - (TryStmt happy_var_1 - ) -happyReduction_118 _ = notHappyAtAll - -happyReduce_119 = happySpecReduce_3 35 happyReduction_119 -happyReduction_119 _ - (HappyAbsSyn41 happy_var_2) - _ - = HappyAbsSyn40 - (happy_var_2 - ) -happyReduction_119 _ _ _ = notHappyAtAll - -happyReduce_120 = happySpecReduce_0 36 happyReduction_120 -happyReduction_120 = HappyAbsSyn41 - ([] - ) - -happyReduce_121 = happySpecReduce_1 36 happyReduction_121 -happyReduction_121 (HappyAbsSyn39 happy_var_1) - = HappyAbsSyn41 - ([happy_var_1] - ) -happyReduction_121 _ = notHappyAtAll - -happyReduce_122 = happySpecReduce_2 36 happyReduction_122 -happyReduction_122 (HappyAbsSyn39 happy_var_2) - (HappyAbsSyn41 happy_var_1) - = HappyAbsSyn41 - (happy_var_1 ++ [happy_var_2] - ) -happyReduction_122 _ _ = notHappyAtAll - -happyReduce_123 = happySpecReduce_2 37 happyReduction_123 -happyReduction_123 (HappyAbsSyn52 happy_var_2) - _ - = HappyAbsSyn42 - (happy_var_2 - ) -happyReduction_123 _ _ = notHappyAtAll - -happyReduce_124 = happySpecReduce_2 37 happyReduction_124 -happyReduction_124 (HappyAbsSyn52 happy_var_2) - _ - = HappyAbsSyn42 - (happy_var_2 - ) -happyReduction_124 _ _ = notHappyAtAll - -happyReduce_125 = happySpecReduce_3 38 happyReduction_125 -happyReduction_125 (HappyAbsSyn44 happy_var_3) - (HappyAbsSyn40 happy_var_2) - _ - = HappyAbsSyn43 - (TryBC happy_var_2 happy_var_3 - ) -happyReduction_125 _ _ _ = notHappyAtAll - -happyReduce_126 = happySpecReduce_3 38 happyReduction_126 -happyReduction_126 (HappyAbsSyn46 happy_var_3) - (HappyAbsSyn40 happy_var_2) - _ - = HappyAbsSyn43 - (TryBF happy_var_2 happy_var_3 - ) -happyReduction_126 _ _ _ = notHappyAtAll - -happyReduce_127 = happyReduce 4 38 happyReduction_127 -happyReduction_127 ((HappyAbsSyn46 happy_var_4) `HappyStk` - (HappyAbsSyn44 happy_var_3) `HappyStk` - (HappyAbsSyn40 happy_var_2) `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn43 - (TryBCF happy_var_2 happy_var_3 happy_var_4 - ) `HappyStk` happyRest - -happyReduce_128 = happySpecReduce_1 39 happyReduction_128 -happyReduction_128 (HappyAbsSyn45 happy_var_1) - = HappyAbsSyn44 - ([happy_var_1] - ) -happyReduction_128 _ = notHappyAtAll - -happyReduce_129 = happySpecReduce_2 39 happyReduction_129 -happyReduction_129 (HappyAbsSyn45 happy_var_2) - (HappyAbsSyn44 happy_var_1) - = HappyAbsSyn44 - (happy_var_1 ++ [happy_var_2 ] - ) -happyReduction_129 _ _ = notHappyAtAll - -happyReduce_130 = happyReduce 5 40 happyReduction_130 -happyReduction_130 ((HappyAbsSyn40 happy_var_5) `HappyStk` - _ `HappyStk` - (HappyTerminal (TokenIdent happy_var_3)) `HappyStk` - _ `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn45 - (Catch happy_var_3 happy_var_5 - ) `HappyStk` happyRest - -happyReduce_131 = happyReduce 7 40 happyReduction_131 -happyReduction_131 ((HappyAbsSyn40 happy_var_7) `HappyStk` - _ `HappyStk` - (HappyAbsSyn38 happy_var_5) `HappyStk` - _ `HappyStk` - (HappyTerminal (TokenIdent happy_var_3)) `HappyStk` - _ `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn45 - (CatchIf happy_var_3 happy_var_7 happy_var_5 - ) `HappyStk` happyRest - -happyReduce_132 = happySpecReduce_2 41 happyReduction_132 -happyReduction_132 (HappyAbsSyn40 happy_var_2) - _ - = HappyAbsSyn46 - (happy_var_2 - ) -happyReduction_132 _ _ = notHappyAtAll - -happyReduce_133 = happyMonad2Reduce 1 42 happyReduction_133 -happyReduction_133 ((HappyAbsSyn38 happy_var_1) `HappyStk` - happyRest) tk - = happyThen (( \t -> autoSemiInsert t happy_var_1) tk - ) (\r -> happyReturn (HappyAbsSyn47 r)) - -happyReduce_134 = happySpecReduce_2 43 happyReduction_134 -happyReduction_134 _ - (HappyAbsSyn47 happy_var_1) - = HappyAbsSyn48 - (happy_var_1 - ) -happyReduction_134 _ _ = notHappyAtAll - -happyReduce_135 = happyReduce 7 44 happyReduction_135 -happyReduction_135 ((HappyAbsSyn39 happy_var_7) `HappyStk` - _ `HappyStk` - (HappyAbsSyn39 happy_var_5) `HappyStk` - _ `HappyStk` - (HappyAbsSyn38 happy_var_3) `HappyStk` - _ `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn49 - (IfElse happy_var_3 happy_var_5 happy_var_7 - ) `HappyStk` happyRest - -happyReduce_136 = happyReduce 5 44 happyReduction_136 -happyReduction_136 ((HappyAbsSyn39 happy_var_5) `HappyStk` - _ `HappyStk` - (HappyAbsSyn38 happy_var_3) `HappyStk` - _ `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn49 - (IfOnly happy_var_3 happy_var_5 - ) `HappyStk` happyRest - -happyReduce_137 = happyReduce 7 45 happyReduction_137 -happyReduction_137 (_ `HappyStk` - _ `HappyStk` - (HappyAbsSyn38 happy_var_5) `HappyStk` - _ `HappyStk` - _ `HappyStk` - (HappyAbsSyn39 happy_var_2) `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn50 - (DoWhile happy_var_2 happy_var_5 - ) `HappyStk` happyRest - -happyReduce_138 = happyReduce 5 45 happyReduction_138 -happyReduction_138 ((HappyAbsSyn39 happy_var_5) `HappyStk` - _ `HappyStk` - (HappyAbsSyn38 happy_var_3) `HappyStk` - _ `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn50 - (While happy_var_3 happy_var_5 - ) `HappyStk` happyRest - -happyReduce_139 = happyReduce 9 45 happyReduction_139 -happyReduction_139 ((HappyAbsSyn39 happy_var_9) `HappyStk` - _ `HappyStk` - (HappyAbsSyn51 happy_var_7) `HappyStk` - _ `HappyStk` - (HappyAbsSyn51 happy_var_5) `HappyStk` - _ `HappyStk` - (HappyAbsSyn51 happy_var_3) `HappyStk` - _ `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn50 - (For happy_var_3 happy_var_5 happy_var_7 happy_var_9 - ) `HappyStk` happyRest - -happyReduce_140 = happyReduce 10 45 happyReduction_140 -happyReduction_140 ((HappyAbsSyn39 happy_var_10) `HappyStk` - _ `HappyStk` - (HappyAbsSyn51 happy_var_8) `HappyStk` - _ `HappyStk` - (HappyAbsSyn51 happy_var_6) `HappyStk` - _ `HappyStk` - (HappyAbsSyn52 happy_var_4) `HappyStk` - _ `HappyStk` - _ `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn50 - (ForVar happy_var_4 happy_var_6 happy_var_8 happy_var_10 - ) `HappyStk` happyRest - -happyReduce_141 = happyReduce 9 45 happyReduction_141 -happyReduction_141 ((HappyAbsSyn39 happy_var_9) `HappyStk` - _ `HappyStk` - (HappyAbsSyn51 happy_var_7) `HappyStk` - _ `HappyStk` - (HappyAbsSyn51 happy_var_5) `HappyStk` - _ `HappyStk` - (HappyAbsSyn52 happy_var_3) `HappyStk` - _ `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn50 - (ForVar happy_var_3 happy_var_5 happy_var_7 happy_var_9 - ) `HappyStk` happyRest - -happyReduce_142 = happyReduce 8 45 happyReduction_142 -happyReduction_142 ((HappyAbsSyn39 happy_var_8) `HappyStk` - _ `HappyStk` - (HappyAbsSyn38 happy_var_6) `HappyStk` - _ `HappyStk` - (HappyAbsSyn52 happy_var_4) `HappyStk` - _ `HappyStk` - _ `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn50 - (ForIn happy_var_4 happy_var_6 happy_var_8 - ) `HappyStk` happyRest - -happyReduce_143 = happyReduce 7 45 happyReduction_143 -happyReduction_143 ((HappyAbsSyn39 happy_var_7) `HappyStk` - _ `HappyStk` - (HappyAbsSyn38 happy_var_5) `HappyStk` - _ `HappyStk` - (HappyAbsSyn52 happy_var_3) `HappyStk` - _ `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn50 - (ForIn happy_var_3 happy_var_5 happy_var_7 - ) `HappyStk` happyRest - -happyReduce_144 = happySpecReduce_0 46 happyReduction_144 -happyReduction_144 = HappyAbsSyn51 - (Nothing - ) - -happyReduce_145 = happySpecReduce_1 46 happyReduction_145 -happyReduction_145 (HappyAbsSyn38 happy_var_1) - = HappyAbsSyn51 - (Just happy_var_1 - ) -happyReduction_145 _ = notHappyAtAll - -happyReduce_146 = happySpecReduce_1 47 happyReduction_146 -happyReduction_146 (HappyAbsSyn53 happy_var_1) - = HappyAbsSyn52 - ([happy_var_1] - ) -happyReduction_146 _ = notHappyAtAll - -happyReduce_147 = happySpecReduce_3 47 happyReduction_147 -happyReduction_147 (HappyAbsSyn53 happy_var_3) - _ - (HappyAbsSyn52 happy_var_1) - = HappyAbsSyn52 - (happy_var_1 ++ [happy_var_3] - ) -happyReduction_147 _ _ _ = notHappyAtAll - -happyReduce_148 = happySpecReduce_2 48 happyReduction_148 -happyReduction_148 (HappyAbsSyn54 happy_var_2) - (HappyTerminal (TokenIdent happy_var_1)) - = HappyAbsSyn53 - (VarDecl happy_var_1 happy_var_2 - ) -happyReduction_148 _ _ = notHappyAtAll - -happyReduce_149 = happySpecReduce_0 49 happyReduction_149 -happyReduction_149 = HappyAbsSyn54 - (Nothing - ) - -happyReduce_150 = happySpecReduce_2 49 happyReduction_150 -happyReduction_150 (HappyAbsSyn37 happy_var_2) - _ - = HappyAbsSyn54 - (Just happy_var_2 - ) -happyReduction_150 _ _ = notHappyAtAll - -happyReduce_151 = happyReduce 5 50 happyReduction_151 -happyReduction_151 ((HappyAbsSyn56 happy_var_5) `HappyStk` - _ `HappyStk` - (HappyAbsSyn38 happy_var_3) `HappyStk` - _ `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn55 - (SSwitch happy_var_3 happy_var_5 - ) `HappyStk` happyRest - -happyReduce_152 = happySpecReduce_3 51 happyReduction_152 -happyReduction_152 _ - (HappyAbsSyn57 happy_var_2) - _ - = HappyAbsSyn56 - (CaseBlock happy_var_2 [] [] - ) -happyReduction_152 _ _ _ = notHappyAtAll - -happyReduce_153 = happyReduce 5 51 happyReduction_153 -happyReduction_153 (_ `HappyStk` - (HappyAbsSyn57 happy_var_4) `HappyStk` - (HappyAbsSyn59 happy_var_3) `HappyStk` - (HappyAbsSyn57 happy_var_2) `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn56 - (CaseBlock happy_var_2 [happy_var_3] happy_var_4 - ) `HappyStk` happyRest - -happyReduce_154 = happySpecReduce_0 52 happyReduction_154 -happyReduction_154 = HappyAbsSyn57 - ([] - ) - -happyReduce_155 = happySpecReduce_1 52 happyReduction_155 -happyReduction_155 (HappyAbsSyn58 happy_var_1) - = HappyAbsSyn57 - ([happy_var_1] - ) -happyReduction_155 _ = notHappyAtAll - -happyReduce_156 = happySpecReduce_2 52 happyReduction_156 -happyReduction_156 (HappyAbsSyn58 happy_var_2) - (HappyAbsSyn57 happy_var_1) - = HappyAbsSyn57 - (happy_var_1 ++ [happy_var_2] - ) -happyReduction_156 _ _ = notHappyAtAll - -happyReduce_157 = happyReduce 4 53 happyReduction_157 -happyReduction_157 ((HappyAbsSyn41 happy_var_4) `HappyStk` - _ `HappyStk` - (HappyAbsSyn38 happy_var_2) `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn58 - (CaseClause happy_var_2 happy_var_4 - ) `HappyStk` happyRest - -happyReduce_158 = happySpecReduce_3 54 happyReduction_158 -happyReduction_158 (HappyAbsSyn41 happy_var_3) - _ - _ - = HappyAbsSyn59 - (DefaultClause happy_var_3 - ) -happyReduction_158 _ _ _ = notHappyAtAll - -happyReduce_159 = happySpecReduce_2 55 happyReduction_159 -happyReduction_159 (HappyAbsSyn61 happy_var_2) - _ - = HappyAbsSyn60 - (happy_var_2 - ) -happyReduction_159 _ _ = notHappyAtAll - -happyReduce_160 = happyReduce 7 55 happyReduction_160 -happyReduction_160 (_ `HappyStk` - (HappyAbsSyn63 happy_var_6) `HappyStk` - _ `HappyStk` - _ `HappyStk` - (HappyAbsSyn62 happy_var_3) `HappyStk` - _ `HappyStk` - _ `HappyStk` - happyRest) - = HappyAbsSyn60 - (FuncDecl Nothing happy_var_3 happy_var_6 - ) `HappyStk` happyRest - -happyReduce_161 = happyReduce 7 56 happyReduction_161 -happyReduction_161 (_ `HappyStk` - (HappyAbsSyn63 happy_var_6) `HappyStk` - _ `HappyStk` - _ `HappyStk` - (HappyAbsSyn62 happy_var_3) `HappyStk` - _ `HappyStk` - (HappyTerminal (TokenIdent happy_var_1)) `HappyStk` - happyRest) - = HappyAbsSyn61 - (FuncDecl (Just happy_var_1) happy_var_3 happy_var_6 - ) `HappyStk` happyRest - -happyReduce_162 = happySpecReduce_0 57 happyReduction_162 -happyReduction_162 = HappyAbsSyn62 - ([] - ) - -happyReduce_163 = happySpecReduce_1 57 happyReduction_163 -happyReduction_163 (HappyTerminal (TokenIdent happy_var_1)) - = HappyAbsSyn62 - ([ happy_var_1 ] - ) -happyReduction_163 _ = notHappyAtAll - -happyReduce_164 = happySpecReduce_3 57 happyReduction_164 -happyReduction_164 (HappyTerminal (TokenIdent happy_var_3)) - _ - (HappyAbsSyn62 happy_var_1) - = HappyAbsSyn62 - (happy_var_1 ++ [happy_var_3] - ) -happyReduction_164 _ _ _ = notHappyAtAll - -happyReduce_165 = happySpecReduce_1 58 happyReduction_165 -happyReduction_165 (HappyAbsSyn65 happy_var_1) - = HappyAbsSyn63 - (happy_var_1 - ) -happyReduction_165 _ = notHappyAtAll - -happyReduce_166 = happySpecReduce_1 59 happyReduction_166 -happyReduction_166 (HappyAbsSyn65 happy_var_1) - = HappyAbsSyn64 - (JSProgram happy_var_1 - ) -happyReduction_166 _ = notHappyAtAll - -happyReduce_167 = happySpecReduce_1 60 happyReduction_167 -happyReduction_167 (HappyAbsSyn66 happy_var_1) - = HappyAbsSyn65 - ([happy_var_1] - ) -happyReduction_167 _ = notHappyAtAll - -happyReduce_168 = happySpecReduce_2 60 happyReduction_168 -happyReduction_168 (HappyAbsSyn66 happy_var_2) - (HappyAbsSyn65 happy_var_1) - = HappyAbsSyn65 - (happy_var_1 ++ [happy_var_2] - ) -happyReduction_168 _ _ = notHappyAtAll - -happyReduce_169 = happySpecReduce_1 61 happyReduction_169 -happyReduction_169 (HappyAbsSyn39 happy_var_1) - = HappyAbsSyn66 - (Stmt happy_var_1 - ) -happyReduction_169 _ = notHappyAtAll - -happyReduce_170 = happySpecReduce_1 61 happyReduction_170 -happyReduction_170 (HappyAbsSyn60 happy_var_1) - = HappyAbsSyn66 - (SEFuncDecl happy_var_1 - ) -happyReduction_170 _ = notHappyAtAll - -happyNewToken action sts stk - = lexerM action (\tk -> - let cont i = happyDoAction i tk action sts stk in - case tk of { - TokenEof -> happyDoAction 75 tk action sts stk; - TokenEof -> cont 1; - TokenInt happy_dollar_dollar -> cont 2; - TokenIdent happy_dollar_dollar -> cont 3; - TokenStringLit happy_dollar_dollar -> cont 4; - TokenROP "=" -> cont 5; - TokenROP "+" -> cont 6; - TokenROP "-" -> cont 7; - TokenROP "*" -> cont 8; - TokenROP "/" -> cont 9; - TokenROP "(" -> cont 10; - TokenROP ")" -> cont 11; - TokenROP "," -> cont 12; - TokenNL -> cont 13; - TokenROP "?" -> cont 14; - TokenROP ":" -> cont 15; - TokenROP "||" -> cont 16; - TokenROP "&&" -> cont 17; - TokenROP "|" -> cont 18; - TokenROP "^" -> cont 19; - TokenROP "&" -> cont 20; - TokenROP "==" -> cont 21; - TokenROP "!=" -> cont 22; - TokenROP "===" -> cont 23; - TokenROP "!==" -> cont 24; - TokenROP "<" -> cont 25; - TokenROP "<=" -> cont 26; - TokenROP ">=" -> cont 27; - TokenROP ">" -> cont 28; - TokenROP "<<" -> cont 29; - TokenROP ">>" -> cont 30; - TokenROP ">>>" -> cont 31; - TokenROP "!" -> cont 32; - TokenROP "~" -> cont 33; - TokenROP "++" -> cont 34; - TokenROP "--" -> cont 35; - TokenROP "." -> cont 36; - TokenROP "[" -> cont 37; - TokenROP "]" -> cont 38; - TokenROP "{" -> cont 39; - TokenROP "}" -> cont 40; - TokenRID "delete" -> cont 41; - TokenRID "void" -> cont 42; - TokenRID "typeof" -> cont 43; - TokenROP "%" -> cont 44; - TokenROP "*=" -> cont 45; - TokenROP "/=" -> cont 46; - TokenROP "%=" -> cont 47; - TokenROP "+=" -> cont 48; - TokenROP "-=" -> cont 49; - TokenRID "instanceof" -> cont 50; - TokenRID "if" -> cont 51; - TokenRID "else" -> cont 52; - TokenROP ";" -> cont 53; - TokenRID "do" -> cont 54; - TokenRID "while" -> cont 55; - TokenRID "for" -> cont 56; - TokenRID "this" -> cont 57; - TokenRID "var" -> cont 58; - TokenRID "const" -> cont 59; - TokenRID "function" -> cont 60; - TokenRID "new" -> cont 61; - TokenRID "try" -> cont 62; - TokenRID "catch" -> cont 63; - TokenRID "finally" -> cont 64; - TokenRID "continue" -> cont 65; - TokenRID "break" -> cont 66; - TokenRID "throw" -> cont 67; - TokenRID "return" -> cont 68; - TokenRID "with" -> cont 69; - TokenRID "switch" -> cont 70; - TokenRID "case" -> cont 71; - TokenRID "default" -> cont 72; - TokenRID "in" -> cont 73; - TokenRegex happy_dollar_dollar -> cont 74; - _ -> 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' :: () => Token -> P a -happyError' tk = parseError tk - -jsprogram = happySomeParser where - happySomeParser = happyThen (happyParse 0) (\x -> case x of {HappyAbsSyn64 z -> happyReturn z; _other -> notHappyAtAll }) - -primexpr = happySomeParser where - happySomeParser = happyThen (happyParse 1) (\x -> case x of {HappyAbsSyn10 z -> happyReturn z; _other -> notHappyAtAll }) - -happySeq = happyDontSeq - - -parseError :: Token -> P a -parseError tok = do - s <- get - throwError ("parse error" ++ " tok = " ++ show tok ++ " rest=<" ++ (rest s) ++ "> lnum = " ++ show (lineno s) ++ " mode= " ++ show (mode s) ++ show (tr s)) -{-# LINE 1 "GenericTemplate.hs" #-} -{-# LINE 1 "<built-in>" #-} -{-# LINE 1 "<command line>" #-} -{-# LINE 1 "GenericTemplate.hs" #-} --- Id: GenericTemplate.hs,v 1.26 2005/01/14 14:47:22 simonmar Exp - -{-# LINE 28 "GenericTemplate.hs" #-} - - -data Happy_IntList = HappyCons Int Happy_IntList - - - - - -{-# LINE 49 "GenericTemplate.hs" #-} - -{-# LINE 59 "GenericTemplate.hs" #-} - -{-# LINE 68 "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 _) = - (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 | (n < ((0) :: Int)) -> {- nothing -} - - (happyReduceArr ! rule) i tk st - where rule = ((negate ((n + ((1) :: Int))))) - n -> {- nothing -} - - - happyShift new_state i tk st - where new_state = (n - ((1) :: Int)) - where off = indexShortOffAddr happyActOffsets st - off_i = (off + i) - check = if (off_i >= ((0) :: Int)) - then (indexShortOffAddr happyCheck off_i == i) - else False - action | check = indexShortOffAddr happyTable off_i - | otherwise = indexShortOffAddr happyDefActions st - -{-# LINE 127 "GenericTemplate.hs" #-} - -{-# LINE 147 "GenericTemplate.hs" #-} -indexShortOffAddr arr off = arr ! off - - - - - - - - ------------------------------------------------------------------------------ --- HappyState data type (not arrays) - -{-# LINE 170 "GenericTemplate.hs" #-} - ------------------------------------------------------------------------------ --- Shifting a token - -happyShift new_state (0) tk st sts stk@(x `HappyStk` _) = - let i = (case x of { HappyErrorToken (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)) ((HappyTerminal (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 - ((1) :: 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 = - happyThen1 (fn stk tk) (\r -> happyGoto nt j tk st1 sts1 (r `HappyStk` drop_stk)) - where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) - drop_stk = happyDropStk k 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 = - happyThen1 (fn stk tk) (\r -> happyNewToken new_state sts1 (r `HappyStk` drop_stk)) - where sts1@((HappyCons (st1@(action)) (_))) = happyDrop k (HappyCons (st) (sts)) - drop_stk = happyDropStk k stk - - off = indexShortOffAddr happyGotoOffsets st1 - off_i = (off + nt) - new_state = indexShortOffAddr happyTable off_i - - - - -happyDrop (0) l = l -happyDrop n (HappyCons (_) (t)) = happyDrop (n - ((1) :: Int)) t - -happyDropStk (0) l = l -happyDropStk n (x `HappyStk` xs) = happyDropStk (n - ((1)::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 + 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 = --- trace "failing" $ - happyError_ 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 ( (HappyErrorToken (i)) `HappyStk` stk) - --- Internal happy errors: - -notHappyAtAll = error "Internal Happy error\n" - ------------------------------------------------------------------------------ --- Hack to get the typechecker to accept our action functions - - - - - - - ------------------------------------------------------------------------------ --- 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. +{-- + JavaScript Parser using Parsec + + Advantages over Happy/Alex are speed (for first parse) and ability to help with + overcoming language + grammer kinks easily (such auto semi colon insert); built in facilities for + handling expression sub-grammer. + + Disadvantages are that remodelling of grammer is required to remove left recursion etc. + + + Limitations: + - Nested 'new' expressions are not supported. ie "new new MyObject" are not support" + + To test individual productions use parseEof ie + + parseEof callExpr "bob()[]" + +--} + +module HJS.Parser.JavaScriptParser(parseProgram,lexProgram,runLexer) where + + +import Text.ParserCombinators.Parsec +import Text.ParserCombinators.Parsec.Expr + + +import HJS.Parser.Utils +import HJS.Parser.JavaScript +import HJS.Parser.Prim +import HJS.Parser.Lexer (runLexer,lexProgram) + + +import Data.Char + +------------- +-- Grammer +------------ + +-- +-- Expressions +-- + +primExpr = + do { rID "this" ;return This } + <|> do { name <- identifier; return $ Ident name} + <|> do { s <- regex; return $ Regex s} + <|> do { s <- sLit; return $ Literal (LitString s) } + <|> do { s <- iLit; return $ Literal (LitInt s) } + <|> do { s <- rID "true"; return $ Literal (LitBool True) } + <|> do { s <- rID "false"; return $ Literal (LitBool False) } + <|> do { s <- rID "null"; return $ Literal (LitNull) } + <|> do { s <- arrayLit; return $ Array s } + <|> do { s <- objectLit; return $ Object s} + <|> do { r <- funcDecl; return $ PEFuncDecl r } + <|> do { rOp "("; e <- expr; rOp ")"; return $ Brack e } + + +arrayLit = do { rOp "["; whiteSpace; r <- commaSep assigne; whiteSpace; rOp "]"; return $ ArrSimple r } + +objectLit = do { rOp "{"; whiteSpace; r <- commaSep property; whiteSpace; rOp "}"; return $ r } + +property = do { n <- propertyName; + do { rOp ":"; v <- assigne; return $ Left (n,v) } + <|> do { f <- funcDecl2; return $ Right $ GetterPutter n f} + } + + +propertyName = do { r <- identifier; return $ PropNameId r } + <|> do { r <- sLit; return $ PropNameStr r } + <|> do { r <- iLit; return $ PropNameInt r } + + +memberExpr' = do { pe <- primExpr; rest $ MemPrimExpr pe} where + rest x = do { rOp "."; name <- identifier; rest $ MemberCall x name } + <|> do { rOp "["; e <- expr; rOp "]"; rest $ ArrayExpr x e } + <|> return x + +memberExpr = try (do { rID "new"; me <- memberExpr'; args <- option [] arguments; return $ MemberNew me args }) + <|> memberExpr' + + + + +newExpr = do { r <- memberExpr; return $ MemberExpr r } + <|> do { rID "new"; r <- newExpr; return $ NewNewExpr r } + + +callExpr = do { x <- memberExpr; + do {rOp "("; whiteSpace; args <- commaSep assigne; whiteSpace; rOp ")"; rest $ CallMember x args } + <|> do { return $ CallPrim x } + <|> do { rOp "++"; return $ CallPrim x } + } + where + rest x = + try (do { rOp "("; args <- commaSep assigne; rOp ")" ; rest $ CallCall x args }) + <|> try (do { rOp "."; i <- identifier; rest $ CallDot x i }) + <|> try (do { rOp "["; e <- expr; rOp "]"; rest $ CallSquare x e }) + <|> return x + +arguments = do { rOp "("; args <- commaSep assigne; rOp ")"; return args } + +leftExpr = +-- try (do { rID "new"; r <- newExpr; return $ NewExpr $ NewNewExpr r}) <|> + try (do { r <- callExpr; return $ CallExpr r }) + +-- leftExpr' = do { me <- memberExpr; + +postFix = do { r <- leftExpr; + do { rOp "++"; return $ PostInc r} + <|> do { rOp "--"; return $ PostDec r } + <|> do { return $ LeftExpr r}} + +simpleaexpr = do { r <- postFix; return $ PostFix r } + <|> do { rID "delete"; r <- simpleaexpr; return $ Delete r } + <|> do { rID "void"; r <- simpleaexpr; return $ Void r } + <|> do { rID "typeof"; r <- simpleaexpr; return $ TypeOf r } + <|> do { rOp "-"; r <- simpleaexpr; return $ UnaryMinus r } + <|> do { rOp "+"; r <- simpleaexpr; return $ UnaryPlus r } + <|> do { rOp "++"; r <- simpleaexpr; return $ DoublePlus r } + <|> do { rOp "--"; r <- simpleaexpr; return $ DoubleMinus r } + <|> do { rOp "!"; r <- simpleaexpr; return $ Not r } + <|> do { rOp "~"; r <- simpleaexpr; return $ BitNot r } + + +simpleaexpr' = do { r <- simpleaexpr; return $ AEUExpr r} + +aexpr = buildExpressionParser aritOperators simpleaexpr' + +conde = do { r <- aexpr; + try (do { whiteSpace; rOp "?"; whiteSpace; a <- assigne; whiteSpace; rOp ":"; whiteSpace; b <- assigne; return $ CondIf r a b }) + <|> do { return $ AExpr r }} + +conde' = do { r <-conde; return $ CondE r} + +assignOp = do { rOp "*="; return AssignOpMult } <|> + do { rOp "+="; return AssignOpPlus } <|> + do { rOp "="; return AssignNormal } + +assigne' = do { left <- leftExpr; op <- assignOp; right <- assigne; return $ Assign left op right } + +assigne = choice [ + try assigne', + try conde' + ] + + +expr = do { r <- assigne; return $ AssignE r } + +aritOperators = + [ [ op "*" AssocLeft, op "/" AssocLeft, op "%" AssocLeft] + , [ op "+" AssocLeft, op "-" AssocLeft ] + , [ op "<<" AssocLeft, op ">>" AssocLeft, op ">>>" AssocLeft ] + , [ op "<" AssocLeft ,op "<=" AssocLeft, op ">" AssocLeft, op ">=" AssocLeft + , op "instanceof" AssocLeft , op "in" AssocLeft ] + , [ op "==" AssocLeft , op "!=" AssocLeft + , op "===" AssocLeft, op "!==" AssocLeft ] + , [ op "&" AssocRight ], [ op "^" AssocRight ] ,[ op "|" AssocRight ] + , [ op "&&" AssocRight ], [ op "||" AssocRight ] + + ] + where + op name assoc = Infix (do{ rOp name + ; return (\x y -> AOp name x y) + } + <|> do { rID name; return (\x y -> AOp name x y)} + + ) assoc + + +funcDecl = + do{ whiteSpace + ; rID "function" + ; funcDecl2 } + +funcDecl2 = do { + name <- option "" identifier + ; rOp "(" + ; args <- commaSep identifier + ; rOp ")"; whiteSpace + ; rOp "{" ; whiteSpace + ; se <- many sourceElement + ; rOp "}" + ; return $ FuncDecl (Just name) args se } + +exprStmt = do { r <- expr; autoSemi; whiteSpace; return r } + +ret = do { rID "return"; autoSemi; return $ ReturnStmt Nothing} + +s = try (do { r <- varStmt; return $ VarStmt r }) + <|> try (do { r <- exprStmt; return $ ExprStmt r }) + <|> try (do { i <- identifier; rOp ":"; whiteSpace; s <- stmt; return $ LabelledStmt i s }) + + +stmt = do { pos <- getPosition; s <- stmt'; return $ StmtPos (sourceLine pos, sourceColumn pos) s } + +stmt' = do { r <- block; return $ Block r } + <|> do { semi ; return EmptyStmt } + <|> s +-- <|> do { r <- varStmt; return $ VarStmt r } +-- <|> do { r <- exprStmt; return $ ExprStmt r } +-- <|> do { i <- identifier; rOp ":"; whiteSpace; s <- stmt; return $ LabelledStmt i s } + <|> do { rID "if"; r <- restOfIf; return $ IfStmt r} + <|> do { rID "for"; r <- restOfFor; return $ ItStmt r} + <|> do { rID "do"; whiteSpace; r <- restOfDo; return $ ItStmt r } + <|> do { rID "while"; r <- restOfWhile; return $ ItStmt r } + <|> do { rID "return"; do { e <- expr; autoSemi; return $ ReturnStmt (Just e)} + <|> do { autoSemi; return $ ReturnStmt Nothing} } + <|> do { rID "break"; do { e <- identifier; return $ BreakStmt (Just e)} + <|> do { return $ BreakStmt Nothing}} + <|> do { rID "continue"; do {e <- identifier; return $ ContStmt (Just e)} + <|> do { return $ ContStmt Nothing}} + <|> do { rID "with"; rOp "("; e <- expr; rOp ")"; s <- stmt ; return $ WithStmt e s } + + <|> do { rID "throw"; e <- exprStmt; return $ ThrowExpr e} + <|> do { rID "try"; r <- restOfTry ; return $ TryStmt r } + <|> do { rID "switch"; rOp "("; e <- expr; rOp ")"; whiteSpace; rOp "{"; whiteSpace; s <- caseblock ; whiteSpace; rOp "}"; whiteSpace; return $ Switch e s } + + + +block = braces $ do { whiteSpace; b <- many stmt; whiteSpace; return b} + +caseblock = many caseclause + +caseclause = do { rID "case"; e <- expr; rOp ":"; whiteSpace; ss <- many stmt; return $ CaseClause e ss} + <|> do { rID "default"; rOp ":"; whiteSpace; ss <- many stmt; return $ DefaultClause ss } + <?> "case or default" + +restOfDo = do { + s <- stmt; + rID "while"; + rOp "("; + e <- expr; + rOp ")"; + autoSemi; + return $ DoWhile s e} + +restOfWhile = do { + rOp "("; + e <- expr; + rOp ")"; whiteSpace; + s <- stmt; + return $ While e s} + +restOfTry = do { whiteSpace; b <- block; + cl <- many catchh; + f <- option [] finally; + return $ TryTry b cl f} + +catchh = do { rID "catch"; rOp "("; i <- identifier; + iff <- option Nothing (do { rID "if"; e <- expr;return $ Just e}); + rOp ")"; whiteSpace; + b <- block; + return $ CatchCatch i iff b } + +finally = do { rID "finally"; whiteSpace; b <- block; return b } + +restOfIf = do { rOp "("; e <- expr; rOp ")"; whiteSpace; s <- stmt; + do { rID "else"; whiteSpace; s2 <- stmt; return $ IfElse e s s2 } + <|> do { return $ IfOnly e s }} + + + +exprOpt = option Nothing (do { e <- expr; return $ Just e}) + +restOfFor = do { + rOp "("; + + try (do { + option () (rID "var"); + vars <- commaSep varDecl; + rOp ";"; e1 <- exprOpt; + rOp ";"; e2 <- exprOpt; + rOp ")"; whiteSpace; + s <- stmt; + return $ ForVar vars e1 e2 s } ) + <|> do { + option () (rID "var"); + l <- leftExpr; + rID "in"; + e <- expr; + rOp ")"; whiteSpace; + s <- stmt; + return $ ForIn l e s + } + <?> "restOfFor" + } + <?> "rest of for" + + + + +{-restOfFor' = do { + rOp "("; rOp ")"; + s <- stmt; + return $ ForVar [] Nothing Nothing EmptyStmt } <?> "rest of for" +-} +-- restOfIt = do { + +restOfVarStmt = do { r <- commaSep varDecl; return r } + + +varStmt = try (do { rID "var"; r <- commaSep varDecl; return r }) + <|> try (do { rID "const"; r <- commaSep varDecl; return r }) + +varDecl = do { i <- identifier; e <- initialiser; return $ VarDecl i e } + +initialiser = do { rOp "="; e <- assigne; return $ Just e } + <|> do { return Nothing } + +sourceElement = do { r <- stmt; whiteSpace; return $ Stmt r } + +program = do { whiteSpace; r <- many sourceElement; whiteSpace; eof; return r } + + + +chainl1' p op1 op2 = do{ x <- p; rest [x] } + where + rest x = do{ f <- op1 + ; y <- p + ; r <- rest (y:x) + ; g <- op2 + ; return r + } + <|> return x + + + + + +----------------------------------------------- +-- Utility +----------------------------------------------- + + +-- lexProgram input = runLexer $ processComments input + +{-- +runIO :: Show a => Parser a -> String -> IO () +runIO p input + = case (parse p "" input) of + Left err -> do{ putStr "parse error at " + ; print err + } + Right x -> print x +--} + +parse' p name input = runParser p newJSPState name input + +parseProgram input = parse' program "" (runLexer $ processComments input) + +-- Parse using 'p' and make sure all input is parsed. +parseEof p i = parse' (do { r <- p; eof ; return r }) "" (runLexer $ processComments i) +
− src/HJS/Parser/JavaScriptParser.y
@@ -1,431 +0,0 @@--- --- Author: Mark Wassell --- --- Created: 29 January 2007 --- --- Copyright (C) 2007 Mark Wassell --- --- This library is free software; you can redistribute it and/or --- modify it under the terms of the GNU Lesser General Public --- License as published by the Free Software Foundation; either --- version 2.1 of the License, or (at your option) any later version. --- --- This library is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --- Lesser General Public License for more details. --- --- Specification of language comes from --- Standard ECMA-262 3rd Edition - December 1999 --- JavaScript 1.5 Reference http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference --- The JavaScript in JavaScript interpreter - -{ -module HJS.Parser.JavaScriptParser where - -import Data.Char -import Control.Monad.State -import Control.Monad.Error - -import HJS.Parser.Lexer -import HJS.Parser.LexerM -import HJS.Parser.JavaScript -import HJS.Parser.ParserMonad -} - -%name jsprogram Program -%name primexpr PrimExpr - -%monad { P } -%lexer { lexerM } { TokenEof } -%tokentype { Token } -%error { parseError } - -%token - eof { TokenEof } - int { TokenInt $$ } - ident { TokenIdent $$ } - string { TokenStringLit $$ } - '=' { TokenROP "=" } - '+' { TokenROP "+" } - '-' { TokenROP "-" } - '*' { TokenROP "*" } - '/' { TokenROP "/" } - '(' { TokenROP "(" } - ')' { TokenROP ")" } - ',' { TokenROP "," } - '\n' { TokenNL } - '?' { TokenROP "?"} - ':' { TokenROP ":"} - '||' { TokenROP "||"} - '&&' { TokenROP "&&"} - '|' { TokenROP "|"} - '^' { TokenROP "^"} - '&' { TokenROP "&"} - '==' { TokenROP "=="} - '!=' { TokenROP "!="} - '===' { TokenROP "==="} - '!==' { TokenROP "!=="} - '<' { TokenROP "<"} - '<=' { TokenROP "<="} - '>=' { TokenROP ">="} - '>' { TokenROP ">"} - '<<' { TokenROP "<<"} - '>>' { TokenROP ">>"} - '>>>' { TokenROP ">>>"} - '!' { TokenROP "!"} - '~' { TokenROP "~"} - '++' { TokenROP "++"} - '--' { TokenROP "--"} - '.' { TokenROP "."} - '[' { TokenROP "["} - ']' { TokenROP "]"} - '{' { TokenROP "{"} - '}' { TokenROP "}"} - delete { TokenRID "delete" } - void { TokenRID "void" } - typeof { TokenRID "typeof" } - '%' { TokenROP "%" } - '*=' { TokenROP "*=" } - '/=' { TokenROP "/=" } - '%=' { TokenROP "%=" } - '+=' { TokenROP "+=" } - '-=' { TokenROP "-=" } - instanceof { TokenRID "instanceof" } - if { TokenRID "if" } - else { TokenRID "else" } - ';' { TokenROP ";" } - do { TokenRID "do" } - while { TokenRID "while" } - for { TokenRID "for" } - this { TokenRID "this" } - var { TokenRID "var" } - const { TokenRID "const" } - function { TokenRID "function" } - new { TokenRID "new" } - try { TokenRID "try" } - catch { TokenRID "catch" } - finally { TokenRID "finally" } - continue { TokenRID "continue" } - break { TokenRID "break" } - throw { TokenRID "throw" } - return { TokenRID "return" } - with { TokenRID "with" } - switch { TokenRID "switch"} - case { TokenRID "case"} - default { TokenRID "default"} - in { TokenRID "in"} - regex { TokenRegex $$ } - -%% - -Start : Program { $1 } - --- --- A.1 Lexical Grammar --- - - -Literal : int { LitInt $1 } - | string { LitString $1 } - -{- Not exactly sure why putting %% works but it is important. - If not then it will lookahead using the normal lexer - and fail. I think %% discards this lookedahead to give - us a chance to switch the lexer. Also need to run - happy with -a option -} -RegExStart : '/' {} -- %% lexRegex } -RegExEnd : '/' {} - - - -RegEx : RegExStart regex { $2 } - - --- --- A.3 Expressions --- - -PrimExpr :: { PrimExpr } - : this { This } - | ident { Ident $1 } - | Literal { Literal $1 } - | RegEx { Regex $1 } - | ArrayLit { Array $1 } - | ObjectLiteral { Object $1 } - | '(' Expr ')' { Brack $2 } - -ArrayLit : '[' ElementList ']' { ArrSimple $2 } - -ElementList : {- empty -} { [] } - | AssignE { [$1] } - | ElementList ',' AssignE { $1 ++ [$3]} - -ObjectLiteral : '{' '}' { [] } - | '{' PropertyList '}' { $2 } - --- 'get' and 'put' covered in --- http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Creating_New_Objects:Defining_Getters_and_Setters --- Note that they are not reserved words - -PropertyList : Property { [$1 ] } - | PropertyList ',' Property { $1 ++ [$3] } - - -Property: - PropertyName ':' AssignE { Left ($1, $3 ) } - | ident FuncDecl2 { Right $ GetterPutter $1 $2 } - - -PropertyName : ident { PropNameId $1 } - | string { PropNameStr $1 } - | int { PropNameInt $1 } - -MemberExpr :: { MemberExpr } - : PrimExpr { MemPrimExpr $1 } - | MemberExpr '[' Expr ']' { ArrayExpr $1 $3 } - | MemberExpr '.' ident { MemberCall $1 $3 } - | new MemberExpr Arguments { MemberNew $2 $3 } - -NewExpr : MemberExpr { MemberExpr $1 } - | new NewExpr { NewNewExpr $2 } - -CallExpr : MemberExpr Arguments { CallMember $1 $2 } - | CallExpr Arguments { CallCall $1 $2 } - | CallExpr '[' Expr ']' { CallSquare $1 $3 } - | CallExpr '.' ident { CallDot $1 $3 } - -Arguments : '(' ')' { [] } - |'(' ArgumentList ')' { $2 } - -ArgumentList : AssignE { [$1] } - | ArgumentList ',' AssignE { $1 ++ [$3] } - -LeftExpr : NewExpr { NewExpr $1 } - | CallExpr { CallExpr $1 } - -PostFix : LeftExpr { LeftExpr $1 } - | LeftExpr '++' { PostInc $1 } - | LeftExpr '--' { PostDec $1 } - -UExpr : - PostFix { PostFix $1 } - | delete UExpr { Delete $2 } - | void UExpr { Void $2 } - | typeof UExpr { TypeOf $2 } - | '++' UExpr { DoublePlus $2 } - | '--' UExpr { DoubleMinus $2 } - | '+' UExpr { UnaryPlus $2 } - | '-' UExpr { UnaryMinus $2 } - | '!' UExpr { Not $2 } - | '~' UExpr { BitNot $2 } - -{- -MultExpr2 : MultExpr {% do - st <- get - put st { expectRegex = False } - return $1 - } - - -DivOp : '/' {% do - st <- get - throwError (show st) - put st { expectRegex = True } - return () - } - --} - - -MultExpr : UExpr {UExpr $1 } - | MultExpr '*' UExpr { Times $1 $3 } - | MultExpr '/' UExpr {Div $1 $3 } - | MultExpr '%' UExpr { Mod $1 $3 } - - -AddExpr : MultExpr { MultExpr $1 } - | AddExpr '+' MultExpr { Plus $1 $3 } - | AddExpr '-' MultExpr { Minus $1 $3 } - -ShiftE : AddExpr { AddExpr $1 } - | ShiftE '<<' AddExpr { ShiftLeft $1 $3 } - | ShiftE '>>' AddExpr { ShiftRight $1 $3 } - | ShiftE '>>>' AddExpr {ShiftRight2 $1 $3 } - -RelE : ShiftE { ShiftE $1 } - | RelE '<' ShiftE { LessThan $1 $3 } - | RelE '>' ShiftE { GreaterThan $1 $3 } - | RelE '<=' ShiftE { LessEqual $1 $3 } - | RelE '>=' ShiftE { GreaterEqual $1 $3 } - | RelE instanceof ShiftE { InstanceOf $1 $3 } - | RelE in ShiftE { InObject $1 $3 } -- JavaScript 1.4 - - - -EqualE : RelE { RelE $1 } - | EqualE '==' RelE { Equal $1 $3 } - | EqualE '!=' RelE { NotEqual $1 $3 } - | EqualE '===' RelE { Equal2 $1 $3 } - | EqualE '!==' RelE { NotEqual $1 $3 } - - -BitAnd : EqualE { EqualE $1 } - | BitAnd '&' EqualE { BABitAnd $1 $3 } - -BitXOR : BitAnd { BitAnd $1 } - | BitXOR '^' BitAnd { BXBitXOR $1 $3 } - -BitOR : BitXOR { BitXOR $1 } - | BitOR '|' BitXOR { BOBitOR $1 $3 } - -LogAnd : BitOR { BitOR $1 } - | LogAnd '&&' BitOR { LALogAnd $1 $3 } - -LogOr : LogAnd { LogAnd $1 } - | LogOr '||' LogAnd { LOLogOr $1 $3 } - -CondE : LogOr { LogOr $1 } - | LogOr '?' AssignE ':' AssignE { CondIf $1 $3 $5 } - -AssignOp : '*=' { AssignOpMult } - | '/=' { AssignOpDiv } - | '%=' { AssignOpMod } - | '+=' { AssignOpPlus } - | '-=' { AssignOpMinus } - | '=' { AssignNormal } - --- CondE { CondE $1 } - -AssignE : - LeftExpr AssignOp AssignE { Assign $1 $2 $3 } - | CondE { CondE $1 } - | FuncDecl { AEFuncDecl $1 } -- Not In spec. - -Expr : AssignE { AssignE $1 } - --- --- A.4 Statements --- - -Stmt : - Block { Block $1 } - | VarStmt { VarStmt $1 } - | ';' { EmptyStmt } - | ExprStmt { ExprStmt $1 } - | IfStmt { IfStmt $1} - | ItStmt { ItStmt $1 } - | continue ident ';' { ContStmt $ Just $2 } - | continue ';' { ContStmt Nothing } - | break ident ';' { BreakStmt $ Just $2 } - | break ';' { BreakStmt Nothing } - | return ExprSemi ';' { ReturnStmt $ Just $2 } - | return ';' { ReturnStmt Nothing } - | with '(' Expr ')' Stmt { WithStmt $3 $5 } - | ident ':' Stmt { LabelledStmt $1 $3 } - | SwitchStmt { Switch $1 } - | throw ExprSemi ';' { ThrowExpr $2 } - | TryStmt { TryStmt $1 } - -Block : '{' StmtList '}' { $2 } - - -StmtList : {- empty -} { [] } - | Stmt { [$1] } - | StmtList Stmt { $1 ++ [$2] } - -VarStmt : var VarDeclList { $2 } - | const VarDeclList { $2 } -- No mention of usage of const in spec. Is it same as 'var' or just a no-op? - - - -TryStmt : try Block CatchList { TryBC $2 $3 } - | try Block Finally { TryBF $2 $3 } - | try Block CatchList Finally { TryBCF $2 $3 $4 } - -CatchList : Catch { [$1] } - | CatchList Catch { $1 ++ [$2 ] } - -Catch : catch '(' ident ')' Block { Catch $3 $5 } - | catch '(' ident if Expr ')' Block { CatchIf $3 $7 $5} -- JS 1.5 - -Finally : finally Block { $2 } - -ExprSemi : Expr {%% \t -> autoSemiInsert t $1 } - - -ExprStmt : ExprSemi ';' { $1 } - -IfStmt : if '(' Expr ')' Stmt else Stmt { IfElse $3 $5 $7 } - | if '(' Expr ')' Stmt { IfOnly $3 $5 } - -ItStmt : - do Stmt while '(' Expr ')' ';' { DoWhile $2 $5 } - | while '(' Expr ')' Stmt { While $3 $5 } - | for '(' ExprOpt ';' ExprOpt ';' ExprOpt ')' Stmt { For $3 $5 $7 $9 } - | for '(' var VarDeclList ';' ExprOpt ';' ExprOpt ')' Stmt { ForVar $4 $6 $8 $10 } - | for '(' VarDeclList ';' ExprOpt ';' ExprOpt ')' Stmt { ForVar $3 $5 $7 $9 } - | for '(' var VarDeclList in Expr ')' Stmt { ForIn $4 $6 $8 } - | for '(' VarDeclList in Expr ')' Stmt { ForIn $3 $5 $7 } - - -ExprOpt : {- empty -} { Nothing } - | Expr { Just $1 } - -VarDeclList : VarDecl { [$1] } - | VarDeclList ',' VarDecl { $1 ++ [$3] } - -VarDecl : ident Initialiser { VarDecl $1 $2 } - -Initialiser : {- empty -} { Nothing } - | '=' AssignE { Just $2 } - - -SwitchStmt : switch '(' Expr ')' CaseBlock { SSwitch $3 $5 } - -CaseBlock : '{' CaseClauses '}' { CaseBlock $2 [] [] } - | '{' CaseClauses DefaultClause CaseClauses '}' { CaseBlock $2 [$3] $4 } - -CaseClauses : {- empty -} { [] } - | CaseClause { [$1] } - | CaseClauses CaseClause { $1 ++ [$2] } - -CaseClause : case Expr ':' StmtList { CaseClause $2 $4 } - -DefaultClause : default ':' StmtList { DefaultClause $3 } - --- --- A.5 Function and Programs --- - - -FuncDecl : - function FuncDecl2 { $2 } - | function '(' FormalParamList ')' '{' FuncBody '}' { FuncDecl Nothing $3 $6 } - -FuncDecl2 : ident '(' FormalParamList ')' '{' FuncBody '}' { FuncDecl (Just $1) $3 $6 } - - -FormalParamList : {- empty -} { [] } - | ident { [ $1 ] } - | FormalParamList ',' ident { $1 ++ [$3] } - -FuncBody : SourceElements { $1 } - -Program : SourceElements { JSProgram $1 } - -SourceElements : SourceElement { [$1] } - | SourceElements SourceElement { $1 ++ [$2] } - -SourceElement : Stmt { Stmt $1 } - | FuncDecl { SEFuncDecl $1 } - - -{ - -parseError :: Token -> P a -parseError tok = do - s <- get - throwError ("parse error" ++ " tok = " ++ show tok ++ " rest=<" ++ (rest s) ++ "> lnum = " ++ show (lineno s) ++ " mode= " ++ show (mode s) ++ show (tr s)) - -}
src/HJS/Parser/Lexer.hs view
@@ -1,260 +1,168 @@-{-# OPTIONS -cpp #-} -{-# LINE 1 "Lexer.x" #-} module HJS.Parser.Lexer where -#if __GLASGOW_HASKELL__ >= 603 -#include "ghcconfig.h" -#else -#include "config.h" -#endif -#if __GLASGOW_HASKELL__ >= 503 -import Data.Array -import Data.Char (ord) -import Data.Array.Base (unsafeAt) -#else -import Array -import Char (ord) -#endif -alex_base :: Array Int Int -alex_base = listArray (0,262) [1,19,0,217,335,20,21,64,414,622,830,1038,1246,1454,1662,1870,2078,2286,2494,2702,2910,3118,3326,3534,3742,3950,4158,4366,4574,4782,4990,5198,5406,5614,5822,6030,6238,6446,6654,6862,7070,7278,7486,7694,7902,8110,8318,8526,8734,8942,9150,9358,9566,9774,9982,10190,10398,10606,10814,11022,11230,11438,11646,11854,12062,12270,12478,12686,12894,13102,13310,13518,13726,13934,14142,14350,14558,14766,14974,15182,15390,15598,15806,16014,16222,16430,16638,16846,17054,17262,17470,17678,17886,18094,18302,18510,18718,18926,19134,19342,19550,19758,19966,20174,20382,20590,20798,21006,21214,21422,21630,21838,22046,22254,22462,22670,22878,23086,23294,23502,23710,23918,24126,24334,24542,24750,24958,25166,25374,25582,25790,25998,26206,26414,26622,26830,27038,27246,27454,27662,27870,28078,28286,28494,28702,28910,29118,29326,29534,29742,29950,30158,30366,30574,30782,30990,31198,31406,31614,31822,32030,32238,32446,32654,32862,33070,33278,33486,33694,33902,34110,34318,34526,34734,34942,35150,35358,35566,35774,35982,36190,36398,36606,36814,37022,37230,37438,37646,37854,38062,38270,38478,38686,38894,39102,39310,39518,39726,39934,40142,40350,40558,40766,40974,41182,41390,41598,41806,42014,42222,42430,8,9,28,0,27,0,0,0,0,0,0,0,0,17,18,0,0,0,0,0,0,0,42,0,23,0,24,0,26,0,0,0,0,29,0,-43,0,0,43,0,0,145,42638,42846,0,42975,43177,43379,0,43581,43783,43985] +import Data.Char +import Data.Set +import Data.List +import Text.ParserCombinators.Parsec +import Text.ParserCombinators.Parsec.Pos +import qualified Text.ParserCombinators.Parsec.Token as P +import Text.ParserCombinators.Parsec.Language (javaStyle) -alex_table :: Array Int Int -alex_table = listArray (0,44240) [0,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,7,7,7,7,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7,224,256,-1,-1,239,233,260,226,227,225,213,222,215,223,6,252,252,252,252,252,252,252,252,252,252,220,219,235,211,237,221,-1,5,3,3,212,243,217,218,7,7,7,7,7,244,240,234,247,241,248,236,238,249,242,216,214,245,0,230,-1,231,232,7,-1,99,17,27,74,20,32,166,250,75,0,0,131,0,22,0,162,0,37,47,66,0,24,51,0,0,0,228,246,229,251,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,252,252,252,252,252,252,252,252,252,252,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,4,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,28,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,88,10,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,118,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,204,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,14,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,15,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,109,254,254,16,254,254,254,254,254,254,124,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,18,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,19,254,101,254,254,254,254,254,254,254,254,254,113,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,140,254,254,254,21,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,23,254,254,254,254,254,254,254,254,254,254,254,254,254,39,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,25,41,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,26,254,254,254,254,254,254,136,254,254,254,153,254,254,57,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,8,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,29,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,30,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,31,254,254,156,254,254,42,254,254,254,254,254,63,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,33,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,34,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,35,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,36,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,38,254,254,201,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,40,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,43,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,44,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,45,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,104,254,254,254,254,254,254,254,254,254,254,254,122,134,254,46,254,150,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,48,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,49,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,50,68,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,52,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,53,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,54,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,163,55,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,56,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,58,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,59,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,60,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,61,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,62,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,64,254,254,254,254,254,254,254,254,77,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,65,254,254,254,254,254,254,254,254,254,81,254,254,254,254,254,254,92,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,67,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,69,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,70,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,71,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,182,254,254,254,72,254,254,254,254,254,80,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,73,254,254,254,254,254,254,254,254,254,12,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,13,254,254,254,254,254,254,190,9,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,11,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,76,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,78,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,79,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,177,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,82,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,83,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,84,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,85,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,86,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,87,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,89,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,90,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,91,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,93,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,94,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,95,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,96,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,97,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,98,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,100,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,102,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,103,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,105,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,106,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,107,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,108,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,110,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,111,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,112,254,254,254,128,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,114,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,115,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,116,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,117,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,119,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,120,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,121,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,123,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,125,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,126,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,127,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,129,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,130,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,132,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,133,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,135,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,137,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,138,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,139,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,141,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,142,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,143,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,144,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,145,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,146,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,147,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,148,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,149,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,151,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,152,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,154,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,155,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,157,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,158,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,159,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,160,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,161,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,171,254,254,210,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,164,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,165,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,167,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,168,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,169,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,170,254,254,254,254,254,196,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,172,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,173,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,174,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,175,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,176,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,178,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,179,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,180,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,181,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,183,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,184,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,185,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,186,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,187,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,188,254,254,206,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,189,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,191,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,192,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,193,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,194,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,195,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,197,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,198,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,199,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,200,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,202,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,203,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,13,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,205,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,13,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,207,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,208,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,209,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,-1,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,258,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,254,0,254,254,254,254,254,254,254,254,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,258,0,255,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,258,0,255,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,262,0,0,0,0,0,0,259,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,262,0,0,0,0,0,0,259,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,262,0,0,0,0,0,0,259,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,0] +import HJS.Parser.Utils -alex_check :: Array Int Int -alex_check = listArray (0,44240) [-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,47,47,47,61,61,43,45,9,10,11,12,13,61,61,38,124,61,60,61,61,62,61,61,61,61,-1,91,92,93,94,32,96,97,98,99,100,101,102,103,62,105,-1,-1,108,-1,110,-1,112,-1,114,115,116,-1,118,119,-1,-1,-1,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,215,-1,-1,-1,-1,-1,-1,-1,-1,-1,9,10,-1,-1,13,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,247,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,9,10,-1,-1,13,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,48,49,50,51,52,53,54,55,56,57,-1,-1,-1,-1,-1,-1,-1,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,-1,-1,-1,-1,95,-1,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,-1,11,12,-1,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,-1,34,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,-1,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,-1,248,249,250,251,252,253,254,255,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,-1,11,12,215,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,-1,34,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,247,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,-1,11,12,215,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,-1,34,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,247,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,-1,11,12,215,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,-1,-1,-1,-1,-1,-1,39,-1,-1,-1,-1,-1,247,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,-1,11,12,215,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,-1,-1,-1,-1,-1,-1,39,-1,-1,-1,-1,-1,247,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,-1,11,12,215,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,-1,-1,-1,-1,-1,-1,39,-1,-1,-1,-1,-1,247,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,215,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,247,-1,-1,-1,-1,-1,-1,-1,-1] -alex_deflt :: Array Int Int -alex_deflt = listArray (0,262) [253,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,257,257,257,-1,261,261,261] -alex_accept = listArray (0::Int,262) [[],[],[(AlexAcc (alex_action_0))],[],[],[],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_1))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_2))],[(AlexAcc (alex_action_2))],[(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_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_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_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_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_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_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_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_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_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_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_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_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_3))],[(AlexAcc (alex_action_4))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_5))],[(AlexAcc (alex_action_6))],[],[],[],[(AlexAcc (alex_action_7))],[],[],[]] -{-# LINE 65 "Lexer.x" #-} --- Each right-hand side has type :: String -> Token +javaScriptStyle= javaStyle { + P.reservedNames = [ "break","else","new","var","case", + "finally","return","void","catch","for","switch","while", + "continue","function","this","with","default","if", + "throw","delete","in","try","do","instanceof","typeof", + "abstract","enum","int","short", + "boolean","export","interface","static", + "byte","extends","long","super", + "char","final","native","synchronized", + "class","float","package","throws", + "const","goto","private","transient", + "debugger","implements","protected","volatile", + "double","import","public", + "true", "false", "null" + ] + , P.reservedOpNames = [ "==" , "=" , "+=" , "-=" , "++" , + "--" , ";" , ":" , "?" , "," , "." , "|","^", + "!" , "*" , "/" , "(" , ")" , "{" , "}" , "[" , "]" , "^" , "&" , "&&" , + "<=" , ">=" , "<" , ">" , "-" , "%" , "*=" , "/=" , "%=" , "+" , + "===" , "!==" , "!=" , "&&" , "||" , "," , "<<" , ">>" , ">>>" , "~"] + , P.opLetter = oneOf "!%&()*+,-./:;<=>?[]^{|}~" + , P.opStart = P.opLetter javaScriptStyle + } +binaryOp = [ "==" , "=" , "+=" , "-=" , "(", "[", "{", ",", + "--" , + "*" , "/" , "^" , "&" , "&&" , "|", + "<=" , ">=" , "<" , ">" , "-", "%" , "*=" , "/=" , "%=" , "+" , + "===" , "!==" , "!=" , "&&" , "||" , "," , "<<" , ">>" , ">>>" , "~"] -data Token - = - TokenWhite - | TokenInt Int - | TokenIdent String - | TokenStringLit String - | TokenNL - | TokenRegex String - | TokenEof - | TokenRID String - | TokenROP String - deriving (Show,Eq) +javascript = P.makeTokenParser javaScriptStyle +reserved = P.reserved javascript +sortByLength = sortBy (\x y -> compare (length y) (length x)) -alex_action_0 = \s -> TokenWhite -alex_action_1 = \s -> TokenWhite -alex_action_2 = \s -> TokenRID s -alex_action_3 = \s -> TokenROP s -alex_action_4 = \s -> TokenInt $ read s -alex_action_5 = \s -> TokenIdent s -alex_action_6 = \s -> TokenStringLit s -alex_action_7 = \s -> TokenStringLit s -{-# LINE 1 "GenericTemplate.hs" #-} -{-# LINE 1 "<built-in>" #-} -{-# LINE 1 "<command line>" #-} -{-# LINE 1 "GenericTemplate.hs" #-} --- ----------------------------------------------------------------------------- --- ALEX TEMPLATE --- --- This code is in the PUBLIC DOMAIN; you may copy it freely and use --- it for any purpose whatsoever. +{- +oper = + do{ c <- (P.opStart javaScriptStyle) + ; cs <- many (P.opLetter javaScriptStyle) + ; return (c:cs) + } + <?> "operator" +-} --- ----------------------------------------------------------------------------- --- INTERNALS and main scanner engine -{-# LINE 35 "GenericTemplate.hs" #-} +oper3 (c:cs) = try (do { s <- string c; return s} ) + <|> oper3 cs -{-# LINE 45 "GenericTemplate.hs" #-} +oper3 [] = fail "" -{-# LINE 66 "GenericTemplate.hs" #-} -alexIndexInt16OffAddr arr off = arr ! off +oper = oper3 (sortByLength $ P.reservedOpNames javaScriptStyle) -{-# LINE 87 "GenericTemplate.hs" #-} -alexIndexInt32OffAddr arr off = arr ! off - +--oper = oper' [] -{-# LINE 98 "GenericTemplate.hs" #-} -quickIndex arr i = arr ! i +oper' acc= do{ c <- (P.opStart javaScriptStyle) + ; let cs = acc++[c] + ; if( elem cs (P.reservedOpNames javaScriptStyle)) then return cs else oper' cs + } + <?> "operator" --- ----------------------------------------------------------------------------- --- Main lexing routines - -data AlexReturn a - = AlexEOF - | AlexError !AlexInput - | AlexSkip !AlexInput !Int - | AlexToken !AlexInput !Int a - --- alexScan :: AlexInput -> StartCode -> AlexReturn a -alexScan input (sc) - = alexScanUser undefined input (sc) - -alexScanUser user input (sc) - = case alex_scan_tkn user input (0) input sc AlexNone of - (AlexNone, input') -> - case alexGetChar input of - Nothing -> +matchTok (c:cs) ((p,TokenROP t):ts) = t == [c] && matchTok cs ts +matchTok [] _ = True +matchTok _ _ = False +merge ((p,TokenROP "+"):(_,TokenROP "+"):cs) = ((p,TokenROP "++"):merge cs) +merge ((p,TokenROP "!"):(_,TokenROP "="):cs) = ((p,TokenROP "!="):merge cs) +merge ((p,TokenROP "="):(_,TokenROP "="):cs) = ((p,TokenROP "=="):merge cs) +merge ((p,TokenROP "+"):(_,TokenROP "="):cs) = ((p,TokenROP "+="):merge cs) +merge ((p,TokenROP "-"):(_,TokenROP "="):cs) = ((p,TokenROP "-="):merge cs) +merge (c:cs) = (c:merge cs) +merge [] = [] +data Token + = + TokenWhite + | TokenInt Int + | TokenIdent String + | TokenStringLit String + | TokenNL + | TokenRegex (String,String) + | TokenEof + | TokenRID String + | TokenROP String + deriving (Show,Eq) - AlexEOF - Just _ -> +-- +-- Regular Expression Literals +-- +regex = do { char '/'; body <- do { c <- firstchar; cs <- many otherchar; return $ concat (c:cs) }; char '/'; flg <- identPart; return $ (body,flg) } - AlexError input' +firstchar = do { c <- satisfy (\c -> isPrint c && c /= '*' && c /= '\\' && c /= '/'); return [c]} <|> escapeseq - (AlexLastSkip input len, _) -> +escapeseq = do { char '\\'; c <- satisfy isPrint; return ['\\',c]} +otherchar = do { c <- satisfy (\c -> isPrint c && c /= '\\' && c /= '/'); return [c]} <|> escapeseq - AlexSkip input len - - (AlexLastAcc k input len, _) -> - +identPart = many letter +isOP c = do { c' <- char c; return $ TokenROP [c'] } - AlexToken input len k +isRes c = do { reserved c; return $ TokenRID c } +resId = do { x <- many1 identChar; if (elem x $ P.reservedNames javaScriptStyle) then return x else unexpected "resId" } --- Push the input through the DFA, remembering the most recent accepting --- state it encountered. +resOp = do { x <- oper; return x } -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` (s)) - in - new_acc `seq` - case alexGetChar input of - Nothing -> (new_acc, input) - Just (c, new_input) -> +identChar = satisfy (\c -> isAlphaNum c || c == '_') +atoken = + try (do { x <- many1 digit; return $ TokenInt $ read x }) + <|> try (do { x <- resId; return $ TokenRID x }) + <|> try (do { s <- regex; return $ TokenRegex s }) + <|> try (do { x <- resOp; return $ TokenROP x } ) + <|> try (do { cs <- many1 identChar ; return $ TokenIdent (cs)}) - let - base = alexIndexInt32OffAddr alex_base s - (ord_c) = ord c - offset = (base + ord_c) - check = alexIndexInt16OffAddr alex_check offset - - new_s = if (offset >= (0)) && (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 (len + (1)) - new_input new_s new_acc - - where - check_accs [] = last_acc - check_accs (AlexAcc a : _) = AlexLastAcc a input (len) - check_accs (AlexAccSkip : _) = AlexLastSkip input (len) - check_accs (AlexAccPred a pred : rest) - | pred user orig_input (len) input - = AlexLastAcc a input (len) - check_accs (AlexAccSkipPred pred : rest) - | pred user orig_input (len) input - = AlexLastSkip input (len) - check_accs (_ : rest) = check_accs rest - -data AlexLastAcc a - = AlexNone - | AlexLastAcc a !AlexInput !Int - | AlexLastSkip !AlexInput !Int - -data AlexAcc a user - = AlexAcc a - | AlexAccSkip - | AlexAccPred a (AlexAccPred user) - | AlexAccSkipPred (AlexAccPred user) - -type AlexAccPred user = user -> AlexInput -> Int -> AlexInput -> Bool - --- ----------------------------------------------------------------------------- --- Predicates on a rule - -alexAndPred p1 p2 user in1 len in2 - = p1 user in1 len in2 && p2 user in1 len in2 - ---alexPrevCharIsPred :: Char -> AlexAccPred _ -alexPrevCharIs c _ input _ _ = c == alexInputPrevChar input - ---alexPrevCharIsOneOfPred :: Array Char Bool -> AlexAccPred _ -alexPrevCharIsOneOf arr _ input _ _ = arr ! alexInputPrevChar input - ---alexRightContext :: Int -> AlexAccPred _ -alexRightContext (sc) user _ _ input = - case alex_scan_tkn user input (0) input sc AlexNone of - (AlexNone, _) -> False - _ -> True - -- TODO: there's no need to find the longest - -- match when checking the right context, just - -- the first match will do. - --- used by wrappers -iUnbox (i) = i -{-# LINE 1 "wrappers.hs" #-} -{-# LINE 1 "<built-in>" #-} -{-# LINE 1 "<command line>" #-} -{-# LINE 1 "wrappers.hs" #-} --- ----------------------------------------------------------------------------- --- Alex wrapper code. --- --- This code is in the PUBLIC DOMAIN; you may copy it freely and use --- it for any purpose whatsoever. - --- ----------------------------------------------------------------------------- --- The input type - -{-# LINE 44 "wrappers.hs" #-} - --- ----------------------------------------------------------------------------- --- Default monad - -{-# LINE 126 "wrappers.hs" #-} + <|> try (do { char '\n'; return TokenNL }) + <|> try (do { char '"'; x<- many stringCharDouble; char '"'; return $ TokenStringLit x }) + <|> try (do { char '\''; x<- many stringCharSingle; char '\''; return $ TokenStringLit x }) + <|> try (do { whiteSpace; return TokenWhite}) --- ----------------------------------------------------------------------------- --- Basic wrapper +stringCharDouble = satisfy (\c -> isPrint c && c /= '"') +stringCharSingle = satisfy (\c -> isPrint c && c /= '\'') -type AlexInput = (Char,String) +lexer = many (do { p <- getPosition;t <- atoken; return (p,t) }) -alexGetChar (_, []) = Nothing -alexGetChar (_, c:cs) = Just (c, (c,cs)) +runLexer :: String -> [(SourcePos,Token)] +runLexer s = case parse lexer "" s of + Right l -> l + Left _ -> [] -alexInputPrevChar (c,_) = c +whiteSpace = skipMany1 (satisfy (\c -> isSpace c && c /= '\n')) --- alexScanTokens :: String -> [token] -alexScanTokens str = go ('\n',str) - where go inp@(_,str) = - case alexScan inp 0 of - AlexEOF -> [] - AlexError _ -> error "lexical error" - AlexSkip inp' len -> go inp' - AlexToken inp' len act -> act (take len str) : go inp' +runIO :: Show a => Parser a -> String -> IO () +runIO p input + = case (parse p "" input) of + Left err -> do{ putStr "parse error at " + ; print err + } + Right x -> print x --- ----------------------------------------------------------------------------- --- Posn wrapper - --- Adds text positions to the basic model. - -{-# LINE 163 "wrappers.hs" #-} - --- ----------------------------------------------------------------------------- --- GScan wrapper - --- For compatibility with previous versions of Alex, and because we can. +lexFile flags name = do + input <- readFile name + putStrLn $ show $ lexProgram input +lexProgram input = runLexer $ processComments input
− src/HJS/Parser/Lexer.x
@@ -1,83 +0,0 @@-{ -module HJS.Parser.Lexer where -} - -%wrapper "basic" - - -$whitechar = [ \t\n\r\f\v] -$spacechar = [ \t] -$special = [\(\)\,\;\[\]\`\{\}] - -$ascdigit = 0-9 -$unidigit = [] -- TODO -$digit = [$ascdigit $unidigit] - -$ascsymbol = [\!\#\$\%\&\*\+\.\/\<\=\>\?\@\\\^\|\-\~\,\;] -$unisymbol = [] -- TODO -$symbol = [$ascsymbol $unisymbol] # [$special \_\:\"\'] - -$large = [A-Z \xc0-\xd6 \xd8-\xde] -$small = [a-z \xdf-\xf6 \xf8-\xff \_] -$alpha = [$small $large] - -$graphic = [$small $large $symbol $digit $special \:\"\'\,] - -$octit = 0-7 -$hexit = [0-9 A-F a-f] -$nl = [\n\r] - -@stringdouble = $graphic # [\"] | " " | $nl -@stringsingle = $graphic # [\'] | " " | $nl - -@reservedid = - break|else|new|var|case|finally|return|void|catch|for|switch|while| - continue|function|this|with|default|if|throw|delete|in|try|do|instanceof|typeof| - abstract|enum|int|short| - boolean|export|interface|static| - byte|extends|long|super| - char|final|native|synchronized| - class|float|package|throws| - const|goto|private|transient| - debugger|implements|protected|volatile| - double|import|public - -@reservedop = - "==" | "=" | "+=" | "-=" | "++" | "--" | ";" | ":" | "?" | "," | "." | - "!" | "*" | "/" | "(" | ")" | "{" | "}" | "[" | "]" | "^" | "&" | "&&" | - "<=" | ">=" | "<" | ">" | "-" | "%" | "*=" | "/=" | "%=" | "+" | - "===" | "!==" | "!=" | "&&" | "||" | "|" | "<<" | ">>" | ">>>" | "~" - -@decimal = $digit+ - -@id = $alpha [$alpha $digit \_]* - -tokens :- - <0> "//" [$spacechar $printable]* $nl { \s -> TokenWhite } - <0> $white+ { \s -> TokenWhite } - <0> @reservedid { \s -> TokenRID s } - <0> @reservedop { \s -> TokenROP s } - <0> @decimal { \s -> TokenInt $ read s} - <0> @id { \s -> TokenIdent s } - <0> \" @stringdouble* \" { \s -> TokenStringLit s } - <0> \' @stringsingle* \' { \s -> TokenStringLit s } - -{ --- Each right-hand side has type :: String -> Token - - -data Token - = - TokenWhite - | TokenInt Int - | TokenIdent String - | TokenStringLit String - | TokenNL - | TokenRegex String - | TokenEof - | TokenRID String - | TokenROP String - deriving (Show,Eq) - - -}
− src/HJS/Parser/LexerM.hs
@@ -1,97 +0,0 @@-{- - - The Monadic Lexer. - Provides a monadic wrapper around the Alex lexer and handles nasties - --} - -module HJS.Parser.LexerM(lexer,lexerM,autoSemiInsert) where - -import Data.Char -import qualified Data.ByteString.Char8 as BS -import Control.Monad.State -import Control.Monad.Error -import Debug.Trace - -import HJS.Parser.ParserMonad -import HJS.Parser.Lexer -import HJS.Parser.Regex - --- Cut down lexer for parsing comments. Cannot just skip over as we want to count the lines -lexerComment :: (Token -> P a) -> P a -lexerComment cont = do - st <- get - case (rest st) of - ('\n':cs) -> do put st { rest = cs, lineno = 1 + (lineno st) }; lexerComment cont - ('*':'/':cs) -> do put st { rest = cs }; lexerM 0 cont - (_:cs) -> do put st { rest = cs}; lexerComment cont - - - -lexerM :: Int -> (Token -> P a) -> P a -lexerM action cont = do - st <- get - put st { nl = False } - case action of - 46 -> case parseRegex ('/':(rest st)) of - Left s -> throwError s - Right (s,r) -> do - put st { rest = r, lastToken=Just $ TokenRegex ""} - cont (TokenRegex s) - _ -> lexerM' action cont - {- case expectRegex st && ((lastToken st) == (Just $ TokenROP "/")) of - True -> do - case parseRegex ('/':(rest st)) of - Left s -> throwError s - Right (s,r) -> do - put st { rest = r, lastToken=Just $ TokenRegex ""} - cont (TokenRegex s) - False -> lexerM' cont -} - - - -lexerM' :: Int -> (Token -> P a) -> P a -lexerM' action cont = do - st <- get - case (rest st) of - ('\n':cs) -> do put st { rest = cs, lineno = 1 + (lineno st),nl=True }; lexerM' 0 cont - ('/':'*':cs) -> do put st { rest = cs }; lexerComment cont - _ -> do let (token, cs) = lexer (rest st) - put st { rest=cs,rest2= (rest st),lastToken= Just token } - cont token - -lexerRegex :: String -> (Token,String) -lexerRegex s = case span (\c -> c /= '/') s of - (regex, rest) -> (TokenRegex regex, rest) - -lexer :: String -> (Token,String) -lexer str = go ('\n',str) - where go inp@(_,str) = - case alexScan inp 0 of - AlexEOF -> (TokenEof, []) - AlexError (c,cs) -> error ("lexical error on " ++ cs) - AlexSkip inp' len -> go inp' - AlexToken inp'@(c,cs) len act -> case act (take len str) of - TokenWhite -> go inp' - tok -> (tok, cs) - - - --- Handle automatic semicolon insertion. This will get passed the current --- lookahead token which will get discard so even if we have found a ';' we --- need to put it backonto the stream so that it gets found again. --- autoSemiInsert :: Token -> String -> P String -autoSemiInsert tok res = do - s <- get - case tok == (TokenROP ";") || tok == (TokenROP "}" ) || (nl s) of - True -> do - let r = if tok == (TokenROP ";") then - rest2 s - else (';':(rest2 s)) - put s { rest= r } - return res - _ -> throwError $ "Expecting Semi or NL " ++ (show tok) ++ (show s) - - -showToken tok = do - Debug.Trace.trace ("Token is " ++ (show tok)) ""
− src/HJS/Parser/ParserMonad.hs
@@ -1,40 +0,0 @@-module HJS.Parser.ParserMonad where - - -import Control.Monad.Identity -import Control.Monad.Error -import Control.Monad.State - -import HJS.Parser.Lexer - - -data ParseResult a = Ok a | Failed String deriving Show -data LexerMode = Normal | InComment | InRegex deriving Show -data LexerState = LS { rest::String,lineno::Int,mode::LexerMode,tr:: [String], - nl:: Bool, rest2 :: String, expectRegex :: Bool, lastToken::(Maybe Token)} deriving Show - -startState str = LS { rest=str, lineno=1, mode =Normal, tr=[], nl = False, rest2 = "", expectRegex = False,lastToken=Nothing} - -type P = StateT LexerState (ErrorT String Identity) - -getLineNo :: P Int -getLineNo = do - s <- get - return $ lineno s - -putLineNo :: Int -> P () -putLineNo l = do - s <- get - put s { lineno = l } - - - -trace :: String -> P () -trace ts = do - s <- get - put s { tr = ts : (tr s) } - -ifM a b c = do - case a of - True -> b - False -> c
+ src/HJS/Parser/Prim.hs view
@@ -0,0 +1,115 @@+{-- + + Contained herein is the code for handling automatic semi-colon insert. + +--} +module HJS.Parser.Prim where + +import Text.ParserCombinators.Parsec +import Text.ParserCombinators.Parsec.Expr + +import HJS.Parser.Lexer hiding (whiteSpace) +import Text.ParserCombinators.Parsec.Pos + +data JSPState = JSPState {nlFlag::Bool} + +newJSPState = JSPState { nlFlag = False } + +clearNLFlag = updateState (\x -> x { nlFlag=False }) +setNLFlag = updateState (\x -> x { nlFlag=True }) +getNLFlag = do s <- getState; return $ nlFlag s + +type JSParser a = GenParser (SourcePos,Token) JSPState a + +--lexeme p = do{ x <- p; whiteSpaceNotNL; return x } +lexeme p = do{ x <- p; clearNLFlag; whiteSpace; return x } + +mytoken :: (Token -> Maybe a) -> JSParser a +mytoken test = token showTok posFromTok testTok + where + showTok (pos,t) = show t + posFromTok (pos,t) = pos + testTok (pos,t) = test t + +anytok = mytoken (\tok -> Just tok ) + +nlPrior = do { s <- getNLFlag; tok <- mytoken (\tok -> if s then Just tok else Nothing ); putBack tok} + +equal :: Token -> JSParser () +equal test = mytoken (\tok -> if tok == test then Just () else Nothing) + +rID :: String -> JSParser () +rID name = lexeme $ mytoken (\tok -> case tok of + TokenRID a | a == name -> Just () + _ -> Nothing) +regex = lexeme $ mytoken (\tok -> case tok of + TokenRegex s -> Just s + _ -> Nothing) + +sLit = lexeme $ mytoken (\tok -> case tok of + TokenStringLit s -> Just s + _ -> Nothing) + +iLit = lexeme $ mytoken (\tok -> case tok of + TokenInt i -> Just i + _ -> Nothing) + +identifier :: JSParser String +identifier = lexeme $ mytoken (\tok -> case tok of + TokenIdent name -> Just name + other -> Nothing) + +-- Binary operators are allowed to be followed by whitespace with NL. +rOp :: String -> JSParser () +rOp name = if elem name binaryOp then do { rop; whiteSpace; return () } else rop + where rop = lexeme $ mytoken (\tok -> case tok of + TokenROP a | a == name -> Just () + _ -> Nothing) + +otherOne "[" = Just "]" +otherOne "(" = Just ")" +otherOne "{" = Just "}" +otherOne _ = Nothing + +nest :: JSParser String +nest = lexeme $ mytoken (\tok -> case tok of + TokenROP a -> (otherOne a) + _ -> Nothing) + + +whiteSpaceNotNL = try $ many $ do { equal TokenWhite } + +whiteSpace = try $ many $ (do { equal TokenWhite } <|> do { (equal TokenNL); setNLFlag}) + +semi = try (do { rOp ";"; whiteSpace}) + +semiNL = try (rOp ";") <|> (equal TokenNL) <?> "semi or newline" + +braces :: JSParser a -> JSParser a +braces p = do { r <- between (rOp "{") (rOp "}") p ; whiteSpace; return r } + +commaSep p = p `sepBy` (do { rOp ","; whiteSpace }) + +putBack tok = do + st <- getInput; + pos <- getPosition; + setInput ((pos,tok):st) + +-- If semi-colon, newline or next token is } +autoSemi' = do { try semiNL + <|> do { rOp "}" ; putBack $ TokenROP "}" } + <|> eof; whiteSpace} + +autoSemi = do { try (rOp ";") + <|> nlPrior + <|> do { rOp "}" ; putBack $ TokenROP "}" } + <|> eof} + +t = do { autoSemi; rOp "}" } + +nlBefore t ((_,TokenNL):ts) _ = nlBefore t ts True +nlBefore t ((_,TokenWhite):ts) flag = nlBefore t ts flag +nlBefore t (t':ts) flag = if t' == t then flag else nlBefore t ts False +nlBefore t [] flag = False + +t2 = nlBefore ((newPos "" 2 1),TokenROP "+") (runLexer "1\n2+2") False
− src/HJS/Parser/Regex.hs
@@ -1,68 +0,0 @@-module HJS.Parser.Regex(parseRegex,t) where - -import Data.Char -import Control.Monad.Identity -import Control.Monad.Error -import Control.Monad.State - -{- regex - '/' --> body -body - nterm not * / \ --> First char -body - \ nterm --> First char -first char -- nterm not / \ --> otherchars -first char -- \ nterm --> otherchars -other chars -- '/' --> regex2 -other chars -- nterm not / \ --> otherchars -others chars -- \ nterm --> otherchars -regex2 -- ipart --> flags -regex2 -- end ---> stop -flags -- ipart --> flags -flags -- end --> stop -} - - -data LState = Start | Body | FirstChar | OtherChars | Flags | State2 | Stop deriving Show - -type P = ErrorT String Identity - - -isNTerm c = isPrint c - -isFirstChar c = isNTerm c && not (elem c [ '*', '/', '\\']) -isOtherChar c = isNTerm c && not (elem c [ '/', '\\']) -isBSeq c c' = c == '\\' && isNTerm c' - - - -parseRegex str = runIdentity $ runErrorT $ parseRegex' Start str - - -doit str = (runIdentity $ runErrorT $ parseRegex' Start str) - -parseRegex' :: LState -> String -> P (String,String) -parseRegex' Start ('/':s) = parseRegex' Body s >>= fn '/' -parseRegex' Start _ = throwError "expecting '/'" - -parseRegex' Body (c:s) | isFirstChar c = parseRegex' FirstChar s >>= fn c -parseRegex' Body (c:c':s) | isBSeq c c' = parseRegex' FirstChar s >>= (\(s,r) -> return $ ((c:c':s),r)) - -parseRegex' FirstChar (c:s) | isOtherChar c = parseRegex' OtherChars s >>= fn c -parseRegex' FirstChar (c:c':s) | isBSeq c c' = parseRegex' OtherChars s >>= (\(s,r) -> return $ ((c:c':s),r)) -parseRegex' FirstChar ('/':s) = parseRegex' State2 s >>= fn '/' - -parseRegex' OtherChars (c:s) | isOtherChar c = parseRegex' OtherChars s >>= fn c -parseRegex' OtherChars (c:c':s) | isBSeq c c' = parseRegex' OtherChars s >>= (\(s,r) -> return $ ((c:c':s),r)) -parseRegex' OtherChars ('/':s) = parseRegex' State2 s >>= fn '/' - -parseRegex' State2 (c:s) | isAlpha c = parseRegex' Flags s >>= fn c -parseRegex' State2 r = return ([],r) - -parseRegex' Flags (c:s) | isAlpha c = parseRegex' Flags s >>= fn c -parseRegex' Flags r = return ([],r) - -parseRegex' st s = throwError $ "Not implemented <" ++ (show st) ++ "> <" ++ s ++ ">" - -fn :: Char -> (String,String) -> P (String ,String) -fn c (s,r) = return $ ((c:s),r) - -t = do - s <- readFile "../test/parsingonly/regex.txt" - putStrLn $ show $ parseRegex s
+ src/HJS/Parser/Utils.hs view
@@ -0,0 +1,20 @@+module HJS.Parser.Utils where + + + +processComments str = processComments' str 0 + + +processComments' str flg = case str of + ('/':'/':rs) -> let flg' = if flg == 0 then 1 else flg in (' ':' ':processComments' rs flg') + ('/':'*':rs) -> (' ':' ':processComments' rs 2) + ('*':'/':rs) -> (' ':' ':processComments' rs 0) + ('\n':rs) -> let flg' = if flg == 1 then 0 else flg + in ('\n':processComments' rs flg') + (c:cs) -> if flg /= 0 then (' ':processComments' cs flg) else (c:processComments' cs flg) + [] -> [] + + +doit = do + s <- readFile "c:/Mark/MyDevelopments/haskell/HJS/hjs-0.2/testsuite/parsingonly/5_comments.js" + putStrLn $ processComments s
src/Main.hs view
@@ -1,14 +1,15 @@-{- - Haskell Javascript Parser - (c) Mark Wassell 2007 - See LICENSE file for license details +-- | +-- HJS Haskell Javascript Interpreter +-- (c) Mark Wassell 2007 +-- See LICENSE file for license details --} -module Main(main,lexer,parseProgram,parseTest,parseFile) where +module Main(main,parseProgram,parseTest,parseFile) where + import Data.ByteString.Char8(split,pack,unpack,join,readInt) import Data.List +import qualified Data.Map as M import Data.Ord import Data.Char @@ -22,22 +23,16 @@ import System.Directory import System.Environment -import HJS.Parser.Lexer -import HJS.Parser.LexerM -import HJS.Parser.JavaScriptParser +import HJS.Parser import HJS.Parser.JavaScript -import HJS.Parser.ParserMonad -import HJS.Interpreter.Interp +import HJS.Interpreter.InterpMDecl +import HJS.Interpreter.InterpM hiding (getArgs) +import HJS.Interpreter data VFlag = Quiet | ShowProgress | ShowErrors | ShowAST deriving (Show,Eq) --- Parse a JS program -parseProgram str = runIdentity $ runErrorT $ runStateT jsprogram - (startState str) --- Parse primitive expression -parsePrimExpr str = runIdentity $ runErrorT $ runStateT primexpr (startState str) -- Parse a file with supplied flags parseFile :: [VFlag] -> String -> IO () @@ -50,21 +45,25 @@ | (elem ShowAST flags) = putStrLn ("\" ok " ++ show r) | otherwise = return () handleResult flags (Left r) | (elem ShowProgress flags) = putStrLn ("\" failed") - | (elem ShowErrors flags) = putStrLn ("\" failed" ++ r) + | (elem ShowErrors flags) = putStrLn ("\" failed" ++ show r) | otherwise = return () -lexFile fname = do - s <- readFile fname - putStrLn $ show $ alexScanTokens s -runFile fname = do - putStrLn $ "Running: " ++ fname + + +runFile flags fname = do s <- readFile fname - case parseProgram s of - Right (r,s) -> putStrLn $ show $ interp r - Left s -> putStrLn s + runString flags s >>= putStrLn . show +runString :: [RunFlag] -> String -> IO Bool +runString flags s = do + case parseProgram s of + Right r -> runProgram flags r + Left s -> putStrLn (show s) >> return False +runTest = testFiles "c:/Mark/MyDevelopments/haskell/HJS/hjs-0.2/testsuite" (runFile []) + + main = do s <- getArgs main' s @@ -75,16 +74,16 @@ True -> putStrLn "HJS - JavaScript Parser - Version 0.1" _ -> return () let vf = foldr (\x s -> case x of (Verbose f) -> (f:s);_ -> s) [] opt - mapM_ (parseFile vf) files + mapM_ (runFile []) files parseTest = do - testFiles "../test" (parseFile []) - testFiles "../test/parsingonly" (parseFile []) + -- testFiles "c:/Mark/MyDevelopments/haskell/HJS/hjs-0.2/testsuite" (parseFile [ShowProgress]) + testFiles "c:/Mark/MyDevelopments/haskell/HJS/hjs-0.2/testsuite/parsingonly" (parseFile [ShowProgress]) -runTest = testFiles "../test" runFile + testFiles dir action = do fileList <- getTestFiles dir mapM_ action fileList @@ -131,3 +130,9 @@ (o,n,[] ) -> return (o,n) (_,_,errs) -> ioError (userError (concat errs ++ usageInfo header options)) where header = "Usage: hjs [OPTION...] files..." + + +ifM a b c = do + case a of + True -> b + False -> c
+ src/Main.hs~ view
@@ -0,0 +1,142 @@+-- | +-- HJS Haskell Javascript Interpreter +-- (c) Mark Wassell 2007 +-- See LICENSE file for license details + + +module Main(main,parseProgram,parseTest,parseFile) where + + +import Data.ByteString.Char8(split,pack,unpack,join,readInt) +import Data.List +import qualified Data.Map as M +import Data.Ord +import Data.Char + +import System.Console.GetOpt +import Data.Maybe ( fromMaybe ) + +import Control.Monad.Identity +import Control.Monad.Error +import Control.Monad.State + +import System.Directory +import System.Environment + +-- import HJS.Parser.Lexer +--import HJS.Parser.LexerM +--import HJS.Parser.JavaScriptParser -- hiding (startState) +import HJS.Parser +import HJS.Parser.JavaScript +--import HJS.Parser.ParserMonad + +import HJS.Interpreter.InterpM hiding (getArgs) +import HJS.Interpreter + +data VFlag = Quiet | ShowProgress | ShowErrors | ShowAST | ShowHeap deriving (Show,Eq) + + + +-- Parse a file with supplied flags +parseFile :: [VFlag] -> String -> IO () +parseFile flags fname = do + ifM (elem ShowProgress flags) (putStr $ "Parsing \"" ++ fname) (return ()) + s <- readFile fname + handleResult flags $ parseProgram s + +handleResult flags (Right r) | (elem ShowProgress flags) = putStrLn ("\" ok") + | (elem ShowAST flags) = putStrLn ("\" ok " ++ show r) + | otherwise = return () +handleResult flags (Left r) | (elem ShowProgress flags) = putStrLn ("\" failed") + | (elem ShowErrors flags) = putStrLn ("\" failed" ++ show r) + | otherwise = return () + + + + +runFile flags fname = do + putStr $ "Running: " ++ fname + s <- readFile fname + runString flags s >>= putStrLn . show + +runString :: Bool -> String -> IO Bool +runString flags s = do + case parseProgram s of + Right r -> runProgram flags r + Left s -> putStrLn (show s) >> return False + +runTest = testFiles "c:/Mark/MyDevelopments/haskell/HJS/hjs-0.2/testsuite" (runFile False) + + +main = do + s <- getArgs + main' s + +main' args = do + (opt, files) <- interpOpts args + case (foldr (\x s -> case x of Version -> (True || s); _ -> s) False opt) of + True -> putStrLn "HJS - JavaScript Parser - Version 0.1" + _ -> return () + let vf = foldr (\x s -> case x of (Verbose f) -> (f:s);_ -> s) [] opt + mapM_ (parseFile vf) files + + +parseTest = do + -- testFiles "c:/Mark/MyDevelopments/haskell/HJS/hjs-0.2/testsuite" (parseFile [ShowProgress]) + testFiles "c:/Mark/MyDevelopments/haskell/HJS/hjs-0.2/testsuite/parsingonly" (parseFile [ShowProgress]) + + + + +testFiles dir action = do fileList <- getTestFiles dir + mapM_ action fileList + + + +getTestFiles dirName = do + dirList <- getDirectoryContents dirName + return $ map (\f -> dirName ++ "/" ++ f) $ + map unpack $ + map (Data.ByteString.Char8.join (pack "_")) $ + sortBy (comparing (readInt . head)) $ + filter (\l -> (<=) 2 (length l)) $ + map (split '_' . pack) $ + filter (\x -> last x /= '~' || head x == '.' ) dirList + + + + +data Flag = Verbose VFlag | Version + deriving Show + +options :: [OptDescr Flag] +options = + [ Option ['v'] ["verbose"] (OptArg vflag "LEVEL" ) "=1 show progrss, =2 show errors =3 show AST" + , Option ['V','?'] ["version"] (NoArg Version) "show version number" + ] + +vflag :: Maybe String -> Flag +vflag Nothing = Verbose Quiet +vflag (Just s) = let s' = filter (\c -> not $ isSpace c) s + in case s' of + "1" -> Verbose ShowProgress + "2" -> Verbose ShowErrors + "3" -> Verbose ShowAST + _ -> error $ "Cannot parse verbosity option " ++ s' + +--inp,outp :: Maybe String -> Flag +--outp = Output . fromMaybe "stdout" +--inp = Input . fromMaybe "stdin" + +interpOpts :: [String] -> IO ([Flag], [String]) +interpOpts argv = + case getOpt Permute options argv of + (o,n,[] ) -> return (o,n) + (_,_,errs) -> ioError (userError (concat errs ++ usageInfo header options)) + where header = "Usage: hjs [OPTION...] files..." + + +ifM a b c = do + case a of + True -> b + False -> c
+ testsuite/0_helloworld.js view
@@ -0,0 +1,1 @@+print("Hello world");
+ testsuite/100_animals.js view
@@ -0,0 +1,19 @@+ +// -- Animal -- +function Animal(name) +{ + if (!name) + throw new Error('Must specify an animal name') + this.name = name +} + +Animal.prototype.toString = function() +{ + return this.name +} + +o = new Animal("bob") + +o.toString() == "bob"; + +
+ testsuite/101_inheritance.js view
@@ -0,0 +1,136 @@+/* Copyright (c) 2006 Charlie Savage +License: BSD: +http://www.opensource.org/licenses/bsd-license.php + +As posted on http://cfis.savagexi.com/articles/2006/08/25/new-and-improved-javascript-inheritance +*/ + +Function.prototype.inherits = function(superConstructor) +{ + + /* Borrowed from Kevin Lindsey - create a dummy + constructor to create prototypes. This is useful + because it means that we don't have to modify + the real constructors to have if-statements to + guard against initialization if we are creating + a prototype (versus a regular instance).*/ + function CreatePrototype() {} + CreatePrototype.prototype = superConstructor.prototype + + /* Reset the current constructor. This is an ugly hack required + by the JavaScript prototype-chain implementation. */ + this.prototype = new CreatePrototype() + this.prototype.constructor = this + + // Save a reference to the superClass constructor + this.superConstructor = superConstructor + + this.prototype.callSuper = function() + { + /* In IE and Firefox we can get the caller argument via + arguments.callee.caller. However, for some reason this + has been deprecated in JavaScript and is not supported + by Safari or Opera. So we have to pass it in as + a parameter. Yuck.*/ + + var caller = arguments.callee.caller + /*var caller = arguments[0]*/ + var args = new Array() + + for (var i=1; i<arguments.length; i++) + args.push(arguments[i]) + + /* Figure out where we are in the inheritance hierarchy and + the name of the method that was invoked. */ + var currentConstructor = this.constructor + var methodName = null + + while (methodName == null && currentConstructor != null) + { + // Shortcut - Is a constructor being called? + if (caller === currentConstructor) + return currentConstructor.superConstructor.apply(this, args) + + methodName = figureMethodName(currentConstructor.prototype, caller) + currentConstructor = currentConstructor.superConstructor + } + + if (!methodName) + throw new Error("Could not find method: " + methodName + ".") + + if (!currentConstructor) + throw new Error("Prototype does not have an ancestor: " + + currentConstructor + ".") + + // Finally - execute the method + return currentConstructor.prototype[methodName].apply(this, args) + } +} + +function figureMethodName(prototype, method) +{ + + for (var key in prototype) + { + if ( prototype.hasOwnProperty(key) && + prototype[key] === method) + return key + } + return null +} + +// ----- Example --- + +// -- Animal -- +function Animal(name) +{ + if (!name) + throw new Error('Must specify an animal name') + this.name = name +} + +Animal.prototype.toString = function() +{ + return 'My name is ' + this.name +} + +// -- Pet -- +function Pet(owner, name) +{ + this.owner = owner + this.callSuper(arguments.callee, name) +} + +Pet.inherits(Animal) + +Pet.prototype.toString = function() +{ + return this.callSuper(arguments.callee) + "\n" + + "My owner is " + this.owner +} + +// -- Cat -- +function Cat(owner, name) +{ + this.callSuper(arguments.callee, owner, name) +} + +Cat.inherits(Pet) + +Cat.prototype.toString = function() +{ + return this.callSuper(arguments.callee) + '\n' + + 'I eat mice' +} + +p = new Pet("bob", "fido") + +t1 = p.owner == "bob" && p.name == "fido"; + +var cat = new Cat('charlie', 'oba') + +t2 = cat.owner == "charlie" && cat.name == "oba" + +print(cat.toString()) + +t1 && t2
+ testsuite/101a_in.js view
@@ -0,0 +1,2 @@+a=1;b=2 +a == 1 && b == 2
testsuite/10_expressions.js view
@@ -12,4 +12,11 @@ x++; i = i - 1; } while(i); + +if(!zz) zz = 99; else x=1; + } + +/* Answer should be i == 0, zz == 99 */ + +i == 0 && zz == 99;
+ testsuite/11_funcs_factorial.js view
@@ -0,0 +1,9 @@+function fac(y) +{ + if(y) + return (fac(y-1)*y); + else + return 1; +} + +fac(3) == 6;
+ testsuite/12_array.js view
@@ -0,0 +1,14 @@+bob = [1,2,"fred"]; + +for(i=0;i<bob.length;i++) bob[i]=i*2; + +t1 = bob[0] == 0 && bob[2] == 4 && bob.length == 3; + +bob = new Array(1,2,3); +bob[0]++; + +bob.push(4,5) + +t2 = bob[0] == bob[1] && bob[2] == 3 && bob[3] == 4 && bob[4] == 5; + +t1 && t2;
+ testsuite/12_funcs_ackermann.js view
@@ -0,0 +1,8 @@+function acker(m,n) +{ + if(m==0) return n+1; + if(n==0) return acker(m-1,1); + return acker(m-1,acker(m,n-1)); +} + +acker(3,2) == 29;
+ testsuite/12_iter.js view
@@ -0,0 +1,30 @@+i=1; +do +{ +i++; +if(i==2) continue; +i++; +if(i==4) break; +} +while(i < 10); + +for(var j=0;j<4;j++) +{ + i++; +} + +print(i," ",j); + + +o = new Object(); + +o.prop1 = 1; +o.prop2 = 2; + + +for( var key in o) { + v = o[key]; + if (typeof v == "number") i += v; +} + +i == 11;
+ testsuite/13_cast.js view
@@ -0,0 +1,13 @@+bob = new Array(); + +fred = []; + +bob == 12; +bob != null + +s1 = 1 + " one"; +s2 = "one " + 3; + +s = new String("a string") + +s3 = s + " more ";
+ testsuite/14_new.js view
@@ -0,0 +1,10 @@+function Animal() { this.name = "an animal"; } + +o1 = new Object(); +o1.name= "bob"; + +o2 = new Animal(); + +o2.name == "an animal"; + +o1.name == "bob" && o2.name == "an animal";
+ testsuite/15_tostring.js view
@@ -0,0 +1,17 @@+ +function Pet() { +} + +Pet.prototype.toString = function() { return "[pet]"; } + +s = new String("a string"); +o = new Object(); +p = new Pet() + +x = s.toString(); +y = o.toString(); +z = p.toString(); + +x == "a string" && y == "[object]" && z == "[pet]" + +
+ testsuite/16_funcs.js view
@@ -0,0 +1,14 @@+// Anonymous functions can be recursive by used the 'callee' property on the arguments object +// From http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Functions:arguments:callee + +function makeFactorialFunc() { + return function(x) { + if (x <= 1) + return 1; + return x * arguments.callee(x - 1); + }; +} + +var result = makeFactorialFunc()(5); // returns 120 (5 * 4 * 3 * 2 * 1) + +result == 120;
+ testsuite/16_literals.js view
@@ -0,0 +1,45 @@+const GLOBAL = this; + +var tokens = [ + + "END", + + // Operators and punctuators. Some pair-wise order matters, e.g. (+, -) + // and (UNARY_PLUS, UNARY_MINUS). + "\n", ";"]; + +var opTypeNames = { + '\n': "NEWLINE", + ';': "SEMICOLON", + ',': "COMMA" +}; + +var assignOps = ['|', '^', '&', '<<', '>>', '>>>', '+', '-', '*', '/', '%']; + +function eval(s) { + a=-1; +} + +var global = { + // Value properties. + NaN: NaN, Infinity: Infinity, undefined: undefined, + + + + + // Exte + snarf: snarf, evaluate: evaluate, + load: function load(s) { + if (typeof s != "string") + return s; + + evaluate(snarf(s), s, 1); + }, + print: print, version: null +}; + +function eval(s) { +; +} + +opTypeNames[";"] == "SEMICOLON";
+ testsuite/16_literals.js~ view
@@ -0,0 +1,43 @@+const GLOBAL = this; + +var tokens = [ + + "END", + + // Operators and punctuators. Some pair-wise order matters, e.g. (+, -) + // and (UNARY_PLUS, UNARY_MINUS). + "\n", ";"]; + +var opTypeNames = { + '\n': "NEWLINE", + ';': "SEMICOLON", + ',': "COMMA" +}; + +var assignOps = ['|', '^', '&', '<<', '>>', '>>>', '+', '-', '*', '/', '%']; + +function eval(s) { + a=-1; +} + +var global = { + // Value properties. + NaN: NaN, Infinity: Infinity, undefined: undefined, + + + + + // Exte + snarf: snarf, evaluate: evaluate, + load: function load(s) { + if (typeof s != "string") + return s; + + evaluate(snarf(s), s, 1); + }, + print: print, version: null +}; + +function eval(s) { +; +}
+ testsuite/17_funcs_caller.js view
@@ -0,0 +1,16 @@+function myFunc() { + if (myFunc.caller == null) { + return ("The function was called from the top!"); + } else + return ("This function's caller was " + myFunc.caller.name); +} + +function otherFunc() +{ + return myFunc(); +} + +x = myFunc() +y = otherFunc() + +x == "The function was called from the top!" && y == "This function's caller was otherFunc"
+ testsuite/18_funcs_apply.js view
@@ -0,0 +1,25 @@+// From http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Function:apply + + +function product(name, value){ + this.name = name; + if(value > 1000) + this.value = 999; + else + this.value = value; +} + +function prod_dept(name, value, dept){ + this.dept = dept; + product.apply(this, arguments); +} + +prod_dept.prototype = new product(); + +// since 5 is less than 1000 value is set +cheese = new prod_dept("feta", 5, "food"); + +// since 5000 is above 1000, value will be 999 +car = new prod_dept("honda", 5000, "auto"); + +cheese.value == 5 && car.value == 999;
+ testsuite/19_func_body.js view
@@ -0,0 +1,17 @@+// Passing function body as an argument. +// Extract from HToJS + +function HSFun (name, arity, body) { + this._n = name; // function name + this._r = (arity == 0); // evaluable only for nullary functions + this._x = arity; // function arity + this._d = this; // refer to self + this._y = 0; // actual number of args + this._u = null; // nothing up stack + this._b = body; // function body +} + + +f = new HSFun("myfunc", 1, function() { return 99; } ) + +f._b.apply() == 99;
+ testsuite/21_print.js view
@@ -0,0 +1,2 @@+print("Line 1"); +print("Line 2");
+ testsuite/23_switch.js view
@@ -0,0 +1,11 @@+x = 2; +switch(x) +{ + case 1: i = 1;break; + case 2: i = 2; + case 3: i = 3; +} + + +i == 3 +
+ testsuite/24_switch.js view
@@ -0,0 +1,31 @@+ +function select( fruit ) +{ + switch (fruit) { + case "Oranges": + s = "Oranges are $0.59 a pound.<br>"; + break; + case "Apples": + s = "Apples are $0.32 a pound.<br>"; + break; + case "Bananas": + s="Bananas are $0.48 a pound.<br>"; + break; + case "Cherries": + s="Cherries are $3.00 a pound.<br>"; + break; + case "Mangoes": + case "Papayas": + return "Mangoes and papayas are $2.79 a pound.<br>"; + break; + default: + s="Sorry, we are out of " + fruit + } + return s; +} + +t1 = select("Oranges") == "Oranges are $0.59 a pound.<br>" +t2 = select("Nuts") == "Sorry, we are out of Nuts" +t3 = select("Mangoes") == "Mangoes and papayas are $2.79 a pound.<br>" + +t1 && t2 && t3
+ testsuite/25_regex.js view
@@ -0,0 +1,16 @@+ +function verifyZipCode( zip ) +{ + pattern = /[0-9]{5}([- ]?[0-9]{4})?/; + return pattern.test(zip); +} + + +a = verifyZipCode(95060); // T +b = verifyZipCode(9560); // F +c = verifyZipCode("a"); // F +d = verifyZipCode("95060"); // T +e = verifyZipCode("95060 1234"); // T + +a && !b && !c && d && e +
+ testsuite/26_regex.js view
@@ -0,0 +1,20 @@+ +function verifyZipCode( zip ) +{ + zip = new String(zip); + pattern = /[0-9]{5}([- ]?[0-9]{4})?/; + if(pattern.test(zip)) + return zip.match(pattern)[0]; + else + return "" +} + + +a = verifyZipCode(95060); +//b = verifyZipCode(9560); +//c = verifyZipCode("a"); +//d = verifyZipCode("95060"); +//e = verifyZipCode("95060 1234"); + +//a && !b && !c && d && e +
+ testsuite/34_throw.js view
@@ -0,0 +1,27 @@+// From http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Statements:throw + +function UserException(message) { + this.message = message; + this.name = "UserException"; +} +function getMonthName(mo) { + mo = mo-1; // Adjust month number for array index (1=Jan, 12=Dec) + var months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", + "Aug", "Sep", "Oct", "Nov", "Dec"); + if (months[mo] != null) { + return months[mo]; + } else { + myUserException = new UserException("InvalidMonthNo"); + throw myUserException; + } +} + +try { + // statements to try + monthName = getMonthName(14); +} catch (e) { + monthName = "unknown"; + x = e.name +} + +monthName == "unknown" && x == "UserException"
+ testsuite/35_throw.js view
@@ -0,0 +1,31 @@+ +function bob(n) +{ + try { + throw n; // throws an exception with a numeric value + } catch (e) { + if (e <= 50) { + return true; + } else { + // cannot handle this exception, so rethrow + throw (e); + } + } +} + +function fred(n) +{ + try { + return bob(n); + } + catch(e) + { + return false; + } +} + + +bob(11) && ! fred(1234); + + +
+ testsuite/36_throw.js view
@@ -0,0 +1,66 @@+// From http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Statements:throw +// License as per http://developer.mozilla.org/en/docs/MDC:Copyrights +/* + * Creates a ZipCode object. + * + * Accepted formats for a zip code are: + * 12345 + * 12345-6789 + * 123456789 + * 12345 6789 + * + * If the argument passed to the ZipCode constructor does not + * conform to one of these patterns, an exception is thrown. + */ + +function ZipCode(zip) { + zip = new String(zip); + pattern = /[0-9]{5}([- ]?[0-9]{4})?/; + if (pattern.test(zip)) { + // zip code value will be the first match in the string + this.value = zip.match(pattern)[0]; + this.valueOf = function() { + return this.value + }; + this.toString = function() { + return String(this.value) + }; + } else { + throw new ZipCodeFormatException(zip); + } +} + +function ZipCodeFormatException(value) { + this.value = value; + this.message = "does not conform to the expected format for a zip code"; + this.toString = function() { + return this.value + this.message + }; +} + +/* + * This could be in a script that validates address data + * for US addresses. + */ + +var ZIPCODE_INVALID = -1; +var ZIPCODE_UNKNOWN_ERROR = -2; + +function verifyZipCode(z) { + try { + z = new ZipCode(z); + } catch (e) { + if (e instanceof ZipCodeFormatException) { + return ZIPCODE_INVALID; + } else { + return ZIPCODE_UNKNOWN_ERROR; + } + } + return z; +} + +a = verifyZipCode(95060); // returns 95060 +b = verifyZipCode(9560); // returns -1 +c = verifyZipCode("a"); // returns -1 +d = verifyZipCode("95060"); // returns 95060 +e = verifyZipCode("95060 1234"); // returns 95060 1234
+ testsuite/56_arguments.js view
@@ -0,0 +1,17 @@+ +function bob() +{ + total = 0; + for(i=0;i<arguments.length;i++) + { + total += arguments[i]; + } + return total; +} + + +x = bob(1,2,3,4,5,6); + +print("x= ", x); + +x == 21;
+ testsuite/5_object.js view
@@ -0,0 +1,25 @@+ +o = new Object(); + +o.prop1 = 1; +o.prop2 = 2; +o.prop3 = 66; + + + +function bob() +{ + o.prop3 = 3; + return 1; + o.prop3 = 6; +} + +y=bob(); + +x = o.propertyNames() + +f = o.hasOwnProperty("prop1") && ! o.hasOwnProperty("fred"); + +o.prop1 + o.prop2 + o.prop3 == 6 && f ; + +
+ testsuite/67_method.js view
@@ -0,0 +1,17 @@+function figureMethodName(prototype, method) +{ + + for (var key in prototype) + { + if ( prototype.hasOwnProperty(key) && + prototype[key] === method) + return key + } + return null +} + +function Pet() +{ + this.name = "cat"; + +}
+ testsuite/6_this.js view
@@ -0,0 +1,11 @@+o = new Object(); +o.othername = "fred"; + +o.f = function doit(n) { this.name = this.othername; } + +// This will cause an error +//doit("bob"); + +o.f("bob"); + +o.name == "fred"
+ testsuite/79_throw.js view
@@ -0,0 +1,25 @@+myerror1 = ""; + +try { + throw "Simple throw" +} +catch (er) +{ + myerror1 = er; +} + + + + +myerror2 = "" +try { + + throw new Error("Throw in an error object") +} +catch(er) +{ + myerror2 = er.message; +} + +myerror1 == "Simple throw" && myerror2 == "Throw in an error object" +
+ testsuite/90_class.js view
@@ -0,0 +1,20 @@+function Animal() +{ + this.name = "unknown"; +} + +Animal.prototype.toString = function () { "an Animal";} + +Animal.prototype.toString() == "an Animal"; + +//.toString = function() { this.name; } +/* +function Pet() +{ + this.owner="unknown" +} + +Pet.prototype = new Animal(); + +mypet = new Pet(); +*/
+ testsuite/97_funcproto.js view
@@ -0,0 +1,7 @@+Function.prototype.inherits = function() { return 123; } + +function Animal() {} + +Animal.inherits() == 123; + +//Animal.hasOwnProperty("bob");
+ testsuite/99_all.js view
@@ -0,0 +1,16 @@+ +obj = new Object(); + +function bob(i) +{ + do { + if(i==1) obj.prop1 = 1; else obj.prop1=2; + if(i==1) bob(2); + break; + obj.prop1=99; + } while(false); +} + +bob(1); +obj.prop1 == 2; +
+ testsuite/9_functions.js view
@@ -0,0 +1,19 @@+function bob() { + return 1; +} + +function fred(a1,a2) { + return a1 + a2; +} + +function MyClass() { } + +MyClass.prototype.mary = function (a1,a2) { + this.prop1 = a1 + a2; +} + +o = new MyClass(); + +o.mary.apply(o,[1,2]); + +bob.apply() == 1 && o.prop1 == 3 && fred.apply(null,[1,2]) == 3
+ testsuite/inherit.html view
@@ -0,0 +1,125 @@+<script language=javascript> +/* Copyright (c) 2006 Charlie Savage +License: BSD: +http://www.opensource.org/licenses/bsd-license.php + +As posted on http://cfis.savagexi.com/articles/2006/08/25/new-and-improved-javascript-inheritance +*/ + +Function.prototype.inherits = function(superConstructor) +{ + /* Borrowed from Kevin Lindsey - create a dummy + constructor to create prototypes. This is useful + because it means that we don't have to modify + the real constructors to have if-statements to + guard against initialization if we are creating + a prototype (versus a regular instance).*/ + function CreatePrototype() {} + CreatePrototype.prototype = superConstructor.prototype + + /* Reset the current constructor. This is an ugly hack required + by the JavaScript prototype-chain implementation. */ + this.prototype = new CreatePrototype() + this.prototype.constructor = this + + // Save a reference to the superClass constructor + this.superConstructor = superConstructor + + this.prototype.callSuper = function() + { + /* In IE and Firefox we can get the caller argument via + arguments.callee.caller. However, for some reason this + has been deprecated in JavaScript and is not supported + by Safari or Opera. So we have to pass it in as + a parameter. Yuck.*/ + var caller = arguments.callee.caller + var caller = arguments[0] + var args = new Array() + for (var i=1; i<arguments.length; i++) + args.push(arguments[i]) + + /* Figure out where we are in the inheritance hierarchy and + the name of the method that was invoked. */ + var currentConstructor = this.constructor + var methodName = null + + while (methodName == null && currentConstructor != null) + { + // Shortcut - Is a constructor being called? + if (caller === currentConstructor) + return currentConstructor.superConstructor.apply(this, args) + + methodName = figureMethodName(currentConstructor.prototype, caller) + currentConstructor = currentConstructor.superConstructor + } + + if (!methodName) + throw new Error("Could not find method: " + methodName + ".") + + if (!currentConstructor) + throw new Error("Prototype does not have an ancestor: " + + currentConstructor + ".") + + // Finally - execute the method + return currentConstructor.prototype[methodName].apply(this, args) + } +} + +function figureMethodName(prototype, method) +{ + for (var key in prototype) + { + if (prototype.hasOwnProperty(key) && + prototype[key] === method) + return key + } + return null +} + +// ----- Example --- + +// -- Animal -- +function Animal(name) +{ + if (!name) + throw new Error('Must specify an animal name') + this.name = name +} + +Animal.prototype.toString = function() +{ + return 'My name is ' + this.name +} + +// -- Pet -- +function Pet(owner, name) +{ + this.owner = owner + this.callSuper(arguments.callee, name) +} +Pet.inherits(Animal) + +Pet.prototype.toString = function() +{ + return this.callSuper(arguments.callee) + "\n" + + "My owner is " + this.owner +} + +// -- Cat -- +function Cat(owner, name) +{ + this.callSuper(arguments.callee, owner, name) +} +Cat.inherits(Pet) + +Cat.prototype.toString = function() +{ + return this.callSuper(arguments.callee) + '\n' + + 'I eat mice' +} + +var cat = new Cat('charlie', 'oba') + +alert("me " + cat.toString() ); //.toString()) + +</script>
+ testsuite/parsingonly/01_semi1.js view
@@ -0,0 +1,6 @@+{zero.one;zero} +one +two;three +{{}} four; +// five +five
testsuite/parsingonly/02_semicolon.js view
@@ -9,5 +9,5 @@ a = b //--c - Fails -a = b + c -(d + e).print() +//a = (b + c) +d + e.print
+ testsuite/parsingonly/02_sm.js view
@@ -0,0 +1,8 @@+{zero} +one;two +{three +four;five; +{ +six;{seven;} +} +}
+ testsuite/parsingonly/03_sm.js view
@@ -0,0 +1,11 @@+// A comment +a=b+z; // t=s; +b; +{ +/* Multi line + +*/ +c; +} + +
+ testsuite/parsingonly/05_comments_simple.js view
@@ -0,0 +1,10 @@+// A coment +a+1; + +/* + +b+1; + +*/ + +{}
testsuite/parsingonly/05_regex.js view
@@ -3,10 +3,16 @@ var newlines = spaces.match(/\n/g); opRegExpSrc += i.replace(/[?|^&(){}\[\]+\-*\/\.]/g, "\\$&"); +for (i = 0;;){ + var t=1; + ; +} + for (var i = 0, j = tokens.length; i < j; i++) { if (i > 0) consts += ", "; var t = tokens[i]; + if (/^[a-z]/.test(t)) { consts += t.toUpperCase(); keywords[t] = i;
+ testsuite/parsingonly/06_block.js view
@@ -0,0 +1,7 @@+{ +{}{}{{}} +{ } +} + + +
+ testsuite/parsingonly/06_callexpr.js view
@@ -0,0 +1,8 @@+// Different sorts of call expressions + +bob() +bob(1)(2,3) +bob().mary +bob()[1] +bob(11)[2][3] +bob(mary())
+ testsuite/parsingonly/06_newexpr.js view
@@ -0,0 +1,4 @@+new bob; +new bob(1) +new bob()(1,2) +bob[1](1,2)
+ testsuite/parsingonly/06_var.js view
@@ -0,0 +1,7 @@+// Why does this fail !! +// This fails as well parseProgram "for(i=0;;)\n{\n;\nvar t=1;}" +for (i = 0;;){ + ; +var t=1; + +}
+ testsuite/parsingonly/07_expr.js view
@@ -0,0 +1,14 @@+w=x*y+1/2 +{z=z + 1} + +1 ++ 2 + +"Prototype does not have an ancestor: " + + currentConstructor + "." + +Error("Prototype does not have an ancestor: " + currentConstructor + ".") + +// Expression inside func call with a newline inside them +Error("Prototype does not have an ancestor: " + + currentConstructor + ".")
+ testsuite/parsingonly/101_inheritance.js view
@@ -0,0 +1,122 @@+/* Copyright (c) 2006 Charlie Savage +License: BSD: +http://www.opensource.org/licenses/bsd-license.php + +As posted on http://cfis.savagexi.com/articles/2006/08/25/new-and-improved-javascript-inheritance +*/ + +Function.prototype.inherits = function(superConstructor) +{ + /* Borrowed from Kevin Lindsey - create a dummy + constructor to create prototypes. This is useful + because it means that we don't have to modify + the real constructors to have if-statements to + guard against initialization if we are creating + a prototype (versus a regular instance).*/ + function CreatePrototype() {} + CreatePrototype.prototype = superConstructor.prototype + + /* Reset the current constructor. This is an ugly hack required + by the JavaScript prototype-chain implementation. */ + this.prototype = new CreatePrototype() + this.prototype.constructor = this + + // Save a reference to the superClass constructor + this.superConstructor = superConstructor + + this.prototype.callSuper = function() + { + /* In IE and Firefox we can get the caller argument via + arguments.callee.caller. However, for some reason this + has been deprecated in JavaScript and is not supported + by Safari or Opera. So we have to pass it in as + a parameter. Yuck.*/ + var caller = arguments.callee.caller + var caller = arguments[0] + var args = new Array() + for (var i=1; i<arguments.length; i++) + args.push(arguments[i]) + + /* Figure out where we are in the inheritance hierarchy and + the name of the method that was invoked. */ + var currentConstructor = this.constructor + var methodName = null + + while (methodName == null && currentConstructor != null) + { + // Shortcut - Is a constructor being called? + if (caller === currentConstructor) + return currentConstructor.superConstructor.apply(this, args) + + methodName = figureMethodName(currentConstructor.prototype, caller) + currentConstructor = currentConstructor.superConstructor + } + + if (!methodName) + throw new Error("Could not find method: " + methodName + ".") + + if (!currentConstructor) + throw new Error("Prototype does not have an ancestor: " + + currentConstructor + ".") + + // Finally - execute the method + return currentConstructor.prototype[methodName].apply(this, args) + } +} + +function figureMethodName(prototype, method) +{ + for (var key in prototype) + { + if (prototype.hasOwnProperty(key) && + prototype[key] === method) + return key + } + return null +} + +// ----- Example --- + +// -- Animal -- +function Animal(name) +{ + if (!name) + throw new Error('Must specify an animal name') + this.name = name +} + +Animal.prototype.toString = function() +{ + return 'My name is ' + this.name +} + +// -- Pet -- +function Pet(owner, name) +{ + this.owner = owner + this.callSuper(arguments.callee, name) +} +Pet.inherits(Animal) + +Pet.prototype.toString = function() +{ + return this.callSuper(arguments.callee) + "\n" + + "My owner is " + this.owner +} + +// -- Cat -- +function Cat(owner, name) +{ + this.callSuper(arguments.callee, owner, name) +} +Cat.inherits(Pet) + +Cat.prototype.toString = function() +{ + return this.callSuper(arguments.callee) + '\n' + + 'I eat mice' +} + +var cat = new Cat('charlie', 'oba') + +print(cat.toString())
+ testsuite/parsingonly/10_switch.js view
@@ -0,0 +1,36 @@+switch(i){ + case 1: + 1; + case 2: +2; +} + + switch (typeof v) { + case "boolean": + return new global.Boolean(v); + case "number": + i=1; + break; + return new global.Number(v); + case "string": + return new global.String(v); + case "function": + return v; + case "object": + if (v !== null) + return v; + } + +switch (t) { + case BITWISE_OR: v = u | v; break; + case BITWISE_XOR: v = u ^ v; break; + case BITWISE_AND: v = u & v; break; + case LSH: v = u << v; break; + case RSH: v = u >> v; break; + case URSH: v = u >>> v; break; + case PLUS: v = u + v; break; + case MINUS: v = u - v; break; + case MUL: v = u * v; break; + case DIV: v = u / v; break; + case MOD: v = u % v; break; + }
testsuite/parsingonly/122_jsexec.js view
@@ -232,7 +232,7 @@ : new TypeError(message); } -function execute(n, x) {+//function execute(n, x) { var a, f, i, j, r, s, t, u, v; switch (n.type) {@@ -270,7 +270,7 @@ if (u.readOnly && hasDirectProperty(t, s)) { throw new TypeError("Redeclaration of const " + s, u.filename, u.lineno);- }+ }"c:/Mark/MyDevelopments/haskell/HJS/hjs-0.2/testsuite/parsingonly/122_jsexec.js" if (u.readOnly || !hasDirectProperty(t, s)) { t.__defineProperty__(s, undefined, x.type != EVAL_CODE, u.readOnly);@@ -762,7 +762,7 @@ } return v;-}+//} function Activation(f, a) { for (var i = 0, j = f.params.length; i < j; i++)
+ testsuite/parsingonly/130_htojs.js view
@@ -0,0 +1,2725 @@+// Javascript Runtime Functions for NHC-based Haskell -> Javascript compiler. + +// Runtime support functions. + +// Declare a variable which will serve as a constructor index. +// It will be populated later. + +var conIdx = { }; + +// Declare a variable which will serve as a function name index. +// It will be populated later. + +var funIdx = { }; + +// Declare a variable which will serve as a string literals reverse index. +// It will be populated later. + +var strIdx = { }; + +// Make primitive types behave as thunks. + +Number.prototype._c = function () {return this;}; +Number.prototype._r = false; +Number.prototype._chr = false; + +Boolean.prototype._c = function () { + return new HSData(this.valueOf() ? true : false,[]); +}; +Boolean.prototype._r = true; + +// Strings when evaluated return their first character CONS'ed with +// the remainder of the string. + +String.prototype._c = function () { + var cmeth = this._c; + this._c = function () { + throw ("B '" + this + "' blackhole: thunk reentered"); + } + try { + var res = consStr (this); + this._r = true; + this._c = function () {return res;} + return res; + } catch (e) { + this._c = cmeth; + throw (e); + } +}; + +String.prototype._r = true; + +// Arrays when evaluated return their first element CONS'ed with +// the remainder of the array. + +Array.prototype._c = function () { + var cmeth = this._c; + this._c = function () { + throw ("B [" + this.toString() + "] blackhole: thunk reentered"); + } + try { + var res = consArr (this); + this._r = true; + this._c = function () {return res;} + return res; + } catch (e) { + this._c = cmeth; + throw (e); + } +}; + +Array.prototype._r = true; +Array.prototype._toArray = function () {return this;}; + +// Convert a String into its first character CONS'ed with the string remainder. + +var consStr = function (s) { + if (s.length == 0) { + return new HSEOL (); + } else { + var hdc = mkChar (s.charCodeAt (0)); + return new HSCons (hdc, s.length > 1 ? s.substring (1) : consStr ("")); + }; +}; + +// Convert an Array into its first element CONS'ed with the array remainder. + +var consArr = function (ar) { + if (ar.length == 0) { + return new HSEOL (); + } else { + return new HSCons (ar[0], ar.length > 1 ? ar.slice (1) : consArr ([])); + }; +}; + +// Create a Number object with a special property pretending that +// this is a character. + +function mkChar(c) { + var n = new Number(c); + n._chr = true; + return n; +} + +// Object for consistent representation of lists + +function HSCons (head,tail) { + this._r = false; + this._c = function () { return this; }; + this._t = conIdx['Prelude.:']; + this._f = [head, tail]; +}; + +HSCons.prototype.toString = function () { + var evhead = exprEval (this._f[0]); + if (evhead._chr == true) { + return (String.fromCharCode(evhead) + (exprEval(this._f[1])).toString ()); + } else { + return this._toArray().toString(); + }; + }; + +HSCons.prototype._toArray = function () { + return [exprEval(this._f[0])].concat(exprEval(this._f[1])._toArray ()); + }; + + +function HSEOL() { + this._r = false; + this._c = function () {return this; }; + this._t = conIdx['Prelude.[]']; + this._f = []; + this.toString = function() { return ""}; + this._toArray = function() {return [];}; +} + +// A HSFun object represents function body but holds no arguments. +// It may be evaluated only for nullary functions. +// Its _ap method creates a HSDly object referring to this function +// and holding call arguments. + +function HSFun (name, arity, body) { + this._n = name; // function name + this._r = (arity == 0); // evaluable only for nullary functions + this._x = arity; // function arity + this._d = this; // refer to self + this._y = 0; // actual number of args + this._u = null; // nothing up stack + this._b = body; // function body +} + +HSFun.prototype._c = function () { + if (!this._r) return this; // nothing to do if not evaluable + var cmeth = this._c; // save the _c method + this._c = function () { // install blackhole handler + throw ("B " + this._n + " blackhole: thunk reentered"); + }; + try { + var res = this._b(); // obtain evaluation result + this._c = function () { // replace the _c method to return the result + return res; // without re-evaluation + }; + return res; // return result of this evaluation + } catch (e) { // if an exception is caught + this._c = cmeth; // restore the method + throw (e); // rethrow + } + }; + +HSFun.prototype._ap = function (targs) { + if (targs.length == 0) return this; + return new HSDly(this, this, targs); + }; + + +// A HSDly object holds function arguments. It also holds +// a reference to the HSFun to be evaluated when required, +// and also reference to another HSDly (or to the HSFun if first application). +// Its _ap method acts same way as HSFun's does. +// Its _c method retrieves all arguments in proper order, +// evaluates the HSFun object with proper number of arguments applied, +// and returns a new HSDly with all remaining arguments and whatever came out +// from the evaluation of HSFun. + +function HSDly (fun, up, targs) { + this._a = targs; // arguments to hold + this._n = fun._n; // function name + this._d = fun; // delayed function object (HSFun) + this._u = up; // up stack (HSFun or HSDly) + this._y = targs.length + up._y; // summary number of arguments in the stack + this._r = (this._y >= fun._x); // evaluable only if # args >= function arity +} + +HSDly.prototype._c = function () { + if (!this._r) return this; + var cmeth = this._c; + this._c = function () { + throw ("B " + this._n + " blackhole: thunk reentered"); + }; + var cargs = this._a; // arguments read from the stack + var stack = this._u; + for (; stack._u; stack = stack._u) { + cargs = stack._a.concat(cargs); // concatenate in correct order + }; + var res; // to store result + try { + if (cargs.length == this._d._x) { // saturated call + res = this._d._b.apply(this._d,cargs); + this._u = null; // tear the stack apart + this._c = function () { // replace the method to return result + return res; // without reevaluation + }; + } else { // oversaturated call + var evd; + if (this._d._x == 0) { // nullary function + evd = exprEval(this._d); // evaluate it + this._a = cargs; // carry all the arguments over + } else { // need to feed some arguments + var feed = cargs.slice (0, this._d._x); + var over = cargs.slice (this._d._x); + evd = exprEval(this._d._ap(feed)); + this._a = over; // and carry the rest over + } + this._n = evd._n; // name of whatever was computed + this._d = evd._d; // now refer to whatever it refers to + this._u = evd; // now this is our upstack + this._y = this._a.length + evd._y; // new total arguments + this._r = (this._y >= this._d._x); // are we evaluable? + res = this; // reuse this object + this._c = cmeth; // restore the _c method + } + return res; // return result; + } catch (e) { // if exception is raised + this._c = cmeth; // restore method + throw (e); // rethrow + } + }; + +HSDly.prototype._ap = function (targs) { + if (targs.length == 0) return this; + return new HSDly(this._d, this, targs); + }; + + +// Object type for a Haskell data + +function HSData (con, arrs) { + this._r = false; + this._c = function () { return this; }; + this._t = con; + this._f = arrs; +}; + +// Toplevel expression evaluator entry point + +function exprEval (e) { + for (var ex = e; ex != undefined && ex._r ; ex = ex._c()) + ; + return ex; +}; + +// Cross-browser version of the `apply' function +// Suggested by Neil, should work around MSIE DOM methods +// that do not support the `apply' method. + +function cbrApply(func, thisp, args) +{ + if (func.apply) + return func.apply(thisp,args); + else + { + var s = "func("; + for (var i = 0; i < args.length; i++) + s += (i == 0 ? "" : ",") + "args[" + i + "]"; + s += ")"; + return eval(s); + } +} + +// Support for XML HTTP requests. Based on +// http://www.w3schools.com/xml/tryit.asp?filename=try_xmlhttprequest_js4 + +function newXmlHttpRequest () { + var xmlhttp; + xmlhttp = null; + if (window.XMLHttpRequest) { + xmlhttp=new XMLHttpRequest(); + } else if (window.ActiveXObject) { + xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); + } else throw "R XML HTTP Request not supported"; + return xmlhttp; +} + + +/******* Generated Code: Do Not Edit *******/ +conIdx["Data.Ratio.:%"] = (-4); +conIdx["Echo.JS"] = (-5); +conIdx["Prelude.()"] = (-6); +conIdx["Prelude.(,)"] = (-7); +conIdx["Prelude.(,,)"] = (-8); +conIdx["Prelude.(,,,)"] = (-9); +conIdx["Prelude.(,,,,,,,)"] = (-10); +conIdx["Prelude.(,,,,,,,,)"] = (-11); +conIdx["Prelude.:"] = 3; +conIdx["Prelude.EQ"] = 13; +conIdx["Prelude.False"] = false; +conIdx["Prelude.GT"] = 15; +conIdx["Prelude.Just"] = 16; +conIdx["Prelude.LT"] = 17; +conIdx["Prelude.Nothing"] = 18; +conIdx["Prelude.True"] = true; +conIdx["Prelude.[]"] = 2; +strIdx["F_0"] = "Data.Char.isUpper"; +strIdx["F_1"] = "Data.Char.lexLitChar"; +strIdx["F_2"] = "Data.Char.toUpper"; +strIdx["F_4"] = "Data.Maybe.fromJust"; +strIdx["F_5"] = "Data.Maybe.fromMaybe"; +strIdx["F_6"] = "Data.Ratio.%"; +strIdx["F_8"] = "Data.Ratio.reduce"; +strIdx["F_9"] = "Data._CharNumeric._LAMBDA409"; +strIdx["F_U"] = "Data.Char.asciiTab"; +strIdx["F_V"] = "Data.Char.intToDigit"; +strIdx["F_W"] = "Data.Char.isAlpha"; +strIdx["F_X"] = "Data.Char.isAlphaNum"; +strIdx["F_Y"] = "Data.Char.isLower"; +strIdx["F_Z"] = "Data.Char.isSpace"; +strIdx["F_b"] = "Control.Monad.when"; +strIdx["F_b0"] = "Echo._LAMBDA640"; +strIdx["F_b9"] = "Echo._LAMBDA649"; +strIdx["F_bH"] = "Echo._LAMBDA621"; +strIdx["F_bJ"] = "Echo._LAMBDA623"; +strIdx["F_bS"] = "Echo._LAMBDA632"; +strIdx["F_bT"] = "Echo._LAMBDA633"; +strIdx["F_bU"] = "Echo._LAMBDA634"; +strIdx["F_bV"] = "Echo._LAMBDA635"; +strIdx["F_bW"] = "Echo._LAMBDA636"; +strIdx["F_bX"] = "Echo._LAMBDA637"; +strIdx["F_bY"] = "Echo._LAMBDA638"; +strIdx["F_bZ"] = "Echo._LAMBDA639"; +strIdx["F_ba"] = "Data._CharNumeric._LAMBDA410"; +strIdx["F_bb"] = "Data._CharNumeric._LAMBDA411"; +strIdx["F_be"] = "Data._CharNumeric.chr"; +strIdx["F_bf"] = "Data._CharNumeric.digitToInt"; +strIdx["F_bg"] = "Data._CharNumeric.isDigit"; +strIdx["F_bh"] = "Data._CharNumeric.isHexDigit"; +strIdx["F_bi"] = "Data._CharNumeric.isOctDigit"; +strIdx["F_bj"] = "Data._CharNumeric.nonnull"; +strIdx["F_bk"] = "Data._CharNumeric.ord"; +strIdx["F_bl"] = "Data._CharNumeric.readDec"; +strIdx["F_bm"] = "Data._CharNumeric.readInt"; +strIdx["F_bn"] = "Echo.Prelude.Monad.Echo.JS"; +strIdx["F_bo"] = "Echo.Prelude.Monad.Echo.JS.>>"; +strIdx["F_bp"] = "Echo.Prelude.Monad.Echo.JS.>>="; +strIdx["F_bq"] = "Echo.Prelude.Monad.Echo.JS.fail"; +strIdx["F_br"] = "Echo.Prelude.Monad.Echo.JS.return"; +strIdx["F_c"] = "Data.Char.Data.Char.Prelude.244.prefix"; +strIdx["F_c0"] = "Prelude.Prelude.Enum.Prelude.Integer.enumFromThen"; +strIdx["F_c1"] = "Prelude.Prelude.Enum.Prelude.Integer.enumFromThenTo"; +strIdx["F_c2"] = "Prelude.Prelude.Enum.Prelude.Integer.enumFromTo"; +strIdx["F_c3"] = "Prelude.Prelude.Enum.Prelude.Integer.fromEnum"; +strIdx["F_c4"] = "Prelude.Prelude.Enum.Prelude.Integer.pred"; +strIdx["F_c5"] = "Prelude.Prelude.Enum.Prelude.Integer.succ"; +strIdx["F_c6"] = "Prelude.Prelude.Enum.Prelude.Integer.toEnum"; +strIdx["F_c7"] = "Prelude.Prelude.Enum.Prelude.Ordering.fromEnum"; +strIdx["F_c8"] = "Prelude.Prelude.Eq.Prelude.Char"; +strIdx["F_c9"] = "Prelude.Prelude.Eq.Prelude.Char./="; +strIdx["F_cA"] = "Numeric.showIntAtBase"; +strIdx["F_cB"] = "Numeric.showSigned"; +strIdx["F_cC"] = "Prelude.$"; +strIdx["F_cD"] = "Prelude.&&"; +strIdx["F_cE"] = "Prelude.*"; +strIdx["F_cF"] = "Prelude.+"; +strIdx["F_cG"] = "Prelude.++"; +strIdx["F_cH"] = "Prelude.-"; +strIdx["F_cI"] = "Prelude.."; +strIdx["F_cJ"] = "Prelude.<"; +strIdx["F_cK"] = "Prelude.<="; +strIdx["F_cL"] = "Prelude.=="; +strIdx["F_cM"] = "Prelude.>"; +strIdx["F_cN"] = "Prelude.>="; +strIdx["F_cO"] = "Prelude.Prelude.Enum.Prelude.Char.fromEnum"; +strIdx["F_cP"] = "Prelude.Prelude.Enum.Prelude.Int"; +strIdx["F_cQ"] = "Prelude.Prelude.Enum.Prelude.Int.enumFrom"; +strIdx["F_cR"] = "Prelude.Prelude.Enum.Prelude.Int.enumFromThen"; +strIdx["F_cS"] = "Prelude.Prelude.Enum.Prelude.Int.enumFromThenTo"; +strIdx["F_cT"] = "Prelude.Prelude.Enum.Prelude.Int.enumFromTo"; +strIdx["F_cU"] = "Prelude.Prelude.Enum.Prelude.Int.fromEnum"; +strIdx["F_cV"] = "Prelude.Prelude.Enum.Prelude.Int.pred"; +strIdx["F_cW"] = "Prelude.Prelude.Enum.Prelude.Int.succ"; +strIdx["F_cX"] = "Prelude.Prelude.Enum.Prelude.Int.toEnum"; +strIdx["F_cY"] = "Prelude.Prelude.Enum.Prelude.Integer"; +strIdx["F_cZ"] = "Prelude.Prelude.Enum.Prelude.Integer.enumFrom"; +strIdx["F_ca"] = "Echo._LAMBDA650"; +strIdx["F_cb"] = "Echo._LAMBDA651"; +strIdx["F_cc"] = "Echo.asInt"; +strIdx["F_cd"] = "Echo.asString"; +strIdx["F_ce"] = "Echo.catchJS"; +strIdx["F_cf"] = "Echo.getDocument"; +strIdx["F_cg"] = "Echo.getProperty"; +strIdx["F_ch"] = "Echo.getTime"; +strIdx["F_ci"] = "Echo.inkey"; +strIdx["F_cj"] = "Echo.main"; +strIdx["F_ck"] = "Echo.regEventHandler"; +strIdx["F_cl"] = "Echo.runMethod"; +strIdx["F_cm"] = "Echo.setProperty"; +strIdx["F_cn"] = "Numeric.Numeric.Prelude.413.read'"; +strIdx["F_co"] = "Numeric.Numeric.Prelude.414.read''"; +strIdx["F_cq"] = "Numeric._LAMBDA2002"; +strIdx["F_cr"] = "Numeric._LAMBDA2003"; +strIdx["F_ct"] = "Numeric._LAMBDA2057"; +strIdx["F_cu"] = "Numeric._LAMBDA2058"; +strIdx["F_cv"] = "Numeric._LAMBDA2059"; +strIdx["F_cw"] = "Numeric._LAMBDA2060"; +strIdx["F_cx"] = "Numeric.lexDigits"; +strIdx["F_cy"] = "Numeric.readSigned"; +strIdx["F_cz"] = "Numeric.showInt"; +strIdx["F_d"] = "Data.Char.Data.Char.Prelude.245.lexEsc"; +strIdx["F_d0"] = "Prelude.Prelude.Ord.Prelude.Char.compare"; +strIdx["F_d1"] = "Prelude.Prelude.Ord.Prelude.Char.max"; +strIdx["F_d2"] = "Prelude.Prelude.Ord.Prelude.Char.min"; +strIdx["F_d3"] = "Prelude.Prelude.Ord.Prelude.Eq"; +strIdx["F_d4"] = "Prelude.Prelude.Ord.Prelude.Int"; +strIdx["F_d5"] = "Prelude.Prelude.Ord.Prelude.Int.<"; +strIdx["F_d6"] = "Prelude.Prelude.Ord.Prelude.Int.<="; +strIdx["F_d7"] = "Prelude.Prelude.Ord.Prelude.Int.>"; +strIdx["F_d8"] = "Prelude.Prelude.Ord.Prelude.Int.>="; +strIdx["F_d9"] = "Prelude.Prelude.Ord.Prelude.Int.compare"; +strIdx["F_dA"] = "Prelude.Prelude.Integral.Prelude.Integer.quotRem"; +strIdx["F_dB"] = "Prelude.Prelude.Integral.Prelude.Integer.rem"; +strIdx["F_dC"] = "Prelude.Prelude.Integral.Prelude.Integer.toInteger"; +strIdx["F_dD"] = "Prelude.Prelude.Integral.Prelude.Real"; +strIdx["F_dE"] = "Prelude.Prelude.Num.Prelude.Eq"; +strIdx["F_dF"] = "Prelude.Prelude.Num.Prelude.Int"; +strIdx["F_dG"] = "Prelude.Prelude.Num.Prelude.Int.*"; +strIdx["F_dH"] = "Prelude.Prelude.Num.Prelude.Int.+"; +strIdx["F_dI"] = "Prelude.Prelude.Num.Prelude.Int.-"; +strIdx["F_dJ"] = "Prelude.Prelude.Num.Prelude.Int.abs"; +strIdx["F_dK"] = "Prelude.Prelude.Num.Prelude.Int.fromInteger"; +strIdx["F_dL"] = "Prelude.Prelude.Num.Prelude.Int.negate"; +strIdx["F_dM"] = "Prelude.Prelude.Num.Prelude.Int.signum"; +strIdx["F_dN"] = "Prelude.Prelude.Num.Prelude.Integer"; +strIdx["F_dO"] = "Prelude.Prelude.Num.Prelude.Integer.*"; +strIdx["F_dP"] = "Prelude.Prelude.Num.Prelude.Integer.+"; +strIdx["F_dQ"] = "Prelude.Prelude.Num.Prelude.Integer.-"; +strIdx["F_dR"] = "Prelude.Prelude.Num.Prelude.Integer.abs"; +strIdx["F_dS"] = "Prelude.Prelude.Num.Prelude.Integer.fromInteger"; +strIdx["F_dT"] = "Prelude.Prelude.Num.Prelude.Integer.negate"; +strIdx["F_dU"] = "Prelude.Prelude.Num.Prelude.Integer.signum"; +strIdx["F_dV"] = "Prelude.Prelude.Ord.Prelude.Char"; +strIdx["F_dW"] = "Prelude.Prelude.Ord.Prelude.Char.<"; +strIdx["F_dX"] = "Prelude.Prelude.Ord.Prelude.Char.<="; +strIdx["F_dY"] = "Prelude.Prelude.Ord.Prelude.Char.>"; +strIdx["F_dZ"] = "Prelude.Prelude.Ord.Prelude.Char.>="; +strIdx["F_da"] = "Prelude.Prelude.Eq.Prelude.Char.=="; +strIdx["F_db"] = "Prelude.Prelude.Eq.Prelude.Int"; +strIdx["F_dc"] = "Prelude.Prelude.Eq.Prelude.Int./="; +strIdx["F_dd"] = "Prelude.Prelude.Eq.Prelude.Int.=="; +strIdx["F_de"] = "Prelude.Prelude.Eq.Prelude.Integer"; +strIdx["F_df"] = "Prelude.Prelude.Eq.Prelude.Integer./="; +strIdx["F_dg"] = "Prelude.Prelude.Eq.Prelude.Integer.=="; +strIdx["F_dh"] = "Prelude.Prelude.Eq.Prelude.Ordering"; +strIdx["F_di"] = "Prelude.Prelude.Eq.Prelude.Ordering./="; +strIdx["F_dj"] = "Prelude.Prelude.Eq.Prelude.Ordering.=="; +strIdx["F_dk"] = "Prelude.Prelude.Eq.Prelude.[]"; +strIdx["F_dl"] = "Prelude.Prelude.Eq.Prelude.[]./="; +strIdx["F_dm"] = "Prelude.Prelude.Eq.Prelude.[].=="; +strIdx["F_dn"] = "Prelude.Prelude.Integral.Prelude.Int"; +strIdx["F_do"] = "Prelude.Prelude.Integral.Prelude.Int.div"; +strIdx["F_dp"] = "Prelude.Prelude.Integral.Prelude.Int.divMod"; +strIdx["F_dq"] = "Prelude.Prelude.Integral.Prelude.Int.mod"; +strIdx["F_dr"] = "Prelude.Prelude.Integral.Prelude.Int.quot"; +strIdx["F_ds"] = "Prelude.Prelude.Integral.Prelude.Int.quotRem"; +strIdx["F_dt"] = "Prelude.Prelude.Integral.Prelude.Int.rem"; +strIdx["F_du"] = "Prelude.Prelude.Integral.Prelude.Int.toInteger"; +strIdx["F_dv"] = "Prelude.Prelude.Integral.Prelude.Integer"; +strIdx["F_dw"] = "Prelude.Prelude.Integral.Prelude.Integer.div"; +strIdx["F_dx"] = "Prelude.Prelude.Integral.Prelude.Integer.divMod"; +strIdx["F_dy"] = "Prelude.Prelude.Integral.Prelude.Integer.mod"; +strIdx["F_dz"] = "Prelude.Prelude.Integral.Prelude.Integer.quot"; +strIdx["F_e"] = "Data.Char.Data.Char.Prelude.246.match"; +strIdx["F_e0"] = "Prelude.Prelude._.divMod"; +strIdx["F_e1"] = "Prelude.Prelude._.enumFromThenTo"; +strIdx["F_e2"] = "Prelude.Prelude._.enumFromTo"; +strIdx["F_e3"] = "Prelude.Prelude._.fail"; +strIdx["F_e4"] = "Prelude.Prelude._.max"; +strIdx["F_e5"] = "Prelude.Prelude._.min"; +strIdx["F_e6"] = "Prelude.Prelude._.pred"; +strIdx["F_e7"] = "Prelude.Prelude._.readList"; +strIdx["F_e8"] = "Prelude.Prelude._.show"; +strIdx["F_e9"] = "Prelude.Prelude._.showList"; +strIdx["F_eA"] = "Prelude.Prelude.Read.Prelude.Int"; +strIdx["F_eB"] = "Prelude.Prelude.Read.Prelude.Int.readList"; +strIdx["F_eC"] = "Prelude.Prelude.Read.Prelude.Int.readsPrec"; +strIdx["F_eD"] = "Prelude.Prelude.Read.Prelude.Integer.readsPrec"; +strIdx["F_eE"] = "Prelude.Prelude.Real.Prelude.Int"; +strIdx["F_eF"] = "Prelude.Prelude.Real.Prelude.Int.toRational"; +strIdx["F_eG"] = "Prelude.Prelude.Real.Prelude.Integer"; +strIdx["F_eH"] = "Prelude.Prelude.Real.Prelude.Integer.toRational"; +strIdx["F_eI"] = "Prelude.Prelude.Real.Prelude.Num"; +strIdx["F_eJ"] = "Prelude.Prelude.Real.Prelude.Ord"; +strIdx["F_eK"] = "Prelude.Prelude.Show.Prelude.Int"; +strIdx["F_eL"] = "Prelude.Prelude.Show.Prelude.Int.show"; +strIdx["F_eM"] = "Prelude.Prelude.Show.Prelude.Int.showList"; +strIdx["F_eN"] = "Prelude.Prelude.Show.Prelude.Int.showsPrec"; +strIdx["F_eO"] = "Prelude.Prelude.Show.Prelude.Int.showsType"; +strIdx["F_eP"] = "Prelude.Prelude.Show.Prelude.Integer"; +strIdx["F_eQ"] = "Prelude.Prelude.Show.Prelude.Integer.show"; +strIdx["F_eR"] = "Prelude.Prelude.Show.Prelude.Integer.showList"; +strIdx["F_eS"] = "Prelude.Prelude.Show.Prelude.Integer.showsPrec"; +strIdx["F_eT"] = "Prelude.Prelude.Show.Prelude.Integer.showsType"; +strIdx["F_eU"] = "Prelude.Prelude._./="; +strIdx["F_eV"] = "Prelude.Prelude._.<"; +strIdx["F_eW"] = "Prelude.Prelude._.>"; +strIdx["F_eX"] = "Prelude.Prelude._.>="; +strIdx["F_eY"] = "Prelude.Prelude._.compare"; +strIdx["F_eZ"] = "Prelude.Prelude._.div"; +strIdx["F_ea"] = "Prelude.Prelude.Ord.Prelude.Int.max"; +strIdx["F_eb"] = "Prelude.Prelude.Ord.Prelude.Int.min"; +strIdx["F_ec"] = "Prelude.Prelude.Ord.Prelude.Integer"; +strIdx["F_ed"] = "Prelude.Prelude.Ord.Prelude.Integer.<"; +strIdx["F_ee"] = "Prelude.Prelude.Ord.Prelude.Integer.<="; +strIdx["F_ef"] = "Prelude.Prelude.Ord.Prelude.Integer.>"; +strIdx["F_eg"] = "Prelude.Prelude.Ord.Prelude.Integer.>="; +strIdx["F_eh"] = "Prelude.Prelude.Ord.Prelude.Integer.compare"; +strIdx["F_ei"] = "Prelude.Prelude.Ord.Prelude.Integer.max"; +strIdx["F_ej"] = "Prelude.Prelude.Ord.Prelude.Integer.min"; +strIdx["F_ek"] = "Prelude.Prelude.Prelude.1812.lexString"; +strIdx["F_el"] = "Prelude.Prelude.Prelude.1813.lexStrItem"; +strIdx["F_em"] = "Prelude.Prelude.Prelude.1837.isSingle"; +strIdx["F_en"] = "Prelude.Prelude.Prelude.1838.isSym"; +strIdx["F_eo"] = "Prelude.Prelude.Prelude.1839.isIdInit"; +strIdx["F_ep"] = "Prelude.Prelude.Prelude.1840.isIdChar"; +strIdx["F_eq"] = "Prelude.Prelude.Prelude.1841.lexFracExp"; +strIdx["F_er"] = "Prelude.Prelude.Prelude.1842.lexExp"; +strIdx["F_es"] = "Prelude.Prelude.Prelude.1899.optional"; +strIdx["F_et"] = "Prelude.Prelude.Prelude.1900.mandatory"; +strIdx["F_eu"] = "Prelude.Prelude.Prelude.1937.gcd'"; +strIdx["F_ev"] = "Prelude.Prelude.Prelude.535.readl"; +strIdx["F_ew"] = "Prelude.Prelude.Prelude.536.readl'"; +strIdx["F_ex"] = "Prelude.Prelude.Prelude.580.showl"; +strIdx["F_ey"] = "Prelude.Prelude.Prelude.890.ll"; +strIdx["F_ez"] = "Prelude.Prelude.Prelude.Read.Prelude.Int.readsPrec'Id 3510"; +strIdx["F_f1"] = "Prelude._LAMBDA27500"; +strIdx["F_f2"] = "Prelude._LAMBDA27501"; +strIdx["F_f6"] = "Prelude._LAMBDA27620"; +strIdx["F_f7"] = "Prelude._LAMBDA27621"; +strIdx["F_f8"] = "Prelude._LAMBDA27631"; +strIdx["F_f9"] = "Prelude._LAMBDA27632"; +strIdx["F_fA"] = "Prelude._LAMBDA26955"; +strIdx["F_fE"] = "Prelude._LAMBDA26959"; +strIdx["F_fF"] = "Prelude._LAMBDA26960"; +strIdx["F_fG"] = "Prelude._LAMBDA26961"; +strIdx["F_fH"] = "Prelude._LAMBDA26962"; +strIdx["F_fJ"] = "Prelude._LAMBDA26964"; +strIdx["F_fK"] = "Prelude._LAMBDA26965"; +strIdx["F_fL"] = "Prelude._LAMBDA26966"; +strIdx["F_fM"] = "Prelude._LAMBDA26999"; +strIdx["F_fN"] = "Prelude._LAMBDA27000"; +strIdx["F_fO"] = "Prelude._LAMBDA27001"; +strIdx["F_fP"] = "Prelude._LAMBDA27002"; +strIdx["F_fQ"] = "Prelude._LAMBDA27003"; +strIdx["F_fR"] = "Prelude._LAMBDA27004"; +strIdx["F_fS"] = "Prelude._LAMBDA27005"; +strIdx["F_fT"] = "Prelude._LAMBDA27006"; +strIdx["F_fU"] = "Prelude._LAMBDA27007"; +strIdx["F_fV"] = "Prelude._LAMBDA27008"; +strIdx["F_fW"] = "Prelude._LAMBDA27246"; +strIdx["F_fa"] = "Prelude.Prelude._.succ"; +strIdx["F_fc"] = "Prelude._LAMBDA26931"; +strIdx["F_fd"] = "Prelude._LAMBDA26932"; +strIdx["F_fe"] = "Prelude._LAMBDA26933"; +strIdx["F_fk"] = "Prelude._LAMBDA26939"; +strIdx["F_fm"] = "Prelude._LAMBDA26941"; +strIdx["F_fn"] = "Prelude._LAMBDA26942"; +strIdx["F_fo"] = "Prelude._LAMBDA26943"; +strIdx["F_fr"] = "Prelude._LAMBDA26946"; +strIdx["F_fs"] = "Prelude._LAMBDA26947"; +strIdx["F_fv"] = "Prelude._LAMBDA26950"; +strIdx["F_fw"] = "Prelude._LAMBDA26951"; +strIdx["F_fx"] = "Prelude._LAMBDA26952"; +strIdx["F_fz"] = "Prelude._LAMBDA26954"; +strIdx["F_g0"] = "Prelude.toInteger"; +strIdx["F_g1"] = "Prelude.||"; +strIdx["F_g2"] = "Roman.Roman.Prelude.221.k"; +strIdx["F_g3"] = "Roman.Roman.Prelude.228.length"; +strIdx["F_g4"] = "Roman._LAMBDA480"; +strIdx["F_g5"] = "Roman._LAMBDA481"; +strIdx["F_g9"] = "Roman.fromNumeral"; +strIdx["F_gA"] = "Prelude.lookup"; +strIdx["F_gB"] = "Prelude.map"; +strIdx["F_gC"] = "Prelude.negate"; +strIdx["F_gD"] = "Prelude.not"; +strIdx["F_gE"] = "Prelude.or"; +strIdx["F_gF"] = "Prelude.otherwise"; +strIdx["F_gG"] = "Prelude.quot"; +strIdx["F_gH"] = "Prelude.quotRem"; +strIdx["F_gI"] = "Prelude.read"; +strIdx["F_gJ"] = "Prelude.readParen"; +strIdx["F_gK"] = "Prelude.reads"; +strIdx["F_gL"] = "Prelude.readsPrec"; +strIdx["F_gM"] = "Prelude.rem"; +strIdx["F_gN"] = "Prelude.return"; +strIdx["F_gO"] = "Prelude.reverse"; +strIdx["F_gP"] = "Prelude.seq"; +strIdx["F_gQ"] = "Prelude.show"; +strIdx["F_gR"] = "Prelude.showChar"; +strIdx["F_gS"] = "Prelude.showParen"; +strIdx["F_gT"] = "Prelude.showString"; +strIdx["F_gU"] = "Prelude.showsPrec"; +strIdx["F_gV"] = "Prelude.signum"; +strIdx["F_gW"] = "Prelude.snd"; +strIdx["F_gX"] = "Prelude.span"; +strIdx["F_gY"] = "Prelude.subtract"; +strIdx["F_gZ"] = "Prelude.toEnum"; +strIdx["F_gb"] = "Prelude._LAMBDA27663"; +strIdx["F_gd"] = "Prelude._enumFromToDecC"; +strIdx["F_ge"] = "Prelude._enumFromToIncC"; +strIdx["F_gf"] = "Prelude._filter"; +strIdx["F_gg"] = "Prelude._foldr"; +strIdx["F_gh"] = "Prelude.abs"; +strIdx["F_gi"] = "Prelude.any"; +strIdx["F_gj"] = "Prelude.compare"; +strIdx["F_gk"] = "Prelude.divMod"; +strIdx["F_gl"] = "Prelude.dropWhile"; +strIdx["F_gm"] = "Prelude.elem"; +strIdx["F_gn"] = "Prelude.error"; +strIdx["F_go"] = "Prelude.flip"; +strIdx["F_gp"] = "Prelude.foldl"; +strIdx["F_gq"] = "Prelude.foldl1"; +strIdx["F_gr"] = "Prelude.foldr"; +strIdx["F_gs"] = "Prelude.fromEnum"; +strIdx["F_gt"] = "Prelude.fromInteger"; +strIdx["F_gu"] = "Prelude.fromIntegral"; +strIdx["F_gv"] = "Prelude.fst"; +strIdx["F_gw"] = "Prelude.gcd"; +strIdx["F_gx"] = "Prelude.id"; +strIdx["F_gy"] = "Prelude.length"; +strIdx["F_gz"] = "Prelude.lex"; +strIdx["F_hC"] = "YHC.Primitive.primIntAbs"; +strIdx["F_hD"] = "YHC.Primitive.primIntFromInteger"; +strIdx["F_hE"] = "YHC.Primitive.primIntSignum"; +strIdx["F_hF"] = "YHC.Primitive.primIntegerAdd"; +strIdx["F_hG"] = "YHC.Primitive.primIntegerEq"; +strIdx["F_hH"] = "YHC.Primitive.primIntegerFromInt"; +strIdx["F_hI"] = "YHC.Primitive.primIntegerGe"; +strIdx["F_hJ"] = "YHC.Primitive.primIntegerGt"; +strIdx["F_hK"] = "YHC.Primitive.primIntegerLe"; +strIdx["F_hL"] = "YHC.Primitive.primIntegerLt"; +strIdx["F_hM"] = "YHC.Primitive.primIntegerMul"; +strIdx["F_hN"] = "YHC.Primitive.primIntegerNe"; +strIdx["F_hO"] = "YHC.Primitive.primIntegerNeg"; +strIdx["F_hP"] = "YHC.Primitive.primIntegerQuot"; +strIdx["F_hQ"] = "YHC.Primitive.primIntegerQuotRem"; +strIdx["F_hR"] = "YHC.Primitive.primIntegerRem"; +strIdx["F_hS"] = "YHC.Primitive.primIntegerSub"; +strIdx["F_ha"] = "Roman.fromRoman"; +strIdx["F_hb"] = "Roman.maxmunch"; +strIdx["F_hc"] = "Roman.numerals"; +strIdx["F_hd"] = "Roman.subnums"; +strIdx["F_he"] = "Roman.toNumeral"; +strIdx["F_hf"] = "Roman.toRoman"; +strIdx["F_hg"] = "StdOverlay.StdOverlay.Prelude.255.showInt"; +strIdx["F_hh"] = "StdOverlay.StdOverlay.Prelude.256.showPosInt"; +strIdx["F_m"] = "Data.Char._LAMBDA1026"; +strIdx["F_n"] = "Data.Char._LAMBDA1027"; +var F_b=new HSFun("F_b", 3, function(_lJ, _lK, _lL){ +var c1=exprEval(_lK); +switch((c1)._t) { +case true : return _lL; +case false : return ((exprEval(_lJ))._f[3])._ap([new HSData((-6), [])]); +} +throw('X (' + this._n + ') ' +c1.toSource()); +}); + +var F_c=new HSFun("F_c", 2, function(_lZ, _l0){ +var c2=exprEval(_l0); +return function(_l1, _l2){return new HSData((-7), [new HSCons(_lZ, _l1), _l2]);}((c2)._f[0], (c2)._f[1]); +}); + +var F_d=new HSFun("F_d", 1, function(_l3){ +var c3=exprEval(_l3); +switch((c3)._t) { +case 3 : return function(_l4, _l5){ +var c4=exprEval(((F_gm)._b(F_c8, _l4))._ap([F_l])); +switch((c4)._t) { +case true : return new HSCons(new HSData((-7), [new HSCons(_l4, new HSEOL()), _l5]), new HSEOL()); +case false : var c5=exprEval(_l4); +switch((c5).valueOf()) { +case 94 : var c6=exprEval(_l5); +switch((c6)._t) { +case 3 : return function(_l6, _l7){ +var c7=exprEval((F_cD)._b((F_dZ)._b(_l6, mkChar(64)), (Number(exprEval(_l6)))<=(Number(exprEval(mkChar(95)))))); +switch((c7)._t) { +case true : return new HSCons(new HSData((-7), [new HSCons(mkChar(94), new HSCons(_l6, new HSEOL())), _l7]), new HSEOL()); +case false : var c8=exprEval((F_bg)._b(_l4)); +switch((c8)._t) { +case true : return new HSCons((F_gX)._b(F_bg, _l3), new HSEOL()); +case false : var c9=exprEval((F_0)._b(_l4)); +switch((c9)._t) { +case true : var c10=exprEval((F_gg)._b(new HSFun("F_n", 0, function(){return (F_n)._ap([_l3]);}), new HSCons(F_o, (F_gB)._b(F_gW, F_U)), new HSEOL())); +switch((c10)._t) { +case 2 : return new HSEOL(); +case 3 : return function(_ma, _mb){return new HSCons(_ma, new HSEOL());}((c10)._f[0], (c10)._f[1]); +} +throw('X (' + this._n + ') ' +c10.toSource()); +case false : return new HSEOL(); +} +throw('X (' + this._n + ') ' +c9.toSource()); +} +throw('X (' + this._n + ') ' +c8.toSource()); +} +throw('X (' + this._n + ') ' +c7.toSource()); +}((c6)._f[0], (c6)._f[1]); +default : var c11=exprEval((F_bg)._b(_l4)); +switch((c11)._t) { +case true : return new HSCons((F_gX)._b(F_bg, _l3), new HSEOL()); +case false : var c12=exprEval((F_0)._b(_l4)); +switch((c12)._t) { +case true : var c13=exprEval((F_gg)._b(new HSFun("F_n", 0, function(){return (F_n)._ap([_l3]);}), new HSCons(F_o, (F_gB)._b(F_gW, F_U)), new HSEOL())); +switch((c13)._t) { +case 2 : return new HSEOL(); +case 3 : return function(_ma, _mb){return new HSCons(_ma, new HSEOL());}((c13)._f[0], (c13)._f[1]); +} +throw('X (' + this._n + ') ' +c13.toSource()); +case false : return new HSEOL(); +} +throw('X (' + this._n + ') ' +c12.toSource()); +} +throw('X (' + this._n + ') ' +c11.toSource()); +} +throw('X (' + this._n + ') ' +c6.toSource()); +case 111 : return new HSCons((F_c)._ap([mkChar(111), new HSFun("F_gX", 0, function(){return (F_gX)._b(F_bi, _l5);})]), new HSEOL()); +case 120 : return new HSCons((F_c)._ap([mkChar(120), new HSFun("F_gX", 0, function(){return (F_gX)._b(F_bh, _l5);})]), new HSEOL()); +default : var c14=exprEval((F_bg)._b(_l4)); +switch((c14)._t) { +case true : return new HSCons((F_gX)._b(F_bg, _l3), new HSEOL()); +case false : var c15=exprEval((F_0)._b(_l4)); +switch((c15)._t) { +case true : var c16=exprEval((F_gg)._b(new HSFun("F_n", 0, function(){return (F_n)._ap([_l3]);}), new HSCons(F_o, (F_gB)._b(F_gW, F_U)), new HSEOL())); +switch((c16)._t) { +case 2 : return new HSEOL(); +case 3 : return function(_ma, _mb){return new HSCons(_ma, new HSEOL());}((c16)._f[0], (c16)._f[1]); +} +throw('X (' + this._n + ') ' +c16.toSource()); +case false : return new HSEOL(); +} +throw('X (' + this._n + ') ' +c15.toSource()); +} +throw('X (' + this._n + ') ' +c14.toSource()); +} +throw('X (' + this._n + ') ' +c5.toSource()); +} +throw('X (' + this._n + ') ' +c4.toSource()); +}((c3)._f[0], (c3)._f[1]); +default : return new HSEOL(); +} +throw('X (' + this._n + ') ' +c3.toSource()); +}); + +var F_e=new HSFun("F_e", 3, function(_lS, _lT, _lU){ +var c17=exprEval(_lT); +switch((c17)._t) { +case 3 : return function(_lV, _lW){ +var c18=exprEval(_lU); +switch((c18)._t) { +case 3 : return function(_lX, _lY){ +var c19=exprEval(((exprEval(_lS))._f[1])._ap([_lV, _lX])); +switch((c19)._t) { +case true : return (F_e)._ap([_lS, _lW, _lY]); +case false : return new HSData((-7), [_lT, _lU]); +} +throw('X (' + this._n + ') ' +c19.toSource()); +}((c18)._f[0], (c18)._f[1]); +default : return new HSData((-7), [_lT, _lU]); +} +throw('X (' + this._n + ') ' +c18.toSource()); +}((c17)._f[0], (c17)._f[1]); +default : return new HSData((-7), [_lT, _lU]); +} +throw('X (' + this._n + ') ' +c17.toSource()); +}); + +var F_f="ESC"; + +var F_g="FS"; + +var F_h="GS"; + +var F_i="RS"; + +var F_j="US"; + +var F_k="SP"; + +var F_l="abfnrtv\\\"\'"; + +var F_m=new HSFun("F_m", 3, function(_hd, _io, _iH){ +var c20=exprEval(_io); +return function(_l8, _l9){ +var c21=exprEval(_l8); +switch((c21)._t) { +case 2 : return new HSCons(new HSData((-7), [_hd, _l9]), _iH); +default : return _iH; +} +throw('X (' + this._n + ') ' +c21.toSource()); +}((c20)._f[0], (c20)._f[1]); +}); + +var F_n=new HSFun("F_n", 3, function(_l3, _hd, _he){return (F_gg)._b(new HSFun("F_m", 0, function(){return (F_m)._ap([_hd]);}), new HSCons((F_e)._ap([F_c8, _hd, _l3]), new HSEOL()), _he);}); + +var F_o="DEL"; + +var F_p=" \u0009\u000a\u000d\u000c\u000b\xa0"; + +var F_q="Char.intToDigit: not a digit"; + +var F_r="Data.Char: Pattern match failure in function at 74:1-77:62."; + +var F_s="Data.Char: Pattern match failure in function at 275:1-276:28."; + +var F_t="NUL"; + +var F_u="SOH"; + +var F_v="STX"; + +var F_w="ETX"; + +var F_x="EOT"; + +var F_y="ENQ"; + +var F_z="ACK"; + +var F_A="BEL"; + +var F_B="BS"; + +var F_C="HT"; + +var F_D="LF"; + +var F_E="VT"; + +var F_F="FF"; + +var F_G="CR"; + +var F_H="SO"; + +var F_I="SI"; + +var F_J="DLE"; + +var F_K="DC1"; + +var F_L="DC2"; + +var F_M="DC3"; + +var F_N="DC4"; + +var F_O="NAK"; + +var F_P="SYN"; + +var F_Q="ETB"; + +var F_R="CAN"; + +var F_S="EM"; + +var F_T="SUB"; + +var F_U=new HSFun("F_U", 0, function(){return new HSCons(new HSData((-7), [mkChar(0), F_t]), new HSCons(new HSData((-7), [mkChar(1), F_u]), new HSCons(new HSData((-7), [mkChar(2), F_v]), new HSCons(new HSData((-7), [mkChar(3), F_w]), new HSCons(new HSData((-7), [mkChar(4), F_x]), new HSCons(new HSData((-7), [mkChar(5), F_y]), new HSCons(new HSData((-7), [mkChar(6), F_z]), new HSCons(new HSData((-7), [mkChar(7), F_A]), new HSCons(new HSData((-7), [mkChar(8), F_B]), new HSCons(new HSData((-7), [mkChar(9), F_C]), new HSCons(new HSData((-7), [mkChar(10), F_D]), new HSCons(new HSData((-7), [mkChar(11), F_E]), new HSCons(new HSData((-7), [mkChar(12), F_F]), new HSCons(new HSData((-7), [mkChar(13), F_G]), new HSCons(new HSData((-7), [mkChar(14), F_H]), new HSCons(new HSData((-7), [mkChar(15), F_I]), new HSCons(new HSData((-7), [mkChar(16), F_J]), new HSCons(new HSData((-7), [mkChar(17), F_K]), new HSCons(new HSData((-7), [mkChar(18), F_L]), new HSCons(new HSData((-7), [mkChar(19), F_M]), new HSCons(new HSData((-7), [mkChar(20), F_N]), new HSCons(new HSData((-7), [mkChar(21), F_O]), new HSCons(new HSData((-7), [mkChar(22), F_P]), new HSCons(new HSData((-7), [mkChar(23), F_Q]), new HSCons(new HSData((-7), [mkChar(24), F_R]), new HSCons(new HSData((-7), [mkChar(25), F_S]), new HSCons(new HSData((-7), [mkChar(26), F_T]), new HSCons(new HSData((-7), [mkChar(27), F_f]), new HSCons(new HSData((-7), [mkChar(28), F_g]), new HSCons(new HSData((-7), [mkChar(29), F_h]), new HSCons(new HSData((-7), [mkChar(30), F_i]), new HSCons(new HSData((-7), [mkChar(31), F_j]), new HSCons(new HSData((-7), [mkChar(32), F_k]), new HSEOL())))))))))))))))))))))))))))))))));}); + +var F_V=new HSFun("F_V", 1, function(_mf){ +var c22=exprEval((F_cD)._b((Number(exprEval(_mf)))>=(0), (Number(exprEval(_mf)))<=(9))); +switch((c22)._t) { +case true : return (F_be)._ap([(exprEval((F_bk)._ap([mkChar(48)])))+(exprEval(_mf))]); +case false : var c23=exprEval((F_cD)._b((Number(exprEval(_mf)))>=(10), (Number(exprEval(_mf)))<=(15))); +switch((c23)._t) { +case true : return (F_be)._ap([(exprEval((exprEval((F_bk)._ap([mkChar(97)])))+(exprEval(_mf))))-(10)]); +case false : var c24=exprEval(F_gF); +switch((c24)._t) { +case true : return (F_gn)._b(F_q); +case false : return (F_gn)._b(F_r); +} +throw('X (' + this._n + ') ' +c24.toSource()); +} +throw('X (' + this._n + ') ' +c23.toSource()); +} +throw('X (' + this._n + ') ' +c22.toSource()); +}); + +var F_W=new HSFun("F_W", 1, function(_md){return (F_g1)._b((F_0)._b(_md), new HSFun("F_Y", 0, function(){return (F_Y)._b(_md);}));}); + +var F_X=new HSFun("F_X", 1, function(_me){return (F_g1)._b((F_W)._b(_me), new HSFun("F_bg", 0, function(){return (F_bg)._b(_me);}));}); + +var F_Y=new HSFun("F_Y", 1, function(_lM){return (F_g1)._b((F_cD)._b((F_dZ)._b(_lM, mkChar(97)), (Number(exprEval(_lM)))<=(Number(exprEval(mkChar(122))))), new HSFun("F_g1", 0, function(){return (F_g1)._b((F_cD)._b((F_dZ)._b(_lM, mkChar(223)), (Number(exprEval(_lM)))<=(Number(exprEval(mkChar(246))))), new HSFun("F_cD", 0, function(){return (F_cD)._b((F_dZ)._b(_lM, mkChar(248)), (Number(exprEval(_lM)))<=(Number(exprEval(mkChar(255)))));}));}));}); + +var F_Z=new HSFun("F_Z", 1, function(_mc){return ((F_gm)._b(F_c8, _mc))._ap([F_p]);}); + +var F_0=new HSFun("F_0", 1, function(_lO){return (F_g1)._b((F_cD)._b((F_dZ)._b(_lO, mkChar(65)), (Number(exprEval(_lO)))<=(Number(exprEval(mkChar(90))))), new HSFun("F_g1", 0, function(){return (F_g1)._b((F_cD)._b((F_dZ)._b(_lO, mkChar(192)), (Number(exprEval(_lO)))<=(Number(exprEval(mkChar(214))))), new HSFun("F_cD", 0, function(){return (F_cD)._b((F_dZ)._b(_lO, mkChar(216)), (Number(exprEval(_lO)))<=(Number(exprEval(mkChar(222)))));}));}));}); + +var F_1=new HSFun("F_1", 1, function(_lP){ +var c25=exprEval(_lP); +switch((c25)._t) { +case 2 : return new HSEOL(); +case 3 : return function(_lQ, _lR){ +var c26=exprEval(_lQ); +switch((c26).valueOf()) { +case 92 : return (F_gB)._b((F_c)._ap([mkChar(92)]), (F_d)._ap([_lR])); +default : return new HSCons(new HSData((-7), [new HSCons(_lQ, new HSEOL()), _lR]), new HSEOL()); +} +throw('X (' + this._n + ') ' +c26.toSource()); +}((c25)._f[0], (c25)._f[1]); +} +throw('X (' + this._n + ') ' +c25.toSource()); +}); + +var F_2=new HSFun("F_2", 1, function(_lN){ +var c27=exprEval((F_Y)._b(_lN)); +switch((c27)._t) { +case true : return (exprEval((exprEval(_lN))-(exprEval(mkChar(97)))))+(exprEval(mkChar(65))); +case false : var c28=exprEval(F_gF); +switch((c28)._t) { +case true : return _lN; +case false : return (F_gn)._b(F_s); +} +throw('X (' + this._n + ') ' +c28.toSource()); +} +throw('X (' + this._n + ') ' +c27.toSource()); +}); + +var F_3="Maybe.fromJust: Nothing"; + +var F_4=new HSFun("F_4", 1, function(_kg){ +var c29=exprEval(_kg); +switch((c29)._t) { +case 18 : return (F_gn)._b(F_3); +case 16 : return (c29)._f[0]; +} +throw('X (' + this._n + ') ' +c29.toSource()); +}); + +var F_5=new HSFun("F_5", 2, function(_kd, _ke){ +var c30=exprEval(_ke); +switch((c30)._t) { +case 18 : return _kd; +case 16 : return (c30)._f[0]; +} +throw('X (' + this._n + ') ' +c30.toSource()); +}); + +var F_6=new HSFun("F_6", 3, function(_I, _J, _K){return (F_8)._b(_I, ((exprEval((exprEval((exprEval(_I))._f[0]))._f[0]))._f[2])._ap([_J, ((exprEval((exprEval((exprEval(_I))._f[0]))._f[0]))._f[6])._ap([_K])]), ((exprEval((exprEval((exprEval(_I))._f[0]))._f[0]))._f[8])._ap([_K]));}); + +var F_7="Ratio.%: zero denominator"; + +var F_8=new HSFun("F_8", 3, function(_F, _G, _H){ +var _lf=new HSFun("_lf", 0, function(){return _F;}); +var _b=new HSFun("_b", 0, function(){return (F_gw)._b(_lf, _G, _H);}); +var c31=exprEval(((exprEval((exprEval((exprEval((exprEval(_F))._f[0]))._f[0]))._f[0]))._f[1])._ap([_H, ((exprEval((exprEval((exprEval(_F))._f[0]))._f[0]))._f[7])._ap([0])])); +switch((c31)._t) { +case true : return (F_gn)._b(F_7); +case false : return new HSData((-4), [((exprEval(_F))._f[7])._ap([_G, _b]), ((exprEval(_F))._f[7])._ap([_H, _b])]); +} +throw('X (' + this._n + ') ' +c31.toSource()); +}); + +var F_9=new HSFun("F_9", 2, function(_ee, _ef){ +var c32=exprEval(_ee); +return function(_kl, _km){ +var c33=exprEval(_kl); +switch((c33)._t) { +case 3 : return function(_kn, _ko){return new HSCons(new HSData((-7), [_kl, _km]), _ef);}((c33)._f[0], (c33)._f[1]); +default : return _ef; +} +throw('X (' + this._n + ') ' +c33.toSource()); +}((c32)._f[0], (c32)._f[1]); +}); + +var F_ba=new HSFun("F_ba", 4, function(_kp, _kq, _ec, _ed){return ((exprEval((exprEval((exprEval(_kp))._f[0]))._f[0]))._f[3])._ap([((exprEval((exprEval((exprEval(_kp))._f[0]))._f[0]))._f[2])._ap([_ec, _kq]), _ed]);}); + +var F_bb=new HSFun("F_bb", 5, function(_kq, _kp, _ks, _c7, _dI){ +var c34=exprEval(_c7); +return function(_ku, _kv){return new HSCons(new HSData((-7), [new HSFun("F_gq", 0, function(){return (F_gq)._b(new HSFun("F_ba", 0, function(){return (F_ba)._ap([_kp, _kq]);}), (F_gB)._b((F_fc)._ap([_ks, (F_gu)._b(F_dn, new HSFun("F_eI", 0, function(){return (exprEval((exprEval(_kp))._f[0]))._f[0];}))]), _ku));}), _kv]), _dI);}((c34)._f[0], (c34)._f[1]); +}); + +var F_bc="Char.digitToInt: not a digit"; + +var F_bd="Data._CharNumeric: Pattern match failure in function at 22:1-26:64."; + +var F_be=new HSFun("F_be", 0, function(){return F_gx;}); + +var F_bf=new HSFun("F_bf", 1, function(_ky){ +var c35=exprEval((F_bg)._b(_ky)); +switch((c35)._t) { +case true : return (exprEval((F_bk)._ap([_ky])))-(exprEval((F_bk)._ap([mkChar(48)]))); +case false : var c36=exprEval((F_cD)._b((F_dZ)._b(_ky, mkChar(97)), (Number(exprEval(_ky)))<=(Number(exprEval(mkChar(102)))))); +switch((c36)._t) { +case true : return (exprEval((exprEval((F_bk)._ap([_ky])))-(exprEval((F_bk)._ap([mkChar(97)])))))+(10); +case false : var c37=exprEval((F_cD)._b((F_dZ)._b(_ky, mkChar(65)), (Number(exprEval(_ky)))<=(Number(exprEval(mkChar(70)))))); +switch((c37)._t) { +case true : return (exprEval((exprEval((F_bk)._ap([_ky])))-(exprEval((F_bk)._ap([mkChar(65)])))))+(10); +case false : var c38=exprEval(F_gF); +switch((c38)._t) { +case true : return (F_gn)._b(F_bc); +case false : return (F_gn)._b(F_bd); +} +throw('X (' + this._n + ') ' +c38.toSource()); +} +throw('X (' + this._n + ') ' +c37.toSource()); +} +throw('X (' + this._n + ') ' +c36.toSource()); +} +throw('X (' + this._n + ') ' +c35.toSource()); +}); + +var F_bg=new HSFun("F_bg", 1, function(_kx){return (F_cD)._b((F_dZ)._b(_kx, mkChar(48)), (Number(exprEval(_kx)))<=(Number(exprEval(mkChar(57)))));}); + +var F_bh=new HSFun("F_bh", 1, function(_kw){return (F_g1)._b((F_cD)._b((F_dZ)._b(_kw, mkChar(48)), (Number(exprEval(_kw)))<=(Number(exprEval(mkChar(57))))), new HSFun("F_g1", 0, function(){return (F_g1)._b((F_cD)._b((F_dZ)._b(_kw, mkChar(65)), (Number(exprEval(_kw)))<=(Number(exprEval(mkChar(70))))), new HSFun("F_cD", 0, function(){return (F_cD)._b((F_dZ)._b(_kw, mkChar(97)), (Number(exprEval(_kw)))<=(Number(exprEval(mkChar(102)))));}));}));}); + +var F_bi=new HSFun("F_bi", 1, function(_kz){return (F_cD)._b((F_dZ)._b(_kz, mkChar(48)), (Number(exprEval(_kz)))<=(Number(exprEval(mkChar(55)))));}); + +var F_bj=new HSFun("F_bj", 2, function(_kj, _kk){return (F_gg)._b(F_9, new HSCons((F_gX)._b(_kj, _kk), new HSEOL()), new HSEOL());}); + +var F_bk=new HSFun("F_bk", 0, function(){return F_gx;}); + +var F_bl=new HSFun("F_bl", 1, function(_kA){return (F_bm)._ap([_kA, ((exprEval((exprEval((exprEval(_kA))._f[0]))._f[0]))._f[7])._ap([10]), F_bg, F_bf]);}); + +var F_bm=new HSFun("F_bm", 5, function(_kp, _kq, _kr, _ks, _kt){return (F_gg)._b(new HSFun("F_bb", 0, function(){return (F_bb)._ap([_kq, _kp, _ks]);}), (F_bj)._b(_kr, _kt), new HSEOL());}); + +var F_bn=new HSFun("F_bn", 0, function(){return new HSData((-9), [F_bp, F_bo, F_bq, F_br]);}); + +var F_bo=new HSFun("F_bo", 2, function(_lC, _lD){ +var c39=exprEval(_lC); +return _lD; +}); + +var F_bp=new HSFun("F_bp", 2, function(_lF, _lG){ +var c40=exprEval(_lF); +return function(_lH){return (_lG)._ap([_lH]);}((c40)._f[0]); +}); + +var F_bq=new HSFun("F_bq", 1, function(_lI){return (F_gn)._b(_lI);}); + +var F_br=new HSFun("F_br", 1, function(_lB){return (F_gP)._b(_lB, new HSData((-5), [_lB]));}); + +var F_bs="return new HSData(conIdx[\'Echo.JS\'],[document]);"; + +var F_bt="return new HSData(conIdx[\'Echo.JS\'],[exprEval(a)[exprEval(b).toString()]]);"; + +var F_bu="exprEval(a)[exprEval(b).toString()]=exprEval(c);return new HSData(conIdx[\'Echo.JS\'],[]);"; + +var F_bv="exprEval(a)[exprEval(b).toString()]=function(e){if(!e){e=window.event;}; return exprEval(exprEval(c)._ap([e]));}; return new HSData(conIdx[\'Echo.JS\'],[]);"; + +var F_bw="return new HSData(conIdx[\'Echo.JS\'],[new Number(exprEval(a))]);"; + +var F_bx="return new HSData(conIdx[\'Echo.JS\'],[new String(exprEval(a))]);"; + +var F_by="try {return exprEval(a);} catch(_e) {return exprEval(b)._ap([_e]);}"; + +var F_bz="return new HSData(conIdx[\'Echo.JS\'],[(new Date()).getTime()]);"; + +var F_bA="var a1=exprEval(a); return new HSData(conIdx[\'Echo.JS\'],[cbrApply(a1[exprEval(b).toString()],a1,exprEval(c)._toArray())]);"; + +var F_bB="keyCode"; + +var F_bC="body"; + +var F_bD="createElement"; + +var F_bE="div"; + +var F_bF="value"; + +var F_bG=""; + +var F_bH=new HSFun("F_bH", 1, function(v593){return (F_br)._b(F_bG);}); + +var F_bI=""; + +var F_bJ=new HSFun("F_bJ", 1, function(v594){return (F_br)._b(F_bI);}); + +var F_bK=" "; + +var F_bL=" "; + +var F_bM=" "; + +var F_bN=" ms"; + +var F_bO="innerHTML"; + +var F_bP="insertBefore"; + +var F_bQ="value"; + +var F_bR=""; + +var F_bS=new HSFun("F_bS", 8, function(_et, _fK, _fO, _f8, _e2, _e3, _lz, _hc){ +var _kJ=new HSFun("_kJ", 0, function(){return F_dF;}); +var _c=new HSFun("_c", 0, function(){return ((exprEval(_kJ))._f[4])._ap([_hc, _et]);}); +var _kL=new HSFun("_kL", 0, function(){return F_eK;}); +var _d=new HSFun("_d", 0, function(){return (F_cG)._b(_fK, new HSFun("F_cG", 0, function(){return (F_cG)._b(F_bK, new HSFun("F_cG", 0, function(){return (F_cG)._b(_fO, new HSFun("F_cG", 0, function(){return (F_cG)._b(F_bL, new HSFun("F_cG", 0, function(){return (F_cG)._b(_f8, new HSFun("F_cG", 0, function(){return (F_cG)._b(F_bM, new HSFun("F_cG", 0, function(){return (F_cG)._b(((exprEval(_kL))._f[3])._ap([_c]), F_bN);}));}));}));}));}));}));}); +return (F_bo)._b((F_cm)._b(_e3, F_bO, _d), (F_bo)._b((F_cl)._b(_e2, F_bP, new HSCons(_e3, new HSCons(_lz, new HSEOL()))), (F_bo)._b((F_cm)._b(_lz, F_bQ, F_bR), (F_br)._b(new HSData((-6), []))))); +}); + +var F_bT=new HSFun("F_bT", 7, function(_et, _fK, _fO, _e2, _e3, _lz, _f8){return (F_bp)._b((F_ch)._b(0), new HSFun("F_bS", 0, function(){return (F_bS)._ap([_et, _fK, _fO, _f8, _e2, _e3, _lz]);}));}); + +var F_bU=new HSFun("F_bU", 6, function(_et, _fK, _e2, _e3, _lz, _fO){return (F_bp)._b((F_ce)._b(new HSFun("F_cC", 0, function(){return (F_cC)._b(F_br, new HSFun("F_hf", 0, function(){return (F_hf)._b(new HSFun("F_gI", 0, function(){return (F_gI)._b(F_eA, _fK);}));}));}), F_bJ), new HSFun("F_bT", 0, function(){return (F_bT)._ap([_et, _fK, _fO, _e2, _e3, _lz]);}));}); + +var F_bV=new HSFun("F_bV", 5, function(_et, _e2, _e3, _lz, _fK){return (F_bo)._b((F_cC)._b(new HSFun("F_b", 0, function(){return (F_b)._ap([F_bn, (Number(exprEval((F_gy)._b(_fK))))>(0)]);}), new HSFun("F_bp", 0, function(){return (F_bp)._b((F_ce)._b(new HSFun("F_cC", 0, function(){return (F_cC)._b(F_br, ((F_fc)._ap([F_ha, F_eL]))._ap([_fK]));}), F_bH), new HSFun("F_bU", 0, function(){return (F_bU)._ap([_et, _fK, _e2, _e3, _lz]);}));})), (F_br)._b(new HSData((-6), [])));}); + +var F_bW=new HSFun("F_bW", 4, function(_et, _e2, _lz, _e3){return (F_bp)._b((F_bp)._b((F_cg)._b(_lz, F_bF), F_cd), new HSFun("F_bV", 0, function(){return (F_bV)._ap([_et, _e2, _e3, _lz]);}));}); + +var F_bX=new HSFun("F_bX", 4, function(_eY, _et, _lz, _e2){return (F_bp)._b((F_cl)._b(_eY, F_bD, new HSCons(F_bE, new HSEOL())), new HSFun("F_bW", 0, function(){return (F_bW)._ap([_et, _e2, _lz]);}));}); + +var F_bY=new HSFun("F_bY", 3, function(_et, _lz, _eY){return (F_bp)._b((F_cg)._b(_eY, F_bC), new HSFun("F_bX", 0, function(){return (F_bX)._ap([_eY, _et, _lz]);}));}); + +var F_bZ=new HSFun("F_bZ", 2, function(_lz, _et){return (F_bp)._b(F_cf, new HSFun("F_bY", 0, function(){return (F_bY)._ap([_et, _lz]);}));}); + +var F_b0=new HSFun("F_b0", 2, function(_lz, _eq){return (F_bo)._b((F_cC)._b(new HSFun("F_b", 0, function(){return (F_b)._ap([F_bn, (Number(exprEval(_eq)))===(13)]);}), new HSFun("F_bp", 0, function(){return (F_bp)._b((F_ch)._b(0), new HSFun("F_bZ", 0, function(){return (F_bZ)._ap([_lz]);}));})), (F_br)._b(new HSData((-6), [])));}); + +var F_b1="body"; + +var F_b2="createElement"; + +var F_b3="input"; + +var F_b4="id"; + +var F_b5="input-echo"; + +var F_b6="appendChild"; + +var F_b7="onkeypress"; + +var F_b8="focus"; + +var F_b9=new HSFun("F_b9", 2, function(_io, _iH){return (F_bo)._b((F_cm)._b(_iH, F_b4, F_b5), (F_bo)._b((F_cl)._b(_io, F_b6, new HSCons(_iH, new HSEOL())), (F_bo)._b((F_ck)._b(_iH, F_b7, new HSFun("F_ci", 0, function(){return (F_ci)._ap([_iH]);})), (F_bo)._b((F_cl)._b(_iH, F_b8, new HSEOL()), (F_br)._b(new HSData((-6), []))))));}); + +var F_ca=new HSFun("F_ca", 2, function(_ia, _io){return (F_bp)._b((F_cl)._b(_ia, F_b2, new HSCons(F_b3, new HSEOL())), new HSFun("F_b9", 0, function(){return (F_b9)._ap([_io]);}));}); + +var F_cb=new HSFun("F_cb", 1, function(_ia){return (F_bp)._b((F_cg)._b(_ia, F_b1), new HSFun("F_ca", 0, function(){return (F_ca)._ap([_ia]);}));}); + +var F_cc=new HSFun("F_cc", 1, function(a){ +return new HSData(conIdx['Echo.JS'],[new Number(exprEval(a))]);}); + +var F_cd=new HSFun("F_cd", 1, function(a){ +return new HSData(conIdx['Echo.JS'],[new String(exprEval(a))]);}); + +var F_ce=new HSFun("F_ce", 2, function(a, b){ +try {return exprEval(a);} catch(_e) {return exprEval(b)._ap([_e]);}}); + +var F_cf=new HSFun("F_cf", 0, function(){ +return new HSData(conIdx['Echo.JS'],[document]);}); + +var F_cg=new HSFun("F_cg", 2, function(a, b){ +return new HSData(conIdx['Echo.JS'],[exprEval(a)[exprEval(b).toString()]]);}); + +var F_ch=new HSFun("F_ch", 1, function(a){ +return new HSData(conIdx['Echo.JS'],[(new Date()).getTime()]);}); + +var F_ci=new HSFun("F_ci", 2, function(_lz, _lA){return (F_bp)._b((F_bp)._b((F_cg)._b(_lA, F_bB), F_cc), new HSFun("F_b0", 0, function(){return (F_b0)._ap([_lz]);}));}); + +var F_cj=new HSFun("F_cj", 0, function(){return (F_bp)._b(F_cf, F_cb);}); + +var F_ck=new HSFun("F_ck", 3, function(a, b, c){ +exprEval(a)[exprEval(b).toString()]=function(e){if(!e){e=window.event;}; return exprEval(exprEval(c)._ap([e]));}; return new HSData(conIdx['Echo.JS'],[]);}); + +var F_cl=new HSFun("F_cl", 3, function(a, b, c){ +var a1=exprEval(a); return new HSData(conIdx['Echo.JS'],[cbrApply(a1[exprEval(b).toString()],a1,exprEval(c)._toArray())]);}); + +var F_cm=new HSFun("F_cm", 3, function(a, b, c){ +exprEval(a)[exprEval(b).toString()]=exprEval(c);return new HSData(conIdx['Echo.JS'],[]);}); + +var F_cn=new HSFun("F_cn", 3, function(_E, _bI, _bO){return (F_cG)._b(((F_co)._ap([_bI]))._ap([_bO]), new HSFun("F_gg", 0, function(){return (F_gg)._b(new HSFun("F_cw", 0, function(){return (F_cw)._ap([_E, _bI]);}), (F_gz)._b(_bO), new HSEOL());}));}); + +var F_co=new HSFun("F_co", 2, function(_bI, _bJ){return (F_gg)._b(new HSFun("F_cu", 0, function(){return (F_cu)._ap([_bI]);}), (F_gz)._b(_bJ), new HSEOL());}); + +var F_cp="Numeric.showIntAtBase: can\'t show negative numbers"; + +var F_cq=new HSFun("F_cq", 1, function(_e){return (exprEval(_e))._f[0];}); + +var F_cr=new HSFun("F_cr", 1, function(_e){return (exprEval(_e))._f[1];}); + +var F_cs="Numeric: Pattern match failure in function at 435:1-440:66."; + +var F_ct=new HSFun("F_ct", 3, function(_bL, _kJ, _kK){ +var c41=exprEval(_kJ); +return function(_bM, _bN){ +var c42=exprEval(_bN); +switch((c42)._t) { +case 2 : return new HSCons(new HSData((-7), [_bM, _bL]), _kK); +default : return _kK; +} +throw('X (' + this._n + ') ' +c42.toSource()); +}((c41)._f[0], (c41)._f[1]); +}); + +var F_cu=new HSFun("F_cu", 3, function(_bI, _kH, _kI){ +var c43=exprEval(_kH); +return function(_bK, _bL){return (F_gg)._b(new HSFun("F_ct", 0, function(){return (F_ct)._ap([_bL]);}), (_bI)._ap([_bK]), _kI);}((c43)._f[0], (c43)._f[1]); +}); + +var F_cv=new HSFun("F_cv", 3, function(_E, _kD, _kE){ +var c44=exprEval(_kD); +return function(_bT, _bU){return new HSCons(new HSData((-7), [((exprEval(_E))._f[5])._ap([_bT]), _bU]), _kE);}((c44)._f[0], (c44)._f[1]); +}); + +var F_cw=new HSFun("F_cw", 4, function(_E, _bI, _kB, _kC){ +var c45=exprEval(_kB); +return function(_bP, _bQ){ +var c46=exprEval(_bP); +switch((c46)._t) { +case 3 : return function(_bR, _bS){ +var c47=exprEval(_bR); +switch((c47).valueOf()) { +case 45 : var c48=exprEval(_bS); +switch((c48)._t) { +case 2 : return (F_gg)._b(new HSFun("F_cv", 0, function(){return (F_cv)._ap([_E]);}), ((F_co)._ap([_bI]))._ap([_bQ]), _kC); +default : return _kC; +} +throw('X (' + this._n + ') ' +c48.toSource()); +default : return _kC; +} +throw('X (' + this._n + ') ' +c47.toSource()); +}((c46)._f[0], (c46)._f[1]); +default : return _kC; +} +throw('X (' + this._n + ') ' +c46.toSource()); +}((c45)._f[0], (c45)._f[1]); +}); + +var F_cx=new HSFun("F_cx", 0, function(){return (F_bj)._ap([F_bg]);}); + +var F_cy=new HSFun("F_cy", 2, function(_bH, _bI){ +var _E=new HSFun("_E", 0, function(){return (exprEval(_bH))._f[0];}); +return (F_gJ)._b(false, new HSFun("F_cn", 0, function(){return (F_cn)._ap([_E, _bI]);})); +}); + +var F_cz=new HSFun("F_cz", 1, function(_4){return (F_cA)._ap([_4, ((exprEval((exprEval((exprEval(_4))._f[0]))._f[0]))._f[7])._ap([10]), F_V]);}); + +var F_cA=new HSFun("F_cA", 5, function(_V, _W, _X, _Y, _Z){ +var c49=exprEval(((exprEval((exprEval((exprEval(_V))._f[0]))._f[1]))._f[1])._ap([_Y, ((exprEval((exprEval((exprEval(_V))._f[0]))._f[0]))._f[7])._ap([0])])); +switch((c49)._t) { +case true : return (F_gn)._b(F_cp); +case false : var c50=exprEval(F_gF); +switch((c50)._t) { +case true : var _ld=new HSFun("_ld", 0, function(){return _V;}); +var _e=new HSFun("_e", 0, function(){return ((exprEval(_ld))._f[4])._ap([_Y, _W]);}); +var _f=new HSFun("_f", 0, function(){return (exprEval(_e))._f[0];}); +var _g=new HSFun("_g", 0, function(){return (exprEval(_e))._f[1];}); +var _le=new HSFun("_le", 0, function(){return _V;}); +var _h=new HSFun("_h", 0, function(){return new HSCons((_X)._ap([((F_gu)._b(_le, F_dF))._ap([_g])]), _Z);}); +var c51=exprEval(((exprEval((exprEval((exprEval((exprEval(_V))._f[0]))._f[0]))._f[0]))._f[1])._ap([_f, ((exprEval((exprEval((exprEval(_V))._f[0]))._f[0]))._f[7])._ap([0])])); +switch((c51)._t) { +case true : return _h; +case false : return (F_cA)._b(_V, _W, _X, _f, _h); +} +throw('X (' + this._n + ') ' +c51.toSource()); +case false : return (F_gn)._b(F_cs); +} +throw('X (' + this._n + ') ' +c50.toSource()); +} +throw('X (' + this._n + ') ' +c49.toSource()); +}); + +var F_cB=new HSFun("F_cB", 4, function(_R, _S, _T, _U){ +var c52=exprEval(((exprEval((exprEval(_R))._f[1]))._f[1])._ap([_U, ((exprEval((exprEval(_R))._f[0]))._f[7])._ap([0])])); +switch((c52)._t) { +case true : return (F_gS)._b((Number(exprEval(_T)))>(6), (F_fc)._ap([(_S)._ap([((exprEval((exprEval(_R))._f[0]))._f[5])._ap([_U])]), (F_fW)._ap([mkChar(45)])])); +case false : return (_S)._ap([_U]); +} +throw('X (' + this._n + ') ' +c52.toSource()); +}); + +var F_cC=new HSFun("F_cC", 2, function(_eK, _eL){return (_eK)._ap([_eL]);}); + +var F_cD=new HSFun("F_cD", 2, function(_er, _es){ +var c53=exprEval(_er); +switch((c53)._t) { +case true : return _es; +case false : return false; +} +throw('X (' + this._n + ') ' +c53.toSource()); +}); + +var F_cE=new HSFun("F_cE", 1, function(_jC){return (exprEval(_jC))._f[2];}); + +var F_cF=new HSFun("F_cF", 1, function(_jD){return (exprEval(_jD))._f[3];}); + +var F_cG=new HSFun("F_cG", 2, function(_cp, _cq){ +var c54=exprEval(_cp); +switch((c54)._t) { +case 2 : return _cq; +case 3 : return function(_cr, _cs){return new HSCons(_cr, (F_cG)._b(_cs, _cq));}((c54)._f[0], (c54)._f[1]); +} +throw('X (' + this._n + ') ' +c54.toSource()); +}); + +var F_cH=new HSFun("F_cH", 1, function(_jE){return (exprEval(_jE))._f[4];}); + +var F_cI=new HSFun("F_cI", 2, function(_b9, _ca){return (F_fc)._ap([_ca, _b9]);}); + +var F_cJ=new HSFun("F_cJ", 1, function(_jn){return (exprEval(_jn))._f[1];}); + +var F_cK=new HSFun("F_cK", 1, function(_jo){return (exprEval(_jo))._f[2];}); + +var F_cL=new HSFun("F_cL", 1, function(_jd){return (exprEval(_jd))._f[1];}); + +var F_cM=new HSFun("F_cM", 1, function(_jq){return (exprEval(_jq))._f[4];}); + +var F_cN=new HSFun("F_cN", 1, function(_jp){return (exprEval(_jp))._f[3];}); + +var F_cO=new HSFun("F_cO", 1, function(_f7){return _f7;}); + +var F_cP=new HSFun("F_cP", 0, function(){return new HSData((-10), [F_cW, F_cV, F_cQ, F_cU, F_cX, F_cR, F_cT, F_cS]);}); + +var F_cQ=new HSFun("F_cQ", 1, function(_hH){return new HSCons(_hH, (F_cQ)._b((exprEval(_hH))+(1)));}); + +var F_cR=new HSFun("F_cR", 2, function(_hF, _hG){return new HSCons(_hF, (F_cR)._b(_hG, (exprEval((2)*(exprEval(_hG))))-(exprEval(_hF))));}); + +var F_cS=new HSFun("F_cS", 3, function(_hK, _hL, _hM){return (F_e1)._b(F_cP, _hK, _hL, _hM);}); + +var F_cT=new HSFun("F_cT", 2, function(_hN, _hO){return (F_e2)._b(F_cP, _hN, _hO);}); + +var F_cU=new HSFun("F_cU", 1, function(_hI){return _hI;}); + +var F_cV=new HSFun("F_cV", 1, function(_hP){return (F_e6)._b(F_cP, _hP);}); + +var F_cW=new HSFun("F_cW", 1, function(_hQ){return (F_fa)._b(F_cP, _hQ);}); + +var F_cX=new HSFun("F_cX", 1, function(_hJ){return _hJ;}); + +var F_cY=new HSFun("F_cY", 0, function(){return new HSData((-10), [F_c5, F_c4, F_cZ, F_c3, F_c6, F_c0, F_c2, F_c1]);}); + +var F_cZ=new HSFun("F_cZ", 1, function(_g2){return new HSCons(_g2, (F_cZ)._b((F_hF)._b(_g2, 1)));}); + +var F_c0=new HSFun("F_c0", 2, function(_g0, _g1){return new HSCons(_g0, (F_c0)._b(_g1, (F_hF)._b((F_hM)._b(2, _g1), _g0)));}); + +var F_c1=new HSFun("F_c1", 3, function(_g7, _g8, _g9){return (F_e1)._b(F_cY, _g7, _g8, _g9);}); + +var F_c2=new HSFun("F_c2", 2, function(_ha, _hb){return (F_e2)._b(F_cY, _ha, _hb);}); + +var F_c3=new HSFun("F_c3", 1, function(_g3){return (F_hD)._b(_g3);}); + +var F_c4=new HSFun("F_c4", 1, function(_g5){return (F_hS)._b(_g5, 1);}); + +var F_c5=new HSFun("F_c5", 1, function(_g6){return (F_hF)._b(_g6, 1);}); + +var F_c6=new HSFun("F_c6", 1, function(_g4){return (F_hH)._b(_g4);}); + +var F_c7=new HSFun("F_c7", 1, function(_fq){ +var c55=exprEval(_fq); +switch((c55)._t) { +case 17 : return 0; +case 13 : return 1; +case 15 : return 2; +} +throw('X (' + this._n + ') ' +c55.toSource()); +}); + +var F_c8=new HSFun("F_c8", 0, function(){return new HSData((-7), [F_c9, F_da]);}); + +var F_c9=new HSFun("F_c9", 2, function(_f5, _f6){return (F_eU)._b(F_c8, _f5, _f6);}); + +var F_da=new HSFun("F_da", 2, function(_f3, _f4){return (Number(exprEval(_f3)))===(Number(exprEval(_f4)));}); + +var F_db=new HSFun("F_db", 0, function(){return new HSData((-7), [F_dc, F_dd]);}); + +var F_dc=new HSFun("F_dc", 2, function(_if, _ig){return (Number(exprEval(_if)))!==(Number(exprEval(_ig)));}); + +var F_dd=new HSFun("F_dd", 2, function(_ih, _ii){return (Number(exprEval(_ih)))===(Number(exprEval(_ii)));}); + +var F_de=new HSFun("F_de", 0, function(){return new HSData((-7), [F_df, F_dg]);}); + +var F_df=new HSFun("F_df", 2, function(_gW, _gX){return (F_hN)._b(_gW, _gX);}); + +var F_dg=new HSFun("F_dg", 2, function(_gY, _gZ){return (F_hG)._b(_gY, _gZ);}); + +var F_dh=new HSFun("F_dh", 0, function(){return new HSData((-7), [F_di, F_dj]);}); + +var F_di=new HSFun("F_di", 2, function(_fo, _fp){return (F_eU)._b(F_dh, _fo, _fp);}); + +var F_dj=new HSFun("F_dj", 2, function(_fj, _fk){return (Number(exprEval((F_c7)._b(_fj))))===(Number(exprEval((F_c7)._b(_fk))));}); + +var F_dk=new HSFun("F_dk", 1, function(_bW){return new HSData((-7), [new HSFun("F_dl", 0, function(){return (F_dl)._ap([_bW]);}), new HSFun("F_dm", 0, function(){return (F_dm)._ap([_bW]);})]);}); + +var F_dl=new HSFun("F_dl", 3, function(_iP, _iQ, _iR){return (F_eU)._b(new HSFun("F_dk", 0, function(){return (F_dk)._b(_iP);}), _iQ, _iR);}); + +var F_dm=new HSFun("F_dm", 3, function(_iI, _iJ, _iK){ +var c56=exprEval(_iJ); +switch((c56)._t) { +case 2 : var c57=exprEval(_iK); +switch((c57)._t) { +case 2 : return true; +default : return false; +} +throw('X (' + this._n + ') ' +c57.toSource()); +case 3 : return function(_iL, _iM){ +var c58=exprEval(_iK); +switch((c58)._t) { +case 3 : return function(_iN, _iO){return (F_cD)._b(((exprEval(_iI))._f[1])._ap([_iL, _iN]), new HSFun("F_dm", 0, function(){return (F_dm)._b(_iI, _iM, _iO);}));}((c58)._f[0], (c58)._f[1]); +default : return false; +} +throw('X (' + this._n + ') ' +c58.toSource()); +}((c56)._f[0], (c56)._f[1]); +} +throw('X (' + this._n + ') ' +c56.toSource()); +}); + +var F_dn=new HSFun("F_dn", 0, function(){return new HSData((-11), [F_eE, F_cP, F_dp, F_dq, F_ds, F_dt, F_du, F_dr, F_do]);}); + +var F_do=new HSFun("F_do", 2, function(_hC, _hD){return (F_eZ)._b(F_dn, _hC, _hD);}); + +var F_dp=new HSFun("F_dp", 2, function(_hx, _hy){return (F_e0)._b(F_dn, _hx, _hy);}); + +var F_dq=new HSFun("F_dq", 2, function(_hp, _hq){ +var _k=new HSFun("_k", 0, function(){return (exprEval(_hp))%(exprEval(_hq));}); +var c59=exprEval((Number(exprEval((F_hE)._b(_k))))===(Number(exprEval(NEG_W(exprEval((F_hE)._b(_hq))))))); +switch((c59)._t) { +case true : return (exprEval(_k))+(exprEval(_hq)); +case false : return _k; +} +throw('X (' + this._n + ') ' +c59.toSource()); +}); + +var F_dr=new HSFun("F_dr", 2, function(_hv, _hw){return function(x,y){return (x - (x % y))/y;}(Number(exprEval(_hv)),Number(exprEval(_hw)));}); + +var F_ds=new HSFun("F_ds", 2, function(_hr, _hs){return new HSData((-7), [function(x,y){return (x - (x % y))/y;}(Number(exprEval(_hr)),Number(exprEval(_hs))), (exprEval(_hr))%(exprEval(_hs))]);}); + +var F_dt=new HSFun("F_dt", 2, function(_ht, _hu){return (exprEval(_ht))%(exprEval(_hu));}); + +var F_du=new HSFun("F_du", 1, function(_ho){return (F_hH)._b(_ho);}); + +var F_dv=new HSFun("F_dv", 0, function(){return new HSData((-11), [F_eG, F_cY, F_dx, F_dy, F_dA, F_dB, F_dC, F_dz, F_dw]);}); + +var F_dw=new HSFun("F_dw", 2, function(_gi, _gj){return (exprEval((F_dx)._b(_gi, _gj)))._f[0];}); + +var F_dx=new HSFun("F_dx", 2, function(_gv, _gw){return (F_e0)._b(F_dv, _gv, _gw);}); + +var F_dy=new HSFun("F_dy", 2, function(_gg, _gh){return (exprEval((F_dx)._b(_gg, _gh)))._f[1];}); + +var F_dz=new HSFun("F_dz", 2, function(_gm, _gn){return (F_hP)._b(_gm, _gn);}); + +var F_dA=new HSFun("F_dA", 2, function(_ge, _gf){return (F_hQ)._b(_ge, _gf);}); + +var F_dB=new HSFun("F_dB", 2, function(_gk, _gl){return (F_hR)._b(_gk, _gl);}); + +var F_dC=new HSFun("F_dC", 1, function(_gd){return _gd;}); + +var F_dD=new HSFun("F_dD", 1, function(_jX){return (exprEval(_jX))._f[0];}); + +var F_dE=new HSFun("F_dE", 1, function(_jB){return (exprEval(_jB))._f[0];}); + +var F_dF=new HSFun("F_dF", 0, function(){return new HSData((-11), [F_db, F_eK, F_dG, F_dH, F_dI, F_dL, F_dM, F_dK, F_dJ]);}); + +var F_dG=new HSFun("F_dG", 2, function(_hU, _hV){return (exprEval(_hU))*(exprEval(_hV));}); + +var F_dH=new HSFun("F_dH", 2, function(_hY, _hZ){return (exprEval(_hY))+(exprEval(_hZ));}); + +var F_dI=new HSFun("F_dI", 2, function(_hW, _hX){return (exprEval(_hW))-(exprEval(_hX));}); + +var F_dJ=new HSFun("F_dJ", 1, function(_hT){return (F_hC)._b(_hT);}); + +var F_dK=new HSFun("F_dK", 1, function(_hR){return (F_hD)._b(_hR);}); + +var F_dL=new HSFun("F_dL", 1, function(a){ +return 0 - Number(exprEval(a));}); + +var F_dM=new HSFun("F_dM", 1, function(_hS){return (F_hE)._b(_hS);}); + +var F_dN=new HSFun("F_dN", 0, function(){return new HSData((-11), [F_de, F_eP, F_dO, F_dP, F_dQ, F_dT, F_dU, F_dS, F_dR]);}); + +var F_dO=new HSFun("F_dO", 2, function(_gC, _gD){return (F_hM)._b(_gC, _gD);}); + +var F_dP=new HSFun("F_dP", 2, function(_gG, _gH){return (F_hF)._b(_gG, _gH);}); + +var F_dQ=new HSFun("F_dQ", 2, function(_gE, _gF){return (F_hS)._b(_gE, _gF);}); + +var F_dR=new HSFun("F_dR", 1, function(_gA){ +var c60=exprEval((F_hL)._b(_gA, 0)); +switch((c60)._t) { +case true : return (F_hO)._b(_gA); +case false : return _gA; +} +throw('X (' + this._n + ') ' +c60.toSource()); +}); + +var F_dS=new HSFun("F_dS", 1, function(_gy){return _gy;}); + +var F_dT=new HSFun("F_dT", 1, function(_gB){return (F_hO)._b(_gB);}); + +var F_dU=new HSFun("F_dU", 1, function(_gz){ +var c61=exprEval((F_eh)._b(_gz, 0)); +switch((c61)._t) { +case 17 : return -1; +case 13 : return 0; +case 15 : return 1; +} +throw('X (' + this._n + ') ' +c61.toSource()); +}); + +var F_dV=new HSFun("F_dV", 0, function(){return new HSData((-10), [F_c8, F_dW, F_dX, F_dZ, F_dY, F_d0, F_d2, F_d1]);}); + +var F_dW=new HSFun("F_dW", 2, function(_f1, _f2){return (F_eV)._b(F_dV, _f1, _f2);}); + +var F_dX=new HSFun("F_dX", 2, function(_fR, _fS){return (Number(exprEval(_fR)))<=(Number(exprEval(_fS)));}); + +var F_dY=new HSFun("F_dY", 2, function(_fX, _fY){return (F_eW)._b(F_dV, _fX, _fY);}); + +var F_dZ=new HSFun("F_dZ", 2, function(_fZ, _f0){return (F_eX)._b(F_dV, _fZ, _f0);}); + +var F_d0=new HSFun("F_d0", 2, function(_fP, _fQ){return (F_d9)._b(_fP, _fQ);}); + +var F_d1=new HSFun("F_d1", 2, function(_fV, _fW){return (F_e4)._b(F_dV, _fV, _fW);}); + +var F_d2=new HSFun("F_d2", 2, function(_fT, _fU){return (F_e5)._b(F_dV, _fT, _fU);}); + +var F_d3=new HSFun("F_d3", 1, function(_jm){return (exprEval(_jm))._f[0];}); + +var F_d4=new HSFun("F_d4", 0, function(){return new HSData((-10), [F_db, F_d5, F_d6, F_d8, F_d7, F_d9, F_eb, F_ea]);}); + +var F_d5=new HSFun("F_d5", 2, function(_h6, _h7){return (Number(exprEval(_h6)))<(Number(exprEval(_h7)));}); + +var F_d6=new HSFun("F_d6", 2, function(_h4, _h5){return (Number(exprEval(_h4)))<=(Number(exprEval(_h5)));}); + +var F_d7=new HSFun("F_d7", 2, function(_h0, _h1){return (Number(exprEval(_h0)))>(Number(exprEval(_h1)));}); + +var F_d8=new HSFun("F_d8", 2, function(_h2, _h3){return (Number(exprEval(_h2)))>=(Number(exprEval(_h3)));}); + +var F_d9=new HSFun("F_d9", 2, function(_id, _ie){return (F_eY)._b(F_d4, _id, _ie);}); + +var F_ea=new HSFun("F_ea", 2, function(_ib, _ic){return (F_e4)._b(F_d4, _ib, _ic);}); + +var F_eb=new HSFun("F_eb", 2, function(_h8, _h9){return (F_e5)._b(F_d4, _h8, _h9);}); + +var F_ec=new HSFun("F_ec", 0, function(){return new HSData((-10), [F_de, F_ed, F_ee, F_eg, F_ef, F_eh, F_ej, F_ei]);}); + +var F_ed=new HSFun("F_ed", 2, function(_gO, _gP){return (F_hL)._b(_gO, _gP);}); + +var F_ee=new HSFun("F_ee", 2, function(_gM, _gN){return (F_hK)._b(_gM, _gN);}); + +var F_ef=new HSFun("F_ef", 2, function(_gI, _gJ){return (F_hJ)._b(_gI, _gJ);}); + +var F_eg=new HSFun("F_eg", 2, function(_gK, _gL){return (F_hI)._b(_gK, _gL);}); + +var F_eh=new HSFun("F_eh", 2, function(_gU, _gV){return (F_eY)._b(F_ec, _gU, _gV);}); + +var F_ei=new HSFun("F_ei", 2, function(_gS, _gT){return (F_e4)._b(F_ec, _gS, _gT);}); + +var F_ej=new HSFun("F_ej", 2, function(_gQ, _gR){return (F_e5)._b(F_ec, _gQ, _gR);}); + +var F_ek=new HSFun("F_ek", 1, function(_cL){ +var c62=exprEval(_cL); +switch((c62)._t) { +case 3 : return function(_cM, _cN){ +var c63=exprEval(_cM); +switch((c63).valueOf()) { +case 34 : return new HSCons(new HSData((-7), [F_fl, _cN]), new HSEOL()); +default : return (F_gg)._b(F_fn, (F_el)._ap([_cL]), new HSEOL()); +} +throw('X (' + this._n + ') ' +c63.toSource()); +}((c62)._f[0], (c62)._f[1]); +default : return (F_gg)._b(F_fn, (F_el)._ap([_cL]), new HSEOL()); +} +throw('X (' + this._n + ') ' +c62.toSource()); +}); + +var F_el=new HSFun("F_el", 1, function(_cE){ +var c64=exprEval(_cE); +switch((c64)._t) { +case 3 : return function(_cF, _cG){ +var c65=exprEval(_cF); +switch((c65).valueOf()) { +case 92 : var c66=exprEval(_cG); +switch((c66)._t) { +case 3 : return function(_cH, _cI){ +var c67=exprEval(_cH); +switch((c67).valueOf()) { +case 38 : return new HSCons(new HSData((-7), [F_fi, _cI]), new HSEOL()); +default : var c68=exprEval((F_Z)._b(_cH)); +switch((c68)._t) { +case true : return (F_gg)._b(F_fk, new HSCons((F_gl)._b(F_Z, _cI), new HSEOL()), new HSEOL()); +case false : return (F_1)._b(_cE); +} +throw('X (' + this._n + ') ' +c68.toSource()); +} +throw('X (' + this._n + ') ' +c67.toSource()); +}((c66)._f[0], (c66)._f[1]); +default : return (F_1)._b(_cE); +} +throw('X (' + this._n + ') ' +c66.toSource()); +default : return (F_1)._b(_cE); +} +throw('X (' + this._n + ') ' +c65.toSource()); +}((c64)._f[0], (c64)._f[1]); +default : return (F_1)._b(_cE); +} +throw('X (' + this._n + ') ' +c64.toSource()); +}); + +var F_em=new HSFun("F_em", 1, function(_dk){return ((F_gm)._b(F_c8, _dk))._ap([F_fD]);}); + +var F_en=new HSFun("F_en", 1, function(_dj){return ((F_gm)._b(F_c8, _dj))._ap([F_fC]);}); + +var F_eo=new HSFun("F_eo", 1, function(_di){return (F_g1)._b((F_W)._b(_di), (Number(exprEval(_di)))===(Number(exprEval(mkChar(95)))));}); + +var F_ep=new HSFun("F_ep", 1, function(_dh){return (F_g1)._b((F_X)._b(_dh), ((F_gm)._b(F_c8, _dh))._ap([F_fB]));}); + +var F_eq=new HSFun("F_eq", 1, function(_c8){ +var c69=exprEval(_c8); +switch((c69)._t) { +case 3 : return function(_c9, _da){ +var c70=exprEval(_c9); +switch((c70).valueOf()) { +case 46 : var c71=exprEval(_da); +switch((c71)._t) { +case 3 : return function(_db, _dc){ +var c72=exprEval((F_bg)._b(_db)); +switch((c72)._t) { +case true : return (F_gg)._b(F_fA, (F_cx)._ap([new HSCons(_db, _dc)]), new HSEOL()); +case false : return (F_er)._ap([_c8]); +} +throw('X (' + this._n + ') ' +c72.toSource()); +}((c71)._f[0], (c71)._f[1]); +default : return (F_er)._ap([_c8]); +} +throw('X (' + this._n + ') ' +c71.toSource()); +default : return (F_er)._ap([_c8]); +} +throw('X (' + this._n + ') ' +c70.toSource()); +}((c69)._f[0], (c69)._f[1]); +default : return (F_er)._ap([_c8]); +} +throw('X (' + this._n + ') ' +c69.toSource()); +}); + +var F_er=new HSFun("F_er", 1, function(_cY){ +var c73=exprEval(_cY); +switch((c73)._t) { +case 3 : return function(_cZ, _c0){ +var c74=exprEval(((F_gm)._b(F_c8, _cZ))._ap([F_ft])); +switch((c74)._t) { +case true : return (F_cG)._b((F_gg)._b(new HSFun("F_fw", 0, function(){return (F_fw)._ap([_cZ]);}), new HSCons(_c0, new HSEOL()), new HSEOL()), new HSFun("F_gg", 0, function(){return (F_gg)._b(new HSFun("F_fx", 0, function(){return (F_fx)._ap([_cZ]);}), (F_cx)._ap([_c0]), new HSEOL());})); +case false : return new HSCons(new HSData((-7), [F_fy, _cY]), new HSEOL()); +} +throw('X (' + this._n + ') ' +c74.toSource()); +}((c73)._f[0], (c73)._f[1]); +default : return new HSCons(new HSData((-7), [F_fy, _cY]), new HSEOL()); +} +throw('X (' + this._n + ') ' +c73.toSource()); +}); + +var F_es=new HSFun("F_es", 2, function(_du, _dv){return (F_cG)._b((_du)._ap([_dv]), ((F_et)._ap([_du]))._ap([_dv]));}); + +var F_et=new HSFun("F_et", 2, function(_du, _dw){return (F_gg)._b(new HSFun("F_fL", 0, function(){return (F_fL)._ap([_du]);}), (F_gz)._b(_dw), new HSEOL());}); + +var F_eu=new HSFun("F_eu", 3, function(_eD, _eE, _eF){ +var c75=exprEval(((exprEval((exprEval((exprEval((exprEval(_eD))._f[0]))._f[0]))._f[0]))._f[1])._ap([_eF, ((exprEval((exprEval((exprEval(_eD))._f[0]))._f[0]))._f[7])._ap([0])])); +switch((c75)._t) { +case true : return _eE; +case false : return (F_eu)._ap([_eD, _eF, ((exprEval(_eD))._f[5])._ap([_eE, _eF])]); +} +throw('X (' + this._n + ') ' +c75.toSource()); +}); + +var F_ev=new HSFun("F_ev", 2, function(_dY, _dZ){return (F_cG)._b((F_gg)._b(F_fQ, (F_gz)._b(_dZ), new HSEOL()), new HSFun("F_gg", 0, function(){return (F_gg)._b(new HSFun("F_fS", 0, function(){return (F_fS)._ap([_dY]);}), ((exprEval(_dY))._f[0])._ap([0, _dZ]), new HSEOL());}));}); + +var F_ew=new HSFun("F_ew", 2, function(_dK, _dL){return (F_cG)._b((F_gg)._b(F_fM, (F_gz)._b(_dL), new HSEOL()), new HSFun("F_gg", 0, function(){return (F_gg)._b(new HSFun("F_fP", 0, function(){return (F_fP)._ap([_dK]);}), (F_gz)._b(_dL), new HSEOL());}));}); + +var F_ex=new HSFun("F_ex", 2, function(_ek, _el){ +var c76=exprEval(_el); +switch((c76)._t) { +case 2 : return (F_fW)._ap([mkChar(93)]); +case 3 : return function(_em, _en){return (F_fc)._ap([(F_fc)._ap([(F_ex)._ap([_ek, _en]), ((exprEval(_ek))._f[0])._ap([0, _em])]), (F_gT)._ap([F_fY])]);}((c76)._f[0], (c76)._f[1]); +} +throw('X (' + this._n + ') ' +c76.toSource()); +}); + +var F_ey=new HSFun("F_ey", 2, function(_iD, _iE){ +var c77=exprEval(_iE); +switch((c77)._t) { +case 2 : return _iD; +case 3 : return function(_iF, _iG){ +var _u=new HSFun("_u", 0, function(){return (exprEval(_iD))+(1);}); +return (F_gP)._b(_u, (F_ey)._ap([_u, _iG])); +}((c77)._f[0], (c77)._f[1]); +} +throw('X (' + this._n + ') ' +c77.toSource()); +}); + +var F_ez=new HSFun("F_ez", 3, function(_hg, _hh, _hi){return (F_gB)._b(new HSFun("F_f8", 0, function(){return (F_f8)._ap([_hg]);}), ((F_eD)._b(_hh))._ap([_hi]));}); + +var F_eA=new HSFun("F_eA", 0, function(){return new HSData((-7), [F_eC, F_eB]);}); + +var F_eB=new HSFun("F_eB", 0, function(){return (F_e7)._b(F_eA);}); + +var F_eC=new HSFun("F_eC", 1, function(_hf){return (F_f9)._ap([_hf]);}); + +var F_eD=new HSFun("F_eD", 1, function(v25828){return (F_cy)._b(F_eG, new HSFun("F_bl", 0, function(){return (F_bl)._b(F_dv);}));}); + +var F_eE=new HSFun("F_eE", 0, function(){return new HSData((-8), [F_dF, F_d4, F_eF]);}); + +var F_eF=new HSFun("F_eF", 1, function(_hE){return (F_6)._b(F_dv, (F_hH)._b(_hE), 1);}); + +var F_eG=new HSFun("F_eG", 0, function(){return new HSData((-8), [F_dN, F_ec, F_eH]);}); + +var F_eH=new HSFun("F_eH", 1, function(_gx){return (F_6)._b(F_dv, _gx, 1);}); + +var F_eI=new HSFun("F_eI", 1, function(_jM){return (exprEval(_jM))._f[0];}); + +var F_eJ=new HSFun("F_eJ", 1, function(_jN){return (exprEval(_jN))._f[1];}); + +var F_eK=new HSFun("F_eK", 0, function(){return new HSData((-9), [F_eN, F_eO, F_eM, F_eL]);}); + +var F_eL=new HSFun("F_eL", 1, function(_hn){return (F_e8)._b(F_eK, _hn);}); + +var F_eM=new HSFun("F_eM", 1, function(_hm){return (F_e9)._b(F_eK, _hm);}); + +var F_eN=new HSFun("F_eN", 2, function(_kn, _ko){ +var c78=exprEval((Number(exprEval(_ko)))<(0)); +switch((c78)._t) { +case true : return (F_gS)._b((Number(exprEval(_kn)))>(6), (F_fc)._ap([(F_hh)._ap([new HSFun("F_dL", 0, function(){return (F_dL)._b(_ko);})]), (F_fW)._ap([mkChar(45)])])); +case false : return (F_hh)._ap([_ko]); +} +throw('X (' + this._n + ') ' +c78.toSource()); +}); + +var F_eO=new HSFun("F_eO", 1, function(v26141){return (F_gT)._ap([F_ga]);}); + +var F_eP=new HSFun("F_eP", 0, function(){return new HSData((-9), [F_eS, F_eT, F_eR, F_eQ]);}); + +var F_eQ=new HSFun("F_eQ", 1, function(_gc){return (F_e8)._b(F_eP, _gc);}); + +var F_eR=new HSFun("F_eR", 1, function(_gb){return (F_e9)._b(F_eP, _gb);}); + +var F_eS=new HSFun("F_eS", 2, function(_f9, _ga){return (F_cB)._b(F_eG, new HSFun("F_cz", 0, function(){return (F_cz)._b(F_dv);}), _f9, _ga);}); + +var F_eT=new HSFun("F_eT", 1, function(v25823){return (F_gT)._ap([F_f5]);}); + +var F_eU=new HSFun("F_eU", 3, function(_fl, _fm, _fn){return (F_gD)._b(((exprEval(_fl))._f[1])._ap([_fm, _fn]));}); + +var F_eV=new HSFun("F_eV", 3, function(_fg, _fh, _fi){return (F_dj)._b(((exprEval(_fg))._f[5])._ap([_fh, _fi]), new HSData(17, []));}); + +var F_eW=new HSFun("F_eW", 3, function(_fa, _fb, _fc){return (F_dj)._b(((exprEval(_fa))._f[5])._ap([_fb, _fc]), new HSData(15, []));}); + +var F_eX=new HSFun("F_eX", 3, function(_fd, _fe, _ff){return (F_di)._b(((exprEval(_fd))._f[5])._ap([_fe, _ff]), new HSData(17, []));}); + +var F_eY=new HSFun("F_eY", 3, function(_fL, _fM, _fN){ +var c79=exprEval(((exprEval((exprEval(_fL))._f[0]))._f[1])._ap([_fM, _fN])); +switch((c79)._t) { +case true : return new HSData(13, []); +case false : var c80=exprEval(((exprEval(_fL))._f[2])._ap([_fM, _fN])); +switch((c80)._t) { +case true : return new HSData(17, []); +case false : return new HSData(15, []); +} +throw('X (' + this._n + ') ' +c80.toSource()); +} +throw('X (' + this._n + ') ' +c79.toSource()); +}); + +var F_eZ=new HSFun("F_eZ", 3, function(_hz, _hA, _hB){return (exprEval(((exprEval(_hz))._f[2])._ap([_hA, _hB])))._f[0];}); + +var F_e0=new HSFun("F_e0", 3, function(_go, _gp, _gq){ +var _Q=new HSFun("_Q", 0, function(){return _go;}); +var _r=new HSFun("_r", 0, function(){return ((exprEval(_Q))._f[4])._ap([_gp, _gq]);}); +var _i=new HSFun("_i", 0, function(){return _r;}); +var _s=new HSFun("_s", 0, function(){return (exprEval(_i))._f[0];}); +var _t=new HSFun("_t", 0, function(){return (exprEval(_i))._f[1];}); +var c81=exprEval(((exprEval((exprEval((exprEval((exprEval(_go))._f[0]))._f[0]))._f[0]))._f[1])._ap([((exprEval((exprEval((exprEval(_go))._f[0]))._f[0]))._f[6])._ap([_t]), ((exprEval((exprEval((exprEval(_go))._f[0]))._f[0]))._f[5])._ap([((exprEval((exprEval((exprEval(_go))._f[0]))._f[0]))._f[6])._ap([_gq])])])); +switch((c81)._t) { +case true : return new HSData((-7), [((exprEval((exprEval((exprEval(_go))._f[0]))._f[0]))._f[4])._ap([_s, ((exprEval((exprEval((exprEval(_go))._f[0]))._f[0]))._f[7])._ap([1])]), ((exprEval((exprEval((exprEval(_go))._f[0]))._f[0]))._f[3])._ap([_t, _gq])]); +case false : return _r; +} +throw('X (' + this._n + ') ' +c81.toSource()); +}); + +var F_e1=new HSFun("F_e1", 4, function(_fz, _fA, _fB, _fC){ +var _L=new HSFun("_L", 0, function(){return _fz;}); +var _o=new HSFun("_o", 0, function(){return ((exprEval(_L))._f[3])._ap([_fB]);}); +var _M=new HSFun("_M", 0, function(){return _fz;}); +var _n=new HSFun("_n", 0, function(){return ((exprEval(_M))._f[3])._ap([_fA]);}); +var _q=new HSFun("_q", 0, function(){return (exprEval(_o))-(exprEval(_n));}); +var _N=new HSFun("_N", 0, function(){return _fz;}); +var _p=new HSFun("_p", 0, function(){return ((exprEval(_N))._f[3])._ap([_fC]);}); +var c82=exprEval((Number(exprEval(_q)))>=(0)); +switch((c82)._t) { +case true : return (F_ge)._b(_fz, _n, _q, _p); +case false : return (F_gd)._b(_fz, _n, _q, _p); +} +throw('X (' + this._n + ') ' +c82.toSource()); +}); + +var F_e2=new HSFun("F_e2", 3, function(_fD, _fE, _fF){ +var _O=new HSFun("_O", 0, function(){return _fD;}); +var _m=new HSFun("_m", 0, function(){return ((exprEval(_O))._f[3])._ap([_fF]);}); +var _P=new HSFun("_P", 0, function(){return _fD;}); +var _l=new HSFun("_l", 0, function(){return ((exprEval(_P))._f[3])._ap([_fE]);}); +var c83=exprEval((F_d9)._b(_l, _m)); +switch((c83)._t) { +case 17 : return (F_ge)._b(_fD, _l, 1, _m); +case 13 : return new HSCons(_fE, new HSEOL()); +case 15 : return new HSEOL(); +} +throw('X (' + this._n + ') ' +c83.toSource()); +}); + +var F_e3=new HSFun("F_e3", 2, function(v25368, _e1){return (F_gn)._b(_e1);}); + +var F_e4=new HSFun("F_e4", 3, function(_e7, _e8, _e9){ +var c84=exprEval(((exprEval(_e7))._f[3])._ap([_e8, _e9])); +switch((c84)._t) { +case true : return _e8; +case false : return _e9; +} +throw('X (' + this._n + ') ' +c84.toSource()); +}); + +var F_e5=new HSFun("F_e5", 3, function(_e4, _e5, _e6){ +var c85=exprEval(((exprEval(_e4))._f[2])._ap([_e5, _e6])); +switch((c85)._t) { +case true : return _e5; +case false : return _e6; +} +throw('X (' + this._n + ') ' +c85.toSource()); +}); + +var F_e6=new HSFun("F_e6", 2, function(_fG, _fH){return ((F_fc)._ap([(F_fc)._ap([new HSFun("F_gs", 0, function(){return (exprEval(_fG))._f[3];}), ((F_gY)._b(F_dF))._ap([1])]), (exprEval(_fG))._f[4]]))._ap([_fH]);}); + +var F_e7=new HSFun("F_e7", 1, function(_dJ){return (F_gJ)._b(false, new HSFun("F_fV", 0, function(){return (F_fV)._ap([_dJ]);}));}); + +var F_e8=new HSFun("F_e8", 2, function(_eo, _ep){return ((exprEval(_eo))._f[0])._ap([0, _ep, F_fZ]);}); + +var F_e9=new HSFun("F_e9", 2, function(_eg, _eh){ +var c86=exprEval(_eh); +switch((c86)._t) { +case 2 : return (F_gT)._ap([F_fX]); +case 3 : return function(_ei, _ej){return (F_fc)._ap([(F_fc)._ap([(F_ex)._ap([_eg, _ej]), ((exprEval(_eg))._f[0])._ap([0, _ei])]), (F_fW)._ap([mkChar(91)])]);}((c86)._f[0], (c86)._f[1]); +} +throw('X (' + this._n + ') ' +c86.toSource()); +}); + +var F_fa=new HSFun("F_fa", 2, function(_fI, _fJ){return ((F_fc)._ap([(F_fc)._ap([new HSFun("F_gs", 0, function(){return (exprEval(_fI))._f[3];}), new HSFun("F_go", 0, function(){return (F_go)._ap([F_dH, 1]);})]), (exprEval(_fI))._f[4]]))._ap([_fJ]);}); + +var F_fb="Prelude:/winshare/src/yhc/src/packages/yhc-base-1.0/Prelude.hs: Pattern match failure in function at 592:1-594:31."; + +var F_fc=new HSFun("F_fc", 3, function(_ca, _b9, _bV){return (_b9)._ap([(_ca)._ap([_bV])]);}); + +var F_fd=new HSFun("F_fd", 1, function(_j){return (exprEval(_j))._f[0];}); + +var F_fe=new HSFun("F_fe", 1, function(_j){return (exprEval(_j))._f[1];}); + +var F_ff="Prelude:/winshare/src/yhc/src/packages/yhc-base-1.0/Prelude.hs: Pattern match failure in function at 736:1-738:32."; + +var F_fg=""; + +var F_fh=""; + +var F_fi="\\&"; + +var F_fj="\\&"; + +var F_fk=new HSFun("F_fk", 2, function(_bb, _bc){ +var c87=exprEval(_bb); +switch((c87)._t) { +case 3 : return function(_cJ, _cK){ +var c88=exprEval(_cJ); +switch((c88).valueOf()) { +case 92 : return new HSCons(new HSData((-7), [F_fj, _cK]), _bc); +default : return _bc; +} +throw('X (' + this._n + ') ' +c88.toSource()); +}((c87)._f[0], (c87)._f[1]); +default : return _bc; +} +throw('X (' + this._n + ') ' +c87.toSource()); +}); + +var F_fl="\""; + +var F_fm=new HSFun("F_fm", 3, function(_cO, _9, _ba){ +var c89=exprEval(_9); +return function(_cQ, _cR){return new HSCons(new HSData((-7), [new HSFun("F_cG", 0, function(){return (F_cG)._b(_cO, _cQ);}), _cR]), _ba);}((c89)._f[0], (c89)._f[1]); +}); + +var F_fn=new HSFun("F_fn", 2, function(_7, _8){ +var c90=exprEval(_7); +return function(_cO, _cP){return (F_gg)._b(new HSFun("F_fm", 0, function(){return (F_fm)._ap([_cO]);}), (F_ek)._ap([_cP]), _8);}((c90)._f[0], (c90)._f[1]); +}); + +var F_fo=new HSFun("F_fo", 2, function(_bd, _be){ +var c91=exprEval(_bd); +return function(_cS, _cT){return new HSCons(new HSData((-7), [new HSCons(mkChar(34), _cS), _cT]), _be);}((c91)._f[0], (c91)._f[1]); +}); + +var F_fp="\'"; + +var F_fq="\'"; + +var F_fr=new HSFun("F_fr", 3, function(_cU, _cX, _j8){return new HSCons(new HSData((-7), [new HSCons(mkChar(39), (F_cG)._b(_cU, F_fq)), _cX]), _j8);}); + +var F_fs=new HSFun("F_fs", 2, function(_5, _6){ +var c92=exprEval(_5); +return function(_cU, _cV){ +var c93=exprEval(_cV); +switch((c93)._t) { +case 3 : return function(_cW, _cX){ +var c94=exprEval(_cW); +switch((c94).valueOf()) { +case 39 : return (F_gf)._b((F_dl)._b(F_c8, _cU, F_fp), new HSFun("F_fr", 0, function(){return (F_fr)._ap([_cU, _cX]);}), _6); +default : return _6; +} +throw('X (' + this._n + ') ' +c94.toSource()); +}((c93)._f[0], (c93)._f[1]); +default : return _6; +} +throw('X (' + this._n + ') ' +c93.toSource()); +}((c92)._f[0], (c92)._f[1]); +}); + +var F_ft="eE"; + +var F_fu="+-"; + +var F_fv=new HSFun("F_fv", 4, function(_cZ, _c1, _bl, _bm){ +var c95=exprEval(_bl); +return function(_c3, _c4){return new HSCons(new HSData((-7), [new HSCons(_cZ, new HSCons(_c1, _c3)), _c4]), _bm);}((c95)._f[0], (c95)._f[1]); +}); + +var F_fw=new HSFun("F_fw", 3, function(_cZ, _bj, _bk){ +var c96=exprEval(_bj); +switch((c96)._t) { +case 3 : return function(_c1, _c2){return (F_gf)._b(((F_gm)._b(F_c8, _c1))._ap([F_fu]), new HSFun("F_gg", 0, function(){return (F_gg)._ap([new HSFun("F_fv", 0, function(){return (F_fv)._ap([_cZ, _c1]);}), (F_cx)._ap([_c2])]);}), _bk);}((c96)._f[0], (c96)._f[1]); +default : return _bk; +} +throw('X (' + this._n + ') ' +c96.toSource()); +}); + +var F_fx=new HSFun("F_fx", 3, function(_cZ, _bn, _bo){ +var c97=exprEval(_bn); +return function(_c5, _c6){return new HSCons(new HSData((-7), [new HSCons(_cZ, _c5), _c6]), _bo);}((c97)._f[0], (c97)._f[1]); +}); + +var F_fy=""; + +var F_fz=new HSFun("F_fz", 3, function(_dd, _bh, _bi){ +var c98=exprEval(_bh); +return function(_df, _dg){return new HSCons(new HSData((-7), [new HSCons(mkChar(46), (F_cG)._b(_dd, _df)), _dg]), _bi);}((c98)._f[0], (c98)._f[1]); +}); + +var F_fA=new HSFun("F_fA", 2, function(_bf, _bg){ +var c99=exprEval(_bf); +return function(_dd, _de){return (F_gg)._b(new HSFun("F_fz", 0, function(){return (F_fz)._ap([_dd]);}), (F_er)._ap([_de]), _bg);}((c99)._f[0], (c99)._f[1]); +}); + +var F_fB="_\'"; + +var F_fC="!@#$%&*+./<=>\u003f\\^|:-~"; + +var F_fD=",;()[]{}`"; + +var F_fE=new HSFun("F_fE", 3, function(_cC, _bp, _bq){ +var c100=exprEval(_bp); +return function(_dl, _dm){return new HSCons(new HSData((-7), [new HSCons(_cC, _dl), _dm]), _bq);}((c100)._f[0], (c100)._f[1]); +}); + +var F_fF=new HSFun("F_fF", 3, function(_cC, _br, _bs){ +var c101=exprEval(_br); +return function(_dn, _do){return new HSCons(new HSData((-7), [new HSCons(_cC, _dn), _do]), _bs);}((c101)._f[0], (c101)._f[1]); +}); + +var F_fG=new HSFun("F_fG", 4, function(_cC, _dp, _bv, _bw){ +var c102=exprEval(_bv); +return function(_dr, _ds){return new HSCons(new HSData((-7), [new HSCons(_cC, (F_cG)._b(_dp, _dr)), _ds]), _bw);}((c102)._f[0], (c102)._f[1]); +}); + +var F_fH=new HSFun("F_fH", 3, function(_cC, _bt, _bu){ +var c103=exprEval(_bt); +return function(_dp, _dq){return (F_gg)._b(new HSFun("F_fG", 0, function(){return (F_fG)._ap([_cC, _dp]);}), (F_eq)._ap([_dq]), _bu);}((c103)._f[0], (c103)._f[1]); +}); + +var F_fI="Prelude:/winshare/src/yhc/src/packages/yhc-base-1.0/Prelude.hs: Pattern match failure in function at 1664:1-1701:35."; + +var F_fJ=new HSFun("F_fJ", 3, function(_dB, _bF, _bG){ +var c104=exprEval(_bF); +return function(_dD, _dE){ +var c105=exprEval(_dD); +switch((c105)._t) { +case 3 : return function(_dF, _dG){ +var c106=exprEval(_dF); +switch((c106).valueOf()) { +case 41 : var c107=exprEval(_dG); +switch((c107)._t) { +case 2 : return new HSCons(new HSData((-7), [_dB, _dE]), _bG); +default : return _bG; +} +throw('X (' + this._n + ') ' +c107.toSource()); +default : return _bG; +} +throw('X (' + this._n + ') ' +c106.toSource()); +}((c105)._f[0], (c105)._f[1]); +default : return _bG; +} +throw('X (' + this._n + ') ' +c105.toSource()); +}((c104)._f[0], (c104)._f[1]); +}); + +var F_fK=new HSFun("F_fK", 2, function(_bD, _bE){ +var c108=exprEval(_bD); +return function(_dB, _dC){return (F_gg)._b(new HSFun("F_fJ", 0, function(){return (F_fJ)._ap([_dB]);}), (F_gz)._b(_dC), _bE);}((c108)._f[0], (c108)._f[1]); +}); + +var F_fL=new HSFun("F_fL", 3, function(_du, _bB, _bC){ +var c109=exprEval(_bB); +return function(_dx, _dy){ +var c110=exprEval(_dx); +switch((c110)._t) { +case 3 : return function(_dz, _dA){ +var c111=exprEval(_dz); +switch((c111).valueOf()) { +case 40 : var c112=exprEval(_dA); +switch((c112)._t) { +case 2 : return (F_gg)._b(F_fK, ((F_es)._ap([_du]))._ap([_dy]), _bC); +default : return _bC; +} +throw('X (' + this._n + ') ' +c112.toSource()); +default : return _bC; +} +throw('X (' + this._n + ') ' +c111.toSource()); +}((c110)._f[0], (c110)._f[1]); +default : return _bC; +} +throw('X (' + this._n + ') ' +c110.toSource()); +}((c109)._f[0], (c109)._f[1]); +}); + +var F_fM=new HSFun("F_fM", 2, function(_lm, _ln){ +var c113=exprEval(_lm); +return function(_dM, _dN){ +var c114=exprEval(_dM); +switch((c114)._t) { +case 3 : return function(_dO, _dP){ +var c115=exprEval(_dO); +switch((c115).valueOf()) { +case 93 : var c116=exprEval(_dP); +switch((c116)._t) { +case 2 : return new HSCons(new HSData((-7), [new HSEOL(), _dN]), _ln); +default : return _ln; +} +throw('X (' + this._n + ') ' +c116.toSource()); +default : return _ln; +} +throw('X (' + this._n + ') ' +c115.toSource()); +}((c114)._f[0], (c114)._f[1]); +default : return _ln; +} +throw('X (' + this._n + ') ' +c114.toSource()); +}((c113)._f[0], (c113)._f[1]); +}); + +var F_fN=new HSFun("F_fN", 3, function(_dU, _ls, _lt){ +var c117=exprEval(_ls); +return function(_dW, _dX){return new HSCons(new HSData((-7), [new HSCons(_dU, _dW), _dX]), _lt);}((c117)._f[0], (c117)._f[1]); +}); + +var F_fO=new HSFun("F_fO", 3, function(_dK, _lq, _lr){ +var c118=exprEval(_lq); +return function(_dU, _dV){return (F_gg)._b(new HSFun("F_fN", 0, function(){return (F_fN)._ap([_dU]);}), (F_ew)._ap([_dK, _dV]), _lr);}((c118)._f[0], (c118)._f[1]); +}); + +var F_fP=new HSFun("F_fP", 3, function(_dK, _lo, _lp){ +var c119=exprEval(_lo); +return function(_dQ, _dR){ +var c120=exprEval(_dQ); +switch((c120)._t) { +case 3 : return function(_dS, _dT){ +var c121=exprEval(_dS); +switch((c121).valueOf()) { +case 44 : var c122=exprEval(_dT); +switch((c122)._t) { +case 2 : return (F_gg)._b(new HSFun("F_fO", 0, function(){return (F_fO)._ap([_dK]);}), ((exprEval(_dK))._f[0])._ap([0, _dR]), _lp); +default : return _lp; +} +throw('X (' + this._n + ') ' +c122.toSource()); +default : return _lp; +} +throw('X (' + this._n + ') ' +c121.toSource()); +}((c120)._f[0], (c120)._f[1]); +default : return _lp; +} +throw('X (' + this._n + ') ' +c120.toSource()); +}((c119)._f[0], (c119)._f[1]); +}); + +var F_fQ=new HSFun("F_fQ", 2, function(_lg, _lh){ +var c123=exprEval(_lg); +return function(_d0, _d1){ +var c124=exprEval(_d0); +switch((c124)._t) { +case 3 : return function(_d2, _d3){ +var c125=exprEval(_d2); +switch((c125).valueOf()) { +case 93 : var c126=exprEval(_d3); +switch((c126)._t) { +case 2 : return new HSCons(new HSData((-7), [new HSEOL(), _d1]), _lh); +default : return _lh; +} +throw('X (' + this._n + ') ' +c126.toSource()); +default : return _lh; +} +throw('X (' + this._n + ') ' +c125.toSource()); +}((c124)._f[0], (c124)._f[1]); +default : return _lh; +} +throw('X (' + this._n + ') ' +c124.toSource()); +}((c123)._f[0], (c123)._f[1]); +}); + +var F_fR=new HSFun("F_fR", 3, function(_d4, _lk, _ll){ +var c127=exprEval(_lk); +return function(_d6, _d7){return new HSCons(new HSData((-7), [new HSCons(_d4, _d6), _d7]), _ll);}((c127)._f[0], (c127)._f[1]); +}); + +var F_fS=new HSFun("F_fS", 3, function(_dY, _li, _lj){ +var c128=exprEval(_li); +return function(_d4, _d5){return (F_gg)._b(new HSFun("F_fR", 0, function(){return (F_fR)._ap([_d4]);}), (F_ew)._ap([_dY, _d5]), _lj);}((c128)._f[0], (c128)._f[1]); +}); + +var F_fT=new HSFun("F_fT", 2, function(_lx, _ly){return new HSCons(_lx, _ly);}); + +var F_fU=new HSFun("F_fU", 3, function(_dJ, _lv, _lw){ +var c129=exprEval(_lv); +return function(_d8, _d9){ +var c130=exprEval(_d8); +switch((c130)._t) { +case 3 : return function(_ea, _eb){ +var c131=exprEval(_ea); +switch((c131).valueOf()) { +case 91 : var c132=exprEval(_eb); +switch((c132)._t) { +case 2 : return (F_gg)._b(F_fT, (F_ev)._ap([_dJ, _d9]), _lw); +default : return _lw; +} +throw('X (' + this._n + ') ' +c132.toSource()); +default : return _lw; +} +throw('X (' + this._n + ') ' +c131.toSource()); +}((c130)._f[0], (c130)._f[1]); +default : return _lw; +} +throw('X (' + this._n + ') ' +c130.toSource()); +}((c129)._f[0], (c129)._f[1]); +}); + +var F_fV=new HSFun("F_fV", 2, function(_dJ, _lu){return (F_gg)._b(new HSFun("F_fU", 0, function(){return (F_fU)._ap([_dJ]);}), (F_gz)._b(_lu), new HSEOL());}); + +var F_fW=new HSFun("F_fW", 2, function(_ka, _j9){return new HSCons(_ka, _j9);}); + +var F_fX="[]"; + +var F_fY=","; + +var F_fZ=""; + +var F_f0="Prelude.gcd: gcd 0 0 is undefined."; + +var F_f1=new HSFun("F_f1", 3, function(_eO, _bz, _bA){ +var c133=exprEval(_bz); +return function(_eQ, _eR){ +var c134=exprEval(_eQ); +switch((c134)._t) { +case 2 : var c135=exprEval(_eR); +switch((c135)._t) { +case 2 : return new HSCons(_eO, _bA); +default : return _bA; +} +throw('X (' + this._n + ') ' +c135.toSource()); +default : return _bA; +} +throw('X (' + this._n + ') ' +c134.toSource()); +}((c133)._f[0], (c133)._f[1]); +}); + +var F_f2=new HSFun("F_f2", 2, function(_bx, _by){ +var c136=exprEval(_bx); +return function(_eO, _eP){return (F_gg)._b(new HSFun("F_f1", 0, function(){return (F_f1)._ap([_eO]);}), (F_gz)._b(_eP), _by);}((c136)._f[0], (c136)._f[1]); +}); + +var F_f3="Prelude.read: no parse"; + +var F_f4="Prelude.read: ambiguous parse"; + +var F_f5="Integer"; + +var F_f6=new HSFun("F_f6", 1, function(_i){return (exprEval(_i))._f[0];}); + +var F_f7=new HSFun("F_f7", 1, function(_i){return (exprEval(_i))._f[1];}); + +var F_f8=new HSFun("F_f8", 2, function(_hg, _hj){ +var c137=exprEval(_hj); +return function(_hk, _hl){return new HSData((-7), [((exprEval(_hg))._f[7])._ap([_hk]), _hl]);}((c137)._f[0], (c137)._f[1]); +}); + +var F_f9=new HSFun("F_f9", 2, function(_hf, _ki){return (F_ez)._ap([F_dF, _hf, _ki]);}); + +var F_ga="Int"; + +var F_gb=new HSFun("F_gb", 2, function(_kc, _kb){return new HSCons(_kc, _kb);}); + +var F_gc="PreludeList.foldl1: empty list"; + +var F_gd=new HSFun("F_gd", 4, function(_fv, _fw, _fx, _fy){ +var c138=exprEval((F_d9)._b(_fw, _fy)); +switch((c138)._t) { +case 17 : return new HSEOL(); +case 13 : return new HSCons(((exprEval(_fv))._f[4])._ap([_fw]), new HSEOL()); +case 15 : return new HSCons(((exprEval(_fv))._f[4])._ap([_fw]), (F_gd)._b(_fv, (exprEval(_fw))+(exprEval(_fx)), _fx, _fy)); +} +throw('X (' + this._n + ') ' +c138.toSource()); +}); + +var F_ge=new HSFun("F_ge", 4, function(_fr, _fs, _ft, _fu){ +var c139=exprEval((F_d9)._b(_fs, _fu)); +switch((c139)._t) { +case 17 : return new HSCons(((exprEval(_fr))._f[4])._ap([_fs]), (F_ge)._b(_fr, (exprEval(_fs))+(exprEval(_ft)), _ft, _fu)); +case 13 : return new HSCons(((exprEval(_fr))._f[4])._ap([_fs]), new HSEOL()); +case 15 : return new HSEOL(); +} +throw('X (' + this._n + ') ' +c139.toSource()); +}); + +var F_gf=new HSFun("F_gf", 3, function(_b6, _b7, _b8){ +var c140=exprEval(_b6); +switch((c140)._t) { +case true : return (_b7)._ap([_b8]); +case false : return _b8; +} +throw('X (' + this._n + ') ' +c140.toSource()); +}); + +var F_gg=new HSFun("F_gg", 3, function(_bX, _bY, _bZ){ +var c141=exprEval(_bY); +switch((c141)._t) { +case 2 : return _bZ; +case 3 : return function(_b0, _b1){return (_bX)._ap([_b0, new HSFun("F_gg", 0, function(){return (F_gg)._b(_bX, _b1, _bZ);})]);}((c141)._f[0], (c141)._f[1]); +} +throw('X (' + this._n + ') ' +c141.toSource()); +}); + +var F_gh=new HSFun("F_gh", 1, function(_jI){return (exprEval(_jI))._f[8];}); + +var F_gi=new HSFun("F_gi", 1, function(_cm){return (F_fc)._ap([new HSFun("F_gB", 0, function(){return (F_gB)._ap([_cm]);}), F_gE]);}); + +var F_gj=new HSFun("F_gj", 1, function(_jr){return (exprEval(_jr))._f[5];}); + +var F_gk=new HSFun("F_gk", 1, function(_jY){return (exprEval(_jY))._f[2];}); + +var F_gl=new HSFun("F_gl", 2, function(_b2, _b3){ +var c142=exprEval(_b3); +switch((c142)._t) { +case 2 : return new HSEOL(); +case 3 : return function(_b4, _b5){ +var c143=exprEval((_b2)._ap([_b4])); +switch((c143)._t) { +case true : return (F_gl)._b(_b2, _b5); +case false : var c144=exprEval(F_gF); +switch((c144)._t) { +case true : return _b3; +case false : return (F_gn)._b(F_fb); +} +throw('X (' + this._n + ') ' +c144.toSource()); +} +throw('X (' + this._n + ') ' +c143.toSource()); +}((c142)._f[0], (c142)._f[1]); +} +throw('X (' + this._n + ') ' +c142.toSource()); +}); + +var F_gm=new HSFun("F_gm", 2, function(_cn, _co){return (F_gi)._b(((exprEval(_cn))._f[1])._ap([_co]));}); + +var F_gn=new HSFun("F_gn", 1, function(a){ +throw('E ' + exprEval(a).toString()); return undefined;}); + +var F_go=new HSFun("F_go", 3, function(_eH, _eI, _eJ){return (_eH)._ap([_eJ, _eI]);}); + +var F_gp=new HSFun("F_gp", 3, function(_ij, _ik, _il){ +var c145=exprEval(_il); +switch((c145)._t) { +case 2 : return _ik; +case 3 : return function(_im, _in){return (F_gp)._b(_ij, (_ij)._ap([_ik, _im]), _in);}((c145)._f[0], (c145)._f[1]); +} +throw('X (' + this._n + ') ' +c145.toSource()); +}); + +var F_gq=new HSFun("F_gq", 2, function(_ip, _iq){ +var c146=exprEval(_iq); +switch((c146)._t) { +case 2 : return (F_gn)._b(F_gc); +case 3 : return function(_ir, _is){return (F_gp)._b(_ip, _ir, _is);}((c146)._f[0], (c146)._f[1]); +} +throw('X (' + this._n + ') ' +c146.toSource()); +}); + +var F_gr=new HSFun("F_gr", 3, function(_cb, _cc, _cd){ +var c147=exprEval(_cd); +switch((c147)._t) { +case 2 : return _cc; +case 3 : return function(_ce, _cf){return (_cb)._ap([_ce, new HSFun("F_gr", 0, function(){return (F_gr)._b(_cb, _cc, _cf);})]);}((c147)._f[0], (c147)._f[1]); +} +throw('X (' + this._n + ') ' +c147.toSource()); +}); + +var F_gs=new HSFun("F_gs", 1, function(_i0){return (exprEval(_i0))._f[3];}); + +var F_gt=new HSFun("F_gt", 1, function(_jH){return (exprEval(_jH))._f[7];}); + +var F_gu=new HSFun("F_gu", 2, function(_eZ, _e0){return (F_fc)._ap([new HSFun("F_g0", 0, function(){return (exprEval(_eZ))._f[6];}), (exprEval(_e0))._f[7]]);}); + +var F_gv=new HSFun("F_gv", 1, function(_eu){return (exprEval(_eu))._f[0];}); + +var F_gw=new HSFun("F_gw", 3, function(_eA, _eB, _eC){ +var c148=exprEval(((exprEval((exprEval((exprEval((exprEval(_eA))._f[0]))._f[0]))._f[0]))._f[1])._ap([_eB, ((exprEval((exprEval((exprEval(_eA))._f[0]))._f[0]))._f[7])._ap([0])])); +switch((c148)._t) { +case true : var c149=exprEval(((exprEval((exprEval((exprEval((exprEval(_eA))._f[0]))._f[0]))._f[0]))._f[1])._ap([_eC, ((exprEval((exprEval((exprEval(_eA))._f[0]))._f[0]))._f[7])._ap([0])])); +switch((c149)._t) { +case true : return (F_gn)._b(F_f0); +case false : return (F_eu)._ap([_eA, ((exprEval((exprEval((exprEval(_eA))._f[0]))._f[0]))._f[8])._ap([_eB]), ((exprEval((exprEval((exprEval(_eA))._f[0]))._f[0]))._f[8])._ap([_eC])]); +} +throw('X (' + this._n + ') ' +c149.toSource()); +case false : return (F_eu)._ap([_eA, ((exprEval((exprEval((exprEval(_eA))._f[0]))._f[0]))._f[8])._ap([_eB]), ((exprEval((exprEval((exprEval(_eA))._f[0]))._f[0]))._f[8])._ap([_eC])]); +} +throw('X (' + this._n + ') ' +c148.toSource()); +}); + +var F_gx=new HSFun("F_gx", 1, function(_eG){return _eG;}); + +var F_gy=new HSFun("F_gy", 1, function(_iA){ +var c150=exprEval(_iA); +switch((c150)._t) { +case 2 : return 0; +case 3 : return function(_iB, _iC){return (F_ey)._ap([1, _iC]);}((c150)._f[0], (c150)._f[1]); +} +throw('X (' + this._n + ') ' +c150.toSource()); +}); + +var F_gz=new HSFun("F_gz", 1, function(_cB){ +var c151=exprEval(_cB); +switch((c151)._t) { +case 2 : return new HSCons(new HSData((-7), [F_fg, F_fh]), new HSEOL()); +case 3 : return function(_cC, _cD){ +var c152=exprEval((F_Z)._b(_cC)); +switch((c152)._t) { +case true : return (F_gz)._b((F_gl)._b(F_Z, _cD)); +case false : var c153=exprEval(_cC); +switch((c153).valueOf()) { +case 34 : return (F_gg)._b(F_fo, (F_ek)._ap([_cD]), new HSEOL()); +case 39 : return (F_gg)._b(F_fs, (F_1)._b(_cD), new HSEOL()); +default : var c154=exprEval((F_em)._ap([_cC])); +switch((c154)._t) { +case true : return new HSCons(new HSData((-7), [new HSCons(_cC, new HSEOL()), _cD]), new HSEOL()); +case false : var c155=exprEval((F_en)._ap([_cC])); +switch((c155)._t) { +case true : return (F_gg)._b(new HSFun("F_fE", 0, function(){return (F_fE)._ap([_cC]);}), new HSCons((F_gX)._b(F_en, _cD), new HSEOL()), new HSEOL()); +case false : var c156=exprEval((F_eo)._ap([_cC])); +switch((c156)._t) { +case true : return (F_gg)._b(new HSFun("F_fF", 0, function(){return (F_fF)._ap([_cC]);}), new HSCons((F_gX)._b(F_ep, _cD), new HSEOL()), new HSEOL()); +case false : var c157=exprEval((F_bg)._b(_cC)); +switch((c157)._t) { +case true : return (F_gg)._b(new HSFun("F_fH", 0, function(){return (F_fH)._ap([_cC]);}), new HSCons((F_gX)._b(F_bg, _cD), new HSEOL()), new HSEOL()); +case false : var c158=exprEval(F_gF); +switch((c158)._t) { +case true : return new HSEOL(); +case false : return (F_gn)._b(F_fI); +} +throw('X (' + this._n + ') ' +c158.toSource()); +} +throw('X (' + this._n + ') ' +c157.toSource()); +} +throw('X (' + this._n + ') ' +c156.toSource()); +} +throw('X (' + this._n + ') ' +c155.toSource()); +} +throw('X (' + this._n + ') ' +c154.toSource()); +} +throw('X (' + this._n + ') ' +c153.toSource()); +} +throw('X (' + this._n + ') ' +c152.toSource()); +}((c151)._f[0], (c151)._f[1]); +} +throw('X (' + this._n + ') ' +c151.toSource()); +}); + +var F_gA=new HSFun("F_gA", 3, function(_it, _iu, _iv){ +var c159=exprEval(_iv); +switch((c159)._t) { +case 2 : return new HSData(18, []); +case 3 : return function(_iw, _ix){ +var c160=exprEval(_iw); +return function(_iy, _iz){ +var c161=exprEval(((exprEval(_it))._f[1])._ap([_iu, _iy])); +switch((c161)._t) { +case true : return new HSData(16, [_iz]); +case false : return (F_gA)._b(_it, _iu, _ix); +} +throw('X (' + this._n + ') ' +c161.toSource()); +}((c160)._f[0], (c160)._f[1]); +}((c159)._f[0], (c159)._f[1]); +} +throw('X (' + this._n + ') ' +c159.toSource()); +}); + +var F_gB=new HSFun("F_gB", 2, function(_ci, _cj){ +var c162=exprEval(_cj); +switch((c162)._t) { +case 2 : return new HSEOL(); +case 3 : return function(_ck, _cl){return new HSCons((_ci)._ap([_ck]), (F_gB)._b(_ci, _cl));}((c162)._f[0], (c162)._f[1]); +} +throw('X (' + this._n + ') ' +c162.toSource()); +}); + +var F_gC=new HSFun("F_gC", 1, function(_jF){return (exprEval(_jF))._f[5];}); + +var F_gD=new HSFun("F_gD", 1, function(_eX){ +var c163=exprEval(_eX); +switch((c163)._t) { +case true : return false; +case false : return true; +} +throw('X (' + this._n + ') ' +c163.toSource()); +}); + +var F_gE=new HSFun("F_gE", 0, function(){return (F_gr)._ap([F_g1, false]);}); + +var F_gF=new HSFun("F_gF", 0, function(){return true;}); + +var F_gG=new HSFun("F_gG", 1, function(_j2){return (exprEval(_j2))._f[7];}); + +var F_gH=new HSFun("F_gH", 1, function(_jZ){return (exprEval(_jZ))._f[4];}); + +var F_gI=new HSFun("F_gI", 2, function(_eM, _eN){ +var c164=exprEval((F_gg)._b(F_f2, ((F_gK)._b(_eM))._ap([_eN]), new HSEOL())); +switch((c164)._t) { +case 2 : return (F_gn)._b(F_f3); +case 3 : return function(_eS, _eT){ +var c165=exprEval(_eT); +switch((c165)._t) { +case 2 : return _eS; +default : return (F_gn)._b(F_f4); +} +throw('X (' + this._n + ') ' +c165.toSource()); +}((c164)._f[0], (c164)._f[1]); +} +throw('X (' + this._n + ') ' +c164.toSource()); +}); + +var F_gJ=new HSFun("F_gJ", 2, function(_dt, _du){ +var c166=exprEval(_dt); +switch((c166)._t) { +case true : return (F_et)._ap([_du]); +case false : return (F_es)._ap([_du]); +} +throw('X (' + this._n + ') ' +c166.toSource()); +}); + +var F_gK=new HSFun("F_gK", 1, function(_dH){return ((exprEval(_dH))._f[0])._ap([0]);}); + +var F_gL=new HSFun("F_gL", 1, function(_i4){return (exprEval(_i4))._f[0];}); + +var F_gM=new HSFun("F_gM", 1, function(_j0){return (exprEval(_j0))._f[5];}); + +var F_gN=new HSFun("F_gN", 1, function(_j7){return (exprEval(_j7))._f[3];}); + +var F_gO=new HSFun("F_gO", 0, function(){return (F_gp)._ap([new HSFun("F_go", 0, function(){return (F_go)._ap([F_gb]);}), new HSEOL()]);}); + +var F_gP=new HSFun("F_gP", 2, function(a, b){ +exprEval(a); return b;}); + +var F_gQ=new HSFun("F_gQ", 1, function(_ja){return (exprEval(_ja))._f[3];}); + +var F_gR=new HSFun("F_gR", 0, function(){return F_fW;}); + +var F_gS=new HSFun("F_gS", 2, function(_eU, _eV){ +var c167=exprEval(_eU); +switch((c167)._t) { +case true : return (F_fc)._ap([(F_fc)._ap([(F_fW)._ap([mkChar(41)]), _eV]), (F_fW)._ap([mkChar(40)])]); +case false : return _eV; +} +throw('X (' + this._n + ') ' +c167.toSource()); +}); + +var F_gT=new HSFun("F_gT", 0, function(){return F_cG;}); + +var F_gU=new HSFun("F_gU", 1, function(_i9){return (exprEval(_i9))._f[0];}); + +var F_gV=new HSFun("F_gV", 1, function(_jG){return (exprEval(_jG))._f[6];}); + +var F_gW=new HSFun("F_gW", 1, function(_ex){return (exprEval(_ex))._f[1];}); + +var F_gX=new HSFun("F_gX", 2, function(_ct, _cu){ +var c168=exprEval(_cu); +switch((c168)._t) { +case 2 : return new HSData((-7), [new HSEOL(), new HSEOL()]); +case 3 : return function(_cv, _cw){ +var c169=exprEval((_ct)._ap([_cv])); +switch((c169)._t) { +case true : var _j=new HSFun("_j", 0, function(){return (F_gX)._b(_ct, _cw);}); +var _v=new HSFun("_v", 0, function(){return (exprEval(_j))._f[0];}); +var _w=new HSFun("_w", 0, function(){return (exprEval(_j))._f[1];}); +return new HSData((-7), [new HSCons(_cv, _v), _w]); +case false : var c170=exprEval(F_gF); +switch((c170)._t) { +case true : return new HSData((-7), [new HSEOL(), _cu]); +case false : return (F_gn)._b(F_ff); +} +throw('X (' + this._n + ') ' +c170.toSource()); +} +throw('X (' + this._n + ') ' +c169.toSource()); +}((c168)._f[0], (c168)._f[1]); +} +throw('X (' + this._n + ') ' +c168.toSource()); +}); + +var F_gY=new HSFun("F_gY", 1, function(_eW){return (F_go)._ap([(exprEval(_eW))._f[4]]);}); + +var F_gZ=new HSFun("F_gZ", 1, function(_i1){return (exprEval(_i1))._f[4];}); + +var F_g0=new HSFun("F_g0", 1, function(_j1){return (exprEval(_j1))._f[6];}); + +var F_g1=new HSFun("F_g1", 2, function(_cg, _ch){ +var c171=exprEval(_cg); +switch((c171)._t) { +case true : return true; +case false : return _ch; +} +throw('X (' + this._n + ') ' +c171.toSource()); +}); + +var F_g2=new HSFun("F_g2", 2, function(_y, _lb){return (F_5)._b(((exprEval(_lb))._f[7])._ap([0]), (F_gA)._b(F_c8, _y, (F_hc)._b(_lb)));}); + +var F_g3=new HSFun("F_g3", 2, function(_kR, _kS){ +var c172=exprEval(_kS); +switch((c172)._t) { +case 2 : return ((exprEval(_kR))._f[7])._ap([0]); +case 3 : return function(_kT, _kU){return ((exprEval(_kR))._f[3])._ap([((exprEval(_kR))._f[7])._ap([1]), (F_g3)._ap([_kR, _kU])]);}((c172)._f[0], (c172)._f[1]); +} +throw('X (' + this._n + ') ' +c172.toSource()); +}); + +var F_g4=new HSFun("F_g4", 1, function(_x){return (exprEval(_x))._f[0];}); + +var F_g5=new HSFun("F_g5", 1, function(_x){return (exprEval(_x))._f[1];}); + +var F_g6="Roman: Pattern match failure in function at 54:1-56:16."; + +var F_g7="Roman: Pattern match failure in function at 38:1-43:55."; + +var F_g8=""; + +var F_g9=new HSFun("F_g9", 4, function(_kZ, _k0, _k1, _k2){ +var c173=exprEval(((exprEval(_k0))._f[1])._ap([_k1, _k2])); +switch((c173)._t) { +case true : return ((exprEval(_kZ))._f[4])._ap([_k2, _k1]); +case false : var c174=exprEval(((exprEval(_k0))._f[4])._ap([_k1, _k2])); +switch((c174)._t) { +case true : return ((exprEval(_kZ))._f[3])._ap([_k2, _k1]); +case false : return (F_gn)._b(F_g6); +} +throw('X (' + this._n + ') ' +c174.toSource()); +} +throw('X (' + this._n + ') ' +c173.toSource()); +}); + +var F_ha=new HSFun("F_ha", 0, function(){return (F_fc)._ap([(F_fc)._ap([new HSFun("F_gB", 0, function(){return (F_gB)._ap([F_2]);}), new HSFun("F_hb", 0, function(){return (F_hb)._ap([F_dF]);})]), new HSFun("F_gr", 0, function(){return (F_gr)._ap([new HSFun("F_g9", 0, function(){return (F_g9)._ap([F_dF, F_d4]);}), 0]);})]);}); + +var F_hb=new HSFun("F_hb", 2, function(_kN, _kO){ +var c175=exprEval(_kO); +switch((c175)._t) { +case 2 : return new HSEOL(); +case 3 : return function(_kP, _kQ){ +var _x=new HSFun("_x", 0, function(){return (F_gX)._b(new HSFun("F_da", 0, function(){return (F_da)._ap([_kP]);}), _kO);}); +var _z=new HSFun("_z", 0, function(){return (exprEval(_x))._f[0];}); +var _A=new HSFun("_A", 0, function(){return (exprEval(_x))._f[1];}); +return new HSCons(((exprEval(_kN))._f[2])._ap([new HSFun("F_4", 0, function(){return (F_4)._b((F_gA)._b(F_c8, _kP, (F_hc)._b(_kN)));}), (F_g3)._ap([_kN, _z])]), (F_hb)._b(_kN, _A)); +}((c175)._f[0], (c175)._f[1]); +} +throw('X (' + this._n + ') ' +c175.toSource()); +}); + +var F_hc=new HSFun("F_hc", 1, function(_kM){return new HSCons(new HSData((-7), [mkChar(73), ((exprEval(_kM))._f[7])._ap([1])]), new HSCons(new HSData((-7), [mkChar(86), ((exprEval(_kM))._f[7])._ap([5])]), new HSCons(new HSData((-7), [mkChar(88), ((exprEval(_kM))._f[7])._ap([10])]), new HSCons(new HSData((-7), [mkChar(76), ((exprEval(_kM))._f[7])._ap([50])]), new HSCons(new HSData((-7), [mkChar(67), ((exprEval(_kM))._f[7])._ap([100])]), new HSCons(new HSData((-7), [mkChar(68), ((exprEval(_kM))._f[7])._ap([500])]), new HSCons(new HSData((-7), [mkChar(77), ((exprEval(_kM))._f[7])._ap([1000])]), new HSEOL())))))));}); + +var F_hd=new HSFun("F_hd", 0, function(){return new HSCons(new HSData((-7), [mkChar(86), mkChar(73)]), new HSCons(new HSData((-7), [mkChar(88), mkChar(73)]), new HSCons(new HSData((-7), [mkChar(76), mkChar(88)]), new HSCons(new HSData((-7), [mkChar(67), mkChar(88)]), new HSCons(new HSData((-7), [mkChar(68), mkChar(67)]), new HSCons(new HSData((-7), [mkChar(77), mkChar(67)]), new HSEOL()))))));}); + +var F_he=new HSFun("F_he", 4, function(_k3, _k4, _k5, _k6){ +var c176=exprEval(_k5); +return function(_k7, _k8){ +var c177=exprEval(_k6); +return function(_k9, _la){ +var _y=new HSFun("_y", 0, function(){return (F_5)._b(mkChar(0), (F_gA)._b(F_c8, _k7, F_hd));}); +var c178=exprEval(((exprEval(_k4))._f[3])._ap([_k9, _k8])); +switch((c178)._t) { +case true : return (F_he)._b(_k3, _k4, _k5, new HSData((-7), [((exprEval(_k3))._f[4])._ap([_k9, _k8]), new HSCons(_k7, _la)])); +case false : var c179=exprEval(((exprEval(_k4))._f[3])._ap([((exprEval(_k3))._f[3])._ap([_k9, ((F_g2)._ap([_y]))._ap([_k3])]), _k8])); +switch((c179)._t) { +case true : return new HSData((-7), [((exprEval(_k3))._f[3])._ap([((exprEval(_k3))._f[4])._ap([_k9, _k8]), ((F_g2)._ap([_y]))._ap([_k3])]), new HSCons(_k7, new HSCons(_y, _la))]); +case false : var c180=exprEval(F_gF); +switch((c180)._t) { +case true : return new HSData((-7), [_k9, _la]); +case false : return (F_gn)._b(F_g7); +} +throw('X (' + this._n + ') ' +c180.toSource()); +} +throw('X (' + this._n + ') ' +c179.toSource()); +} +throw('X (' + this._n + ') ' +c178.toSource()); +}((c177)._f[0], (c177)._f[1]); +}((c176)._f[0], (c176)._f[1]); +}); + +var F_hf=new HSFun("F_hf", 1, function(_lc){return ((F_fc)._ap([F_gW, F_gO]))._ap([new HSFun("F_gr", 0, function(){return (F_gr)._b(new HSFun("F_he", 0, function(){return (F_he)._ap([F_dF, F_d4]);}), new HSData((-7), [_lc, F_g8]), (F_hc)._b(F_dF));})]);}); + +var F_hg=new HSFun("F_hg", 1, function(a){ +return Number(exprEval(a)).toString();}); + +var F_hh=new HSFun("F_hh", 2, function(_kq, _kr){return (F_cG)._b((F_hg)._ap([_kq]), _kr);}); + +var F_hi="return Number(exprEval(a)).toString();"; + +var F_hj="return 0 - Number(exprEval(a));"; + +var F_hk="var ea = exprEval(a); if (ea>0) return 1; else if (ea<0) return -1; else return 0;"; + +var F_hl="return Math.abs(exprEval(a));"; + +var F_hm="return a;"; + +var F_hn="return a;"; + +var F_ho="return Number(exprEval(a)) < Number(exprEval(b));"; + +var F_hp="return Number(exprEval(a)) <= Number(exprEval(b));"; + +var F_hq="return Number(exprEval(a)) > Number(exprEval(b));"; + +var F_hr="return Number(exprEval(a)) >= Number(exprEval(b));"; + +var F_hs="return Number(exprEval(a)) !== Number(exprEval(b));"; + +var F_ht="return Number(exprEval(a)) === Number(exprEval(b));"; + +var F_hu="return 0 - Number(exprEval(a));"; + +var F_hv="return exprEval(a) * exprEval(b);"; + +var F_hw="return exprEval(a) - exprEval(b);"; + +var F_hx="return exprEval(a) + exprEval(b);"; + +var F_hy="return exprEval(a) % exprEval(b);"; + +var F_hz="(function(x,y){return (x - (x % y))/y;})(exprEval(a),exprEval(b));"; + +var F_hA="exprEval(a); return b;"; + +var F_hB="throw(\'E \' + exprEval(a).toString()); return undefined;"; + +var F_hC=new HSFun("F_hC", 1, function(a){ +return Math.abs(exprEval(a));}); + +var F_hD=new HSFun("F_hD", 1, function(a){ +return a;}); + +var F_hE=new HSFun("F_hE", 1, function(a){ +var ea = exprEval(a); if (ea>0) return 1; else if (ea<0) return -1; else return 0;}); + +var F_hF=new HSFun("F_hF", 2, function(a, b){ +return exprEval(a) + exprEval(b);}); + +var F_hG=new HSFun("F_hG", 2, function(a, b){ +return Number(exprEval(a)) === Number(exprEval(b));}); + +var F_hH=new HSFun("F_hH", 1, function(a){ +return a;}); + +var F_hI=new HSFun("F_hI", 2, function(a, b){ +return Number(exprEval(a)) >= Number(exprEval(b));}); + +var F_hJ=new HSFun("F_hJ", 2, function(a, b){ +return Number(exprEval(a)) > Number(exprEval(b));}); + +var F_hK=new HSFun("F_hK", 2, function(a, b){ +return Number(exprEval(a)) <= Number(exprEval(b));}); + +var F_hL=new HSFun("F_hL", 2, function(a, b){ +return Number(exprEval(a)) < Number(exprEval(b));}); + +var F_hM=new HSFun("F_hM", 2, function(a, b){ +return exprEval(a) * exprEval(b);}); + +var F_hN=new HSFun("F_hN", 2, function(a, b){ +return Number(exprEval(a)) !== Number(exprEval(b));}); + +var F_hO=new HSFun("F_hO", 1, function(a){ +return 0 - Number(exprEval(a));}); + +var F_hP=new HSFun("F_hP", 2, function(a, b){ +(function(x,y){return (x - (x % y))/y;})(exprEval(a),exprEval(b));}); + +var F_hQ=new HSFun("F_hQ", 2, function(_kF, _kG){ +var _C=new HSFun("_C", 0, function(){return (F_hR)._b(_kF, _kG);}); +var _B=new HSFun("_B", 0, function(){return (F_hP)._b(_kF, _kG);}); +return new HSData((-7), [_B, _C]); +}); + +var F_hR=new HSFun("F_hR", 2, function(a, b){ +return exprEval(a) % exprEval(b);}); + +var F_hS=new HSFun("F_hS", 2, function(a, b){ +return exprEval(a) - exprEval(b);}); + +funIdx["Echo.main"] = F_cj; +
+ testsuite/parsingonly/130s.js view
@@ -0,0 +1,4 @@+//var F_c=new HSFun("F_c", 2, function(_lZ, _l0){ +//var c2=exprEval(_l0); +function(_l1, _l2){}((c2)._f[0], (c2)._f[1]); +//});
+ testsuite/parsingonly/14_labelled_stmts.js view
@@ -0,0 +1,33 @@+i=0; +bob: i=0; +i=0; + +bob: +if(x){} + +{do { + t; + } while(t); +t;} + +if (t){ + do { + t; + } while(t); + t; +} + +switch(i) { + case "x": + + + case LEFT_CURLY: + //object_init: + if (t){ + do { + t; + } while(t); + t; + } + +}
testsuite/parsingonly/15_literals.js view
@@ -11,33 +11,6 @@ var opTypeNames = { '\n': "NEWLINE", ';': "SEMICOLON", - ',': "COMMA" -}; + ',': "COMMA"}; var assignOps = ['|', '^', '&', '<<', '>>', '>>>', '+', '-', '*', '/', '%']; - -function eval(s) { - a=-1; -} - -var global = { - // Value properties. - NaN: NaN, Infinity: Infinity, undefined: undefined, - - - - - // Exte - snarf: snarf, evaluate: evaluate, - load: function load(s) { - if (typeof s != "string") - return s; - - evaluate(snarf(s), s, 1); - }, - print: print, version: null -}; - -function eval(s) { -; -}
+ testsuite/parsingonly/16_literals.js view
@@ -0,0 +1,43 @@+const GLOBAL = this; + +var tokens = [ + + "END", + + // Operators and punctuators. Some pair-wise order matters, e.g. (+, -) + // and (UNARY_PLUS, UNARY_MINUS). + "\n", ";"]; + +var opTypeNames = { + '\n': "NEWLINE", + ';': "SEMICOLON", + ',': "COMMA" +}; + +var assignOps = ['|', '^', '&', '<<', '>>', '>>>', '+', '-', '*', '/', '%']; + +function eval(s) { + a=-1; +} + +var global = { + // Value properties. + NaN: NaN, Infinity: Infinity, undefined: undefined, + + + + + // Exte + snarf: snarf, evaluate: evaluate, + load: function load(s) { + if (typeof s != "string") + return s; + + evaluate(snarf(s), s, 1); + }, + print: print, version: null +}; + +function eval(s) { +; +}
+ testsuite/parsingonly/1_simple.js view
@@ -0,0 +1,1 @@+"abfnrtv\\\"\'";
testsuite/parsingonly/20_statements.js view
@@ -1,5 +1,6 @@-{ +t = 1 + b + t ? '1' : 'b'; if (getValue) @@ -19,8 +20,8 @@ } var sumOfDivisors = new ExprArray(n+1,1); -} + for (var i = 0; i < j; i++) { if (i > 0) consts += ", "; @@ -39,10 +40,72 @@ x += i; } +for( x in bob) +{ + +} + if (typeof s != "string") return; - + while (--n >= 0) + s += t; var a, f, i, j, r, s, t, u, v; +(x.stmtStack.length > 1) +? STATEMENT_FORM +: DECLARED_FORM; + + n2 = new Node(t); + if (tt == DEFAULT) + n.defaultIndex = n.cases.length; + else + n2.caseLabel = Expression(t, x, COLON); + break; + + n = new Node(t); + t.mustMatch(LEFT_PAREN); + n.discriminant = Expression(t, x); + t.mustMatch(RIGHT_PAREN); + n.cases = []; + n.defaultIndex = -1; + x.stmtStack.push(n); + t.mustMatch(LEFT_CURLY); + while ((tt = t.get()) != RIGHT_CURLY) { + switch (tt) { + case DEFAULT: + if (n.defaultIndex >= 0) + throw t.newSyntaxError("More than one switch default"); + // FALL THROUGH + case CASE: + n2 = new Node(t); + if (tt == DEFAULT) + n.defaultIndex = n.cases.length; + else + n2.caseLabel = Expression(t, x, COLON); + break; + default: + throw t.newSyntaxError("Invalid switch case"); + } + t.mustMatch(COLON); + n2.statements = new Node(t, BLOCK); + while ((tt=t.peek()) != CASE && tt != DEFAULT && tt != RIGHT_CURLY) + n2.statements.push(Statement(t, x)); + n.cases.push(n2); + } + x.stmtStack.pop(); + return n; + + + + do { + try { + execute(n.body, x); + } catch (e if e == BREAK && x.target == n) { + break; + } catch (e if e == CONTINUE && x.target == n) { + continue; + } + } while (getValue(execute(n.condition, x))); + break;
testsuite/parsingonly/25_trycatch.js view
@@ -1,5 +1,24 @@-function message() +try { + print("hello"); +} + +try {} +finally {} + +try {} +catch(bob) { +} + +try +{ +} +catch(bob if 1==0) +{ +} + + + try { adddlert("Welcome guest!"); @@ -11,7 +30,7 @@ txt+="Click OK to continue.\n\n"; alert(txt); } -} + try { execute(parse(s), x2);
testsuite/parsingonly/40_functions.js view
@@ -1,4 +1,7 @@- +function bob(){} +function bob(a,b){} +function bob(a,b){a=1; +} // constructor -- expression array initialization function ExprArray(n,v)
+ testsuite/parsingonly/41_functions.js view
@@ -0,0 +1,1 @@+function(){}()
testsuite/parsingonly/5_comments.js view
@@ -1,3 +1,21 @@ // Helper to avoid Object.prototype.hasOwnProperty polluting scope objects. +// One problem is that lexer is picking the longest string +function bob() +{ + /* This a comment inside a function + second line of the comment */ +} -i=1;+function bill() +{ + /* This a comment inside a function + second line of the comment */ + i=2; + + function mary() + { + /* bob */ + var currentConstructor = this.constructor + var methodName = null + } +}
+ testsuite/parsingonly/67_bob.js view
@@ -0,0 +1,64 @@+ var token; + while (this.lookahead) { + --this.lookahead; + this.tokenIndex = (this.tokenIndex + 1) & 3; + token = this.tokens[this.tokenIndex]; + if (token.type != NEWLINE || this.scanNewlines) + return token.type; + } + + for (;;) { + var input = this.input; + var match = (this.scanNewlines ? /^[ \t]+/ : /^\s+/)(input); + if (match) { + var spaces = match[0]; + this.cursor += spaces.length; + var newlines = spaces.match(/\n/g); + if (newlines) + this.lineno += newlines.length; + input = this.input; + } + + if (!(match = /^\/(?:\*(?:.|\n)*?\*\/|\/.*)/(input))) + break; + var comment = match[0]; + this.cursor += comment.length; + newlines = comment.match(/\n/g); + if (newlines) + this.lineno += newlines.length + } + + this.tokenIndex = (this.tokenIndex + 1) & 3; + token = this.tokens[this.tokenIndex]; + if (!token) + this.tokens[this.tokenIndex] = token = {}; + + if (!input) + return token.type = END; + + if ((match = fpRegExp(input))) { + token.type = NUMBER; + token.value = parseFloat(match[0]); + } else if ((match = /^0[xX][\da-fA-F]+|^0[0-7]*|^\d+/(input))) { + token.type = NUMBER; + token.value = parseInt(match[0]); + } else if ((match = /^\w+/(input))) { + var id = match[0]; + token.type = keywords[id] || IDENTIFIER; + token.value = id; + } else if ((match = /^"(?:\\.|[^"])*"|^'(?:[^']|\\.)*'/(input))) { //"){ + token.type = STRING; + token.value = eval(match[0]); + } + + if (this.scanOperand && + (match = /^\/((?:\\.|[^\/])+)\/([gi]*)/(input))) { + token.type = REGEXP; + token.value = new RegExp(match[1], match[2]); + } + + token.start = this.cursor; + this.cursor += match[0].length; + token.end = this.cursor; + token.lineno = this.lineno; + return token.type;
+ testsuite/parsingonly/js.html view
@@ -0,0 +1,8 @@+<script language=javascript> + +x = 1 ++ 2; + +alert("Result is " + x); + +</script>
− testsuite/parsingonly/regex.txt
@@ -1,2 +0,0 @@-/\n/g -/[?|^&(){}\[\]+\-*\/\.]/g, "\\$&");
+ testsuite/x.html view
@@ -0,0 +1,13 @@+<script language=javascript> + +function Animal() +{ +} + +o = new Animal(); + +//o(); + +document.writeln("boo " + o.prototype.toString()); + +</script>
− utils/FixHappy.exe
binary file changed (572060 → absent bytes)
− utils/FixHappy.hs
@@ -1,15 +0,0 @@-module Main where - -import Prelude hiding (writeFile, readFile,splitAt) -import Data.ByteString.Char8 - -repl :: ByteString -> ByteString -repl s = case findSubstring (pack "lexerM") s of - Nothing -> error "Cannot find string" - Just i -> let (a,b) = splitAt (i+6) s - in a `append` (pack " action ") `append` b - - -main = do - s <- readFile "JavaScriptParser.hs" - writeFile "JavaScriptParser.hs" (repl s)