diff --git a/.gitignore b/.gitignore index 5b086e8..ad0607c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea/**/** .idea/modules.xml target/** +.idea/vcs.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 02f409a..3edce86 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -10,7 +10,7 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 199b578..ddfafd0 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -6,19 +6,16 @@ - - - \ No newline at end of file diff --git a/src/main/java/org/luapp/language/Luapp.java b/src/main/java/org/luapp/language/Luapp.java index 9247a6c..9424cfe 100644 --- a/src/main/java/org/luapp/language/Luapp.java +++ b/src/main/java/org/luapp/language/Luapp.java @@ -26,6 +26,8 @@ public class Luapp { public String currentClass; public String currentAbstract; + public CommonTokenStream commonTokenStream; + /** * * @param path The path to the file. @@ -42,8 +44,8 @@ public void load(){ this.listenerManager = new ListenerManager(); this.listenerManager.Load(); luappLexer lexer = new luappLexer(new ANTLRFileStream(this.path)); - CommonTokenStream tokens = new CommonTokenStream(lexer); - luappParser parser = new luappParser(tokens); + this.commonTokenStream = new CommonTokenStream(lexer); + luappParser parser = new luappParser(this.commonTokenStream); ParseTree tree = parser.chunk(); ParseTreeWalker walker = new ParseTreeWalker(); walker.walk(new MasterLuaPPListener(), tree); @@ -52,7 +54,9 @@ public void load(){ File newFile = new File(newPath); newFile.createNewFile(); FileWriter writeFile = new FileWriter(newPath); - writeFile.write("--[[\nWritten by nosharp (https://nosharp.cc),\ntom.bat (tomdotbat.dev),\nsamuel milton (smilton.dev)\n]]--" + this.currentResult); + writeFile.write("--[[\nWritten with Lua++.\n" + + "Don't remove this notice please\n" + + "\nhttps://github.com/LuaPlusPlus/lua-plus-plus\n]]--" + this.currentResult); writeFile.close(); }catch(IOException ex){ ex.printStackTrace(); @@ -94,10 +98,9 @@ public String getRaw(){ } public String getRawFromContext(ParserRuleContext context){ - Token startToken = context.start; - Token stopToken = context.stop; - CharStream cs = context.start.getTokenSource().getInputStream(); - return cs.getText(new Interval(startToken.getStartIndex(), stopToken.getStopIndex())); + int startToken = context.start.getStartIndex(); + int stopToken = context.stop.getStartIndex(); + return context.getStart().getInputStream().getText(new Interval(startToken, stopToken)); } public void appendToResult(String target){ diff --git a/src/main/java/org/luapp/language/generator/luapp.interp b/src/main/java/org/luapp/language/generator/luapp.interp index ed98e0a..b9ea9b7 100644 --- a/src/main/java/org/luapp/language/generator/luapp.interp +++ b/src/main/java/org/luapp/language/generator/luapp.interp @@ -58,7 +58,6 @@ null 'not' '#' '^' -'new' 'static' 'get' 'set' @@ -150,7 +149,6 @@ null null null null -null NAME NORMALSTRING CHARSTRING @@ -202,7 +200,6 @@ operatorUnary operatorPower number string -newclass classdef classfunction classstaticfunction @@ -220,4 +217,4 @@ safeOperator atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 82, 542, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 3, 2, 3, 2, 3, 2, 3, 3, 7, 3, 111, 10, 3, 12, 3, 14, 3, 114, 11, 3, 3, 3, 5, 3, 117, 10, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 153, 10, 4, 12, 4, 14, 4, 156, 11, 4, 3, 4, 3, 4, 5, 4, 160, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 172, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 194, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 203, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 215, 10, 4, 3, 4, 3, 4, 3, 4, 5, 4, 220, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 227, 10, 4, 3, 4, 3, 4, 5, 4, 231, 10, 4, 3, 5, 3, 5, 5, 5, 235, 10, 5, 3, 5, 5, 5, 238, 10, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 7, 7, 247, 10, 7, 12, 7, 14, 7, 250, 11, 7, 3, 7, 3, 7, 5, 7, 254, 10, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 7, 10, 263, 10, 10, 12, 10, 14, 10, 266, 11, 10, 3, 11, 3, 11, 3, 11, 7, 11, 271, 10, 11, 12, 11, 14, 11, 274, 11, 11, 3, 12, 3, 12, 3, 12, 7, 12, 279, 10, 12, 12, 12, 14, 12, 282, 11, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 297, 10, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 7, 13, 331, 10, 13, 12, 13, 14, 13, 334, 11, 13, 3, 14, 3, 14, 7, 14, 338, 10, 14, 12, 14, 14, 14, 341, 11, 14, 3, 15, 3, 15, 6, 15, 345, 10, 15, 13, 15, 14, 15, 346, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 354, 10, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 5, 17, 362, 10, 17, 3, 17, 7, 17, 365, 10, 17, 12, 17, 14, 17, 368, 11, 17, 3, 18, 7, 18, 371, 10, 18, 12, 18, 14, 18, 374, 11, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 5, 18, 382, 10, 18, 3, 19, 3, 19, 5, 19, 386, 10, 19, 3, 19, 3, 19, 3, 20, 3, 20, 5, 20, 392, 10, 20, 3, 20, 3, 20, 3, 20, 5, 20, 397, 10, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 5, 22, 404, 10, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 5, 23, 413, 10, 23, 3, 23, 5, 23, 416, 10, 23, 3, 24, 3, 24, 5, 24, 420, 10, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 7, 25, 428, 10, 25, 12, 25, 14, 25, 431, 11, 25, 3, 25, 5, 25, 434, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 5, 26, 446, 10, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 6, 44, 494, 10, 44, 13, 44, 14, 44, 495, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 5, 45, 503, 10, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 5, 46, 512, 10, 46, 3, 47, 3, 47, 3, 47, 3, 47, 7, 47, 518, 10, 47, 12, 47, 14, 47, 521, 11, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 2, 3, 24, 54, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 2, 11, 4, 2, 3, 3, 17, 17, 3, 2, 40, 45, 3, 2, 47, 48, 3, 2, 49, 52, 3, 2, 53, 57, 5, 2, 48, 48, 55, 55, 58, 59, 3, 2, 75, 78, 3, 2, 72, 74, 3, 2, 63, 64, 2, 569, 2, 106, 3, 2, 2, 2, 4, 112, 3, 2, 2, 2, 6, 230, 3, 2, 2, 2, 8, 232, 3, 2, 2, 2, 10, 239, 3, 2, 2, 2, 12, 243, 3, 2, 2, 2, 14, 255, 3, 2, 2, 2, 16, 257, 3, 2, 2, 2, 18, 259, 3, 2, 2, 2, 20, 267, 3, 2, 2, 2, 22, 275, 3, 2, 2, 2, 24, 296, 3, 2, 2, 2, 26, 335, 3, 2, 2, 2, 28, 342, 3, 2, 2, 2, 30, 353, 3, 2, 2, 2, 32, 361, 3, 2, 2, 2, 34, 372, 3, 2, 2, 2, 36, 385, 3, 2, 2, 2, 38, 396, 3, 2, 2, 2, 40, 398, 3, 2, 2, 2, 42, 401, 3, 2, 2, 2, 44, 415, 3, 2, 2, 2, 46, 417, 3, 2, 2, 2, 48, 423, 3, 2, 2, 2, 50, 445, 3, 2, 2, 2, 52, 447, 3, 2, 2, 2, 54, 449, 3, 2, 2, 2, 56, 451, 3, 2, 2, 2, 58, 453, 3, 2, 2, 2, 60, 455, 3, 2, 2, 2, 62, 457, 3, 2, 2, 2, 64, 459, 3, 2, 2, 2, 66, 461, 3, 2, 2, 2, 68, 463, 3, 2, 2, 2, 70, 465, 3, 2, 2, 2, 72, 467, 3, 2, 2, 2, 74, 469, 3, 2, 2, 2, 76, 471, 3, 2, 2, 2, 78, 475, 3, 2, 2, 2, 80, 479, 3, 2, 2, 2, 82, 483, 3, 2, 2, 2, 84, 488, 3, 2, 2, 2, 86, 490, 3, 2, 2, 2, 88, 499, 3, 2, 2, 2, 90, 511, 3, 2, 2, 2, 92, 519, 3, 2, 2, 2, 94, 524, 3, 2, 2, 2, 96, 527, 3, 2, 2, 2, 98, 530, 3, 2, 2, 2, 100, 533, 3, 2, 2, 2, 102, 536, 3, 2, 2, 2, 104, 539, 3, 2, 2, 2, 106, 107, 5, 4, 3, 2, 107, 108, 7, 2, 2, 3, 108, 3, 3, 2, 2, 2, 109, 111, 5, 6, 4, 2, 110, 109, 3, 2, 2, 2, 111, 114, 3, 2, 2, 2, 112, 110, 3, 2, 2, 2, 112, 113, 3, 2, 2, 2, 113, 116, 3, 2, 2, 2, 114, 112, 3, 2, 2, 2, 115, 117, 5, 8, 5, 2, 116, 115, 3, 2, 2, 2, 116, 117, 3, 2, 2, 2, 117, 5, 3, 2, 2, 2, 118, 231, 7, 3, 2, 2, 119, 120, 5, 18, 10, 2, 120, 121, 7, 4, 2, 2, 121, 122, 5, 22, 12, 2, 122, 231, 3, 2, 2, 2, 123, 231, 5, 28, 15, 2, 124, 231, 5, 10, 6, 2, 125, 231, 7, 5, 2, 2, 126, 127, 7, 6, 2, 2, 127, 231, 7, 71, 2, 2, 128, 129, 7, 7, 2, 2, 129, 130, 5, 4, 3, 2, 130, 131, 7, 8, 2, 2, 131, 231, 3, 2, 2, 2, 132, 133, 7, 9, 2, 2, 133, 134, 5, 24, 13, 2, 134, 135, 7, 7, 2, 2, 135, 136, 5, 4, 3, 2, 136, 137, 7, 8, 2, 2, 137, 231, 3, 2, 2, 2, 138, 139, 7, 10, 2, 2, 139, 140, 5, 4, 3, 2, 140, 141, 7, 11, 2, 2, 141, 142, 5, 24, 13, 2, 142, 231, 3, 2, 2, 2, 143, 144, 7, 12, 2, 2, 144, 145, 5, 24, 13, 2, 145, 146, 7, 13, 2, 2, 146, 154, 5, 4, 3, 2, 147, 148, 7, 14, 2, 2, 148, 149, 5, 24, 13, 2, 149, 150, 7, 13, 2, 2, 150, 151, 5, 4, 3, 2, 151, 153, 3, 2, 2, 2, 152, 147, 3, 2, 2, 2, 153, 156, 3, 2, 2, 2, 154, 152, 3, 2, 2, 2, 154, 155, 3, 2, 2, 2, 155, 159, 3, 2, 2, 2, 156, 154, 3, 2, 2, 2, 157, 158, 7, 15, 2, 2, 158, 160, 5, 4, 3, 2, 159, 157, 3, 2, 2, 2, 159, 160, 3, 2, 2, 2, 160, 161, 3, 2, 2, 2, 161, 162, 7, 8, 2, 2, 162, 231, 3, 2, 2, 2, 163, 164, 7, 16, 2, 2, 164, 165, 7, 71, 2, 2, 165, 166, 7, 4, 2, 2, 166, 167, 5, 24, 13, 2, 167, 168, 7, 17, 2, 2, 168, 171, 5, 24, 13, 2, 169, 170, 7, 17, 2, 2, 170, 172, 5, 24, 13, 2, 171, 169, 3, 2, 2, 2, 171, 172, 3, 2, 2, 2, 172, 173, 3, 2, 2, 2, 173, 174, 7, 7, 2, 2, 174, 175, 5, 4, 3, 2, 175, 176, 7, 8, 2, 2, 176, 231, 3, 2, 2, 2, 177, 178, 7, 16, 2, 2, 178, 179, 5, 20, 11, 2, 179, 180, 7, 18, 2, 2, 180, 181, 5, 22, 12, 2, 181, 182, 7, 7, 2, 2, 182, 183, 5, 4, 3, 2, 183, 184, 7, 8, 2, 2, 184, 231, 3, 2, 2, 2, 185, 186, 7, 19, 2, 2, 186, 187, 5, 12, 7, 2, 187, 188, 5, 42, 22, 2, 188, 231, 3, 2, 2, 2, 189, 190, 7, 20, 2, 2, 190, 193, 5, 14, 8, 2, 191, 192, 7, 21, 2, 2, 192, 194, 5, 16, 9, 2, 193, 191, 3, 2, 2, 2, 193, 194, 3, 2, 2, 2, 194, 195, 3, 2, 2, 2, 195, 196, 5, 92, 47, 2, 196, 231, 3, 2, 2, 2, 197, 198, 7, 22, 2, 2, 198, 199, 7, 20, 2, 2, 199, 202, 5, 14, 8, 2, 200, 201, 7, 21, 2, 2, 201, 203, 5, 16, 9, 2, 202, 200, 3, 2, 2, 2, 202, 203, 3, 2, 2, 2, 203, 204, 3, 2, 2, 2, 204, 205, 5, 92, 47, 2, 205, 231, 3, 2, 2, 2, 206, 207, 7, 22, 2, 2, 207, 208, 7, 19, 2, 2, 208, 209, 7, 71, 2, 2, 209, 231, 5, 42, 22, 2, 210, 211, 7, 22, 2, 2, 211, 214, 5, 20, 11, 2, 212, 213, 7, 4, 2, 2, 213, 215, 5, 22, 12, 2, 214, 212, 3, 2, 2, 2, 214, 215, 3, 2, 2, 2, 215, 231, 3, 2, 2, 2, 216, 217, 7, 23, 2, 2, 217, 231, 5, 104, 53, 2, 218, 220, 7, 22, 2, 2, 219, 218, 3, 2, 2, 2, 219, 220, 3, 2, 2, 2, 220, 221, 3, 2, 2, 2, 221, 222, 5, 20, 11, 2, 222, 223, 7, 4, 2, 2, 223, 224, 5, 76, 39, 2, 224, 231, 3, 2, 2, 2, 225, 227, 7, 22, 2, 2, 226, 225, 3, 2, 2, 2, 226, 227, 3, 2, 2, 2, 227, 228, 3, 2, 2, 2, 228, 229, 7, 71, 2, 2, 229, 231, 5, 102, 52, 2, 230, 118, 3, 2, 2, 2, 230, 119, 3, 2, 2, 2, 230, 123, 3, 2, 2, 2, 230, 124, 3, 2, 2, 2, 230, 125, 3, 2, 2, 2, 230, 126, 3, 2, 2, 2, 230, 128, 3, 2, 2, 2, 230, 132, 3, 2, 2, 2, 230, 138, 3, 2, 2, 2, 230, 143, 3, 2, 2, 2, 230, 163, 3, 2, 2, 2, 230, 177, 3, 2, 2, 2, 230, 185, 3, 2, 2, 2, 230, 189, 3, 2, 2, 2, 230, 197, 3, 2, 2, 2, 230, 206, 3, 2, 2, 2, 230, 210, 3, 2, 2, 2, 230, 216, 3, 2, 2, 2, 230, 219, 3, 2, 2, 2, 230, 226, 3, 2, 2, 2, 231, 7, 3, 2, 2, 2, 232, 234, 7, 24, 2, 2, 233, 235, 5, 22, 12, 2, 234, 233, 3, 2, 2, 2, 234, 235, 3, 2, 2, 2, 235, 237, 3, 2, 2, 2, 236, 238, 7, 3, 2, 2, 237, 236, 3, 2, 2, 2, 237, 238, 3, 2, 2, 2, 238, 9, 3, 2, 2, 2, 239, 240, 7, 25, 2, 2, 240, 241, 7, 71, 2, 2, 241, 242, 7, 25, 2, 2, 242, 11, 3, 2, 2, 2, 243, 248, 7, 71, 2, 2, 244, 245, 7, 26, 2, 2, 245, 247, 7, 71, 2, 2, 246, 244, 3, 2, 2, 2, 247, 250, 3, 2, 2, 2, 248, 246, 3, 2, 2, 2, 248, 249, 3, 2, 2, 2, 249, 253, 3, 2, 2, 2, 250, 248, 3, 2, 2, 2, 251, 252, 7, 27, 2, 2, 252, 254, 7, 71, 2, 2, 253, 251, 3, 2, 2, 2, 253, 254, 3, 2, 2, 2, 254, 13, 3, 2, 2, 2, 255, 256, 7, 71, 2, 2, 256, 15, 3, 2, 2, 2, 257, 258, 7, 71, 2, 2, 258, 17, 3, 2, 2, 2, 259, 264, 5, 32, 17, 2, 260, 261, 7, 17, 2, 2, 261, 263, 5, 32, 17, 2, 262, 260, 3, 2, 2, 2, 263, 266, 3, 2, 2, 2, 264, 262, 3, 2, 2, 2, 264, 265, 3, 2, 2, 2, 265, 19, 3, 2, 2, 2, 266, 264, 3, 2, 2, 2, 267, 272, 7, 71, 2, 2, 268, 269, 7, 17, 2, 2, 269, 271, 7, 71, 2, 2, 270, 268, 3, 2, 2, 2, 271, 274, 3, 2, 2, 2, 272, 270, 3, 2, 2, 2, 272, 273, 3, 2, 2, 2, 273, 21, 3, 2, 2, 2, 274, 272, 3, 2, 2, 2, 275, 280, 5, 24, 13, 2, 276, 277, 7, 17, 2, 2, 277, 279, 5, 24, 13, 2, 278, 276, 3, 2, 2, 2, 279, 282, 3, 2, 2, 2, 280, 278, 3, 2, 2, 2, 280, 281, 3, 2, 2, 2, 281, 23, 3, 2, 2, 2, 282, 280, 3, 2, 2, 2, 283, 284, 8, 13, 1, 2, 284, 297, 7, 28, 2, 2, 285, 297, 7, 29, 2, 2, 286, 297, 7, 30, 2, 2, 287, 297, 5, 72, 37, 2, 288, 297, 5, 74, 38, 2, 289, 297, 7, 31, 2, 2, 290, 297, 5, 40, 21, 2, 291, 297, 5, 26, 14, 2, 292, 297, 5, 46, 24, 2, 293, 294, 5, 68, 35, 2, 294, 295, 5, 24, 13, 10, 295, 297, 3, 2, 2, 2, 296, 283, 3, 2, 2, 2, 296, 285, 3, 2, 2, 2, 296, 286, 3, 2, 2, 2, 296, 287, 3, 2, 2, 2, 296, 288, 3, 2, 2, 2, 296, 289, 3, 2, 2, 2, 296, 290, 3, 2, 2, 2, 296, 291, 3, 2, 2, 2, 296, 292, 3, 2, 2, 2, 296, 293, 3, 2, 2, 2, 297, 332, 3, 2, 2, 2, 298, 299, 12, 11, 2, 2, 299, 300, 5, 70, 36, 2, 300, 301, 5, 24, 13, 11, 301, 331, 3, 2, 2, 2, 302, 303, 12, 9, 2, 2, 303, 304, 5, 64, 33, 2, 304, 305, 5, 24, 13, 10, 305, 331, 3, 2, 2, 2, 306, 307, 12, 8, 2, 2, 307, 308, 5, 62, 32, 2, 308, 309, 5, 24, 13, 9, 309, 331, 3, 2, 2, 2, 310, 311, 12, 7, 2, 2, 311, 312, 5, 60, 31, 2, 312, 313, 5, 24, 13, 7, 313, 331, 3, 2, 2, 2, 314, 315, 12, 6, 2, 2, 315, 316, 5, 58, 30, 2, 316, 317, 5, 24, 13, 7, 317, 331, 3, 2, 2, 2, 318, 319, 12, 5, 2, 2, 319, 320, 5, 56, 29, 2, 320, 321, 5, 24, 13, 6, 321, 331, 3, 2, 2, 2, 322, 323, 12, 4, 2, 2, 323, 324, 5, 54, 28, 2, 324, 325, 5, 24, 13, 5, 325, 331, 3, 2, 2, 2, 326, 327, 12, 3, 2, 2, 327, 328, 5, 66, 34, 2, 328, 329, 5, 24, 13, 4, 329, 331, 3, 2, 2, 2, 330, 298, 3, 2, 2, 2, 330, 302, 3, 2, 2, 2, 330, 306, 3, 2, 2, 2, 330, 310, 3, 2, 2, 2, 330, 314, 3, 2, 2, 2, 330, 318, 3, 2, 2, 2, 330, 322, 3, 2, 2, 2, 330, 326, 3, 2, 2, 2, 331, 334, 3, 2, 2, 2, 332, 330, 3, 2, 2, 2, 332, 333, 3, 2, 2, 2, 333, 25, 3, 2, 2, 2, 334, 332, 3, 2, 2, 2, 335, 339, 5, 30, 16, 2, 336, 338, 5, 36, 19, 2, 337, 336, 3, 2, 2, 2, 338, 341, 3, 2, 2, 2, 339, 337, 3, 2, 2, 2, 339, 340, 3, 2, 2, 2, 340, 27, 3, 2, 2, 2, 341, 339, 3, 2, 2, 2, 342, 344, 5, 30, 16, 2, 343, 345, 5, 36, 19, 2, 344, 343, 3, 2, 2, 2, 345, 346, 3, 2, 2, 2, 346, 344, 3, 2, 2, 2, 346, 347, 3, 2, 2, 2, 347, 29, 3, 2, 2, 2, 348, 354, 5, 32, 17, 2, 349, 350, 7, 32, 2, 2, 350, 351, 5, 24, 13, 2, 351, 352, 7, 33, 2, 2, 352, 354, 3, 2, 2, 2, 353, 348, 3, 2, 2, 2, 353, 349, 3, 2, 2, 2, 354, 31, 3, 2, 2, 2, 355, 362, 7, 71, 2, 2, 356, 357, 7, 32, 2, 2, 357, 358, 5, 24, 13, 2, 358, 359, 7, 33, 2, 2, 359, 360, 5, 34, 18, 2, 360, 362, 3, 2, 2, 2, 361, 355, 3, 2, 2, 2, 361, 356, 3, 2, 2, 2, 362, 366, 3, 2, 2, 2, 363, 365, 5, 34, 18, 2, 364, 363, 3, 2, 2, 2, 365, 368, 3, 2, 2, 2, 366, 364, 3, 2, 2, 2, 366, 367, 3, 2, 2, 2, 367, 33, 3, 2, 2, 2, 368, 366, 3, 2, 2, 2, 369, 371, 5, 36, 19, 2, 370, 369, 3, 2, 2, 2, 371, 374, 3, 2, 2, 2, 372, 370, 3, 2, 2, 2, 372, 373, 3, 2, 2, 2, 373, 381, 3, 2, 2, 2, 374, 372, 3, 2, 2, 2, 375, 376, 7, 34, 2, 2, 376, 377, 5, 24, 13, 2, 377, 378, 7, 35, 2, 2, 378, 382, 3, 2, 2, 2, 379, 380, 7, 26, 2, 2, 380, 382, 7, 71, 2, 2, 381, 375, 3, 2, 2, 2, 381, 379, 3, 2, 2, 2, 382, 35, 3, 2, 2, 2, 383, 384, 7, 27, 2, 2, 384, 386, 7, 71, 2, 2, 385, 383, 3, 2, 2, 2, 385, 386, 3, 2, 2, 2, 386, 387, 3, 2, 2, 2, 387, 388, 5, 38, 20, 2, 388, 37, 3, 2, 2, 2, 389, 391, 7, 32, 2, 2, 390, 392, 5, 22, 12, 2, 391, 390, 3, 2, 2, 2, 391, 392, 3, 2, 2, 2, 392, 393, 3, 2, 2, 2, 393, 397, 7, 33, 2, 2, 394, 397, 5, 46, 24, 2, 395, 397, 5, 74, 38, 2, 396, 389, 3, 2, 2, 2, 396, 394, 3, 2, 2, 2, 396, 395, 3, 2, 2, 2, 397, 39, 3, 2, 2, 2, 398, 399, 7, 19, 2, 2, 399, 400, 5, 42, 22, 2, 400, 41, 3, 2, 2, 2, 401, 403, 7, 32, 2, 2, 402, 404, 5, 44, 23, 2, 403, 402, 3, 2, 2, 2, 403, 404, 3, 2, 2, 2, 404, 405, 3, 2, 2, 2, 405, 406, 7, 33, 2, 2, 406, 407, 5, 4, 3, 2, 407, 408, 7, 8, 2, 2, 408, 43, 3, 2, 2, 2, 409, 412, 5, 20, 11, 2, 410, 411, 7, 17, 2, 2, 411, 413, 7, 31, 2, 2, 412, 410, 3, 2, 2, 2, 412, 413, 3, 2, 2, 2, 413, 416, 3, 2, 2, 2, 414, 416, 7, 31, 2, 2, 415, 409, 3, 2, 2, 2, 415, 414, 3, 2, 2, 2, 416, 45, 3, 2, 2, 2, 417, 419, 7, 36, 2, 2, 418, 420, 5, 48, 25, 2, 419, 418, 3, 2, 2, 2, 419, 420, 3, 2, 2, 2, 420, 421, 3, 2, 2, 2, 421, 422, 7, 37, 2, 2, 422, 47, 3, 2, 2, 2, 423, 429, 5, 50, 26, 2, 424, 425, 5, 52, 27, 2, 425, 426, 5, 50, 26, 2, 426, 428, 3, 2, 2, 2, 427, 424, 3, 2, 2, 2, 428, 431, 3, 2, 2, 2, 429, 427, 3, 2, 2, 2, 429, 430, 3, 2, 2, 2, 430, 433, 3, 2, 2, 2, 431, 429, 3, 2, 2, 2, 432, 434, 5, 52, 27, 2, 433, 432, 3, 2, 2, 2, 433, 434, 3, 2, 2, 2, 434, 49, 3, 2, 2, 2, 435, 436, 7, 34, 2, 2, 436, 437, 5, 24, 13, 2, 437, 438, 7, 35, 2, 2, 438, 439, 7, 4, 2, 2, 439, 440, 5, 24, 13, 2, 440, 446, 3, 2, 2, 2, 441, 442, 7, 71, 2, 2, 442, 443, 7, 4, 2, 2, 443, 446, 5, 24, 13, 2, 444, 446, 5, 24, 13, 2, 445, 435, 3, 2, 2, 2, 445, 441, 3, 2, 2, 2, 445, 444, 3, 2, 2, 2, 446, 51, 3, 2, 2, 2, 447, 448, 9, 2, 2, 2, 448, 53, 3, 2, 2, 2, 449, 450, 7, 38, 2, 2, 450, 55, 3, 2, 2, 2, 451, 452, 7, 39, 2, 2, 452, 57, 3, 2, 2, 2, 453, 454, 9, 3, 2, 2, 454, 59, 3, 2, 2, 2, 455, 456, 7, 46, 2, 2, 456, 61, 3, 2, 2, 2, 457, 458, 9, 4, 2, 2, 458, 63, 3, 2, 2, 2, 459, 460, 9, 5, 2, 2, 460, 65, 3, 2, 2, 2, 461, 462, 9, 6, 2, 2, 462, 67, 3, 2, 2, 2, 463, 464, 9, 7, 2, 2, 464, 69, 3, 2, 2, 2, 465, 466, 7, 60, 2, 2, 466, 71, 3, 2, 2, 2, 467, 468, 9, 8, 2, 2, 468, 73, 3, 2, 2, 2, 469, 470, 9, 9, 2, 2, 470, 75, 3, 2, 2, 2, 471, 472, 7, 61, 2, 2, 472, 473, 5, 12, 7, 2, 473, 474, 5, 38, 20, 2, 474, 77, 3, 2, 2, 2, 475, 476, 7, 20, 2, 2, 476, 477, 7, 71, 2, 2, 477, 478, 5, 92, 47, 2, 478, 79, 3, 2, 2, 2, 479, 480, 7, 19, 2, 2, 480, 481, 5, 12, 7, 2, 481, 482, 5, 42, 22, 2, 482, 81, 3, 2, 2, 2, 483, 484, 7, 62, 2, 2, 484, 485, 7, 19, 2, 2, 485, 486, 5, 12, 7, 2, 486, 487, 5, 42, 22, 2, 487, 83, 3, 2, 2, 2, 488, 489, 9, 10, 2, 2, 489, 85, 3, 2, 2, 2, 490, 491, 7, 71, 2, 2, 491, 493, 7, 36, 2, 2, 492, 494, 5, 84, 43, 2, 493, 492, 3, 2, 2, 2, 494, 495, 3, 2, 2, 2, 495, 493, 3, 2, 2, 2, 495, 496, 3, 2, 2, 2, 496, 497, 3, 2, 2, 2, 497, 498, 7, 37, 2, 2, 498, 87, 3, 2, 2, 2, 499, 500, 7, 65, 2, 2, 500, 502, 7, 32, 2, 2, 501, 503, 5, 44, 23, 2, 502, 501, 3, 2, 2, 2, 502, 503, 3, 2, 2, 2, 503, 504, 3, 2, 2, 2, 504, 505, 7, 33, 2, 2, 505, 506, 5, 4, 3, 2, 506, 507, 7, 8, 2, 2, 507, 89, 3, 2, 2, 2, 508, 512, 5, 80, 41, 2, 509, 512, 5, 86, 44, 2, 510, 512, 5, 88, 45, 2, 511, 508, 3, 2, 2, 2, 511, 509, 3, 2, 2, 2, 511, 510, 3, 2, 2, 2, 512, 91, 3, 2, 2, 2, 513, 518, 5, 82, 42, 2, 514, 518, 5, 80, 41, 2, 515, 518, 5, 86, 44, 2, 516, 518, 5, 88, 45, 2, 517, 513, 3, 2, 2, 2, 517, 514, 3, 2, 2, 2, 517, 515, 3, 2, 2, 2, 517, 516, 3, 2, 2, 2, 518, 521, 3, 2, 2, 2, 519, 517, 3, 2, 2, 2, 519, 520, 3, 2, 2, 2, 520, 522, 3, 2, 2, 2, 521, 519, 3, 2, 2, 2, 522, 523, 7, 8, 2, 2, 523, 93, 3, 2, 2, 2, 524, 525, 7, 71, 2, 2, 525, 526, 7, 66, 2, 2, 526, 95, 3, 2, 2, 2, 527, 528, 7, 71, 2, 2, 528, 529, 7, 67, 2, 2, 529, 97, 3, 2, 2, 2, 530, 531, 7, 71, 2, 2, 531, 532, 7, 68, 2, 2, 532, 99, 3, 2, 2, 2, 533, 534, 7, 71, 2, 2, 534, 535, 7, 69, 2, 2, 535, 101, 3, 2, 2, 2, 536, 537, 7, 71, 2, 2, 537, 538, 7, 70, 2, 2, 538, 103, 3, 2, 2, 2, 539, 540, 5, 32, 17, 2, 540, 105, 3, 2, 2, 2, 45, 112, 116, 154, 159, 171, 193, 202, 214, 219, 226, 230, 234, 237, 248, 253, 264, 272, 280, 296, 330, 332, 339, 346, 353, 361, 366, 372, 381, 385, 391, 396, 403, 412, 415, 419, 429, 433, 445, 495, 502, 511, 517, 519] \ No newline at end of file +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 81, 531, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 3, 2, 3, 2, 3, 2, 3, 3, 7, 3, 109, 10, 3, 12, 3, 14, 3, 112, 11, 3, 3, 3, 5, 3, 115, 10, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 7, 4, 151, 10, 4, 12, 4, 14, 4, 154, 11, 4, 3, 4, 3, 4, 5, 4, 158, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 170, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 192, 10, 4, 3, 4, 3, 4, 3, 4, 5, 4, 197, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 203, 10, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 215, 10, 4, 3, 4, 3, 4, 3, 4, 5, 4, 220, 10, 4, 3, 4, 3, 4, 5, 4, 224, 10, 4, 3, 5, 3, 5, 5, 5, 228, 10, 5, 3, 5, 5, 5, 231, 10, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 7, 7, 240, 10, 7, 12, 7, 14, 7, 243, 11, 7, 3, 7, 3, 7, 5, 7, 247, 10, 7, 3, 8, 3, 8, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 7, 10, 256, 10, 10, 12, 10, 14, 10, 259, 11, 10, 3, 11, 3, 11, 3, 11, 7, 11, 264, 10, 11, 12, 11, 14, 11, 267, 11, 11, 3, 12, 3, 12, 3, 12, 7, 12, 272, 10, 12, 12, 12, 14, 12, 275, 11, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 5, 13, 290, 10, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 7, 13, 324, 10, 13, 12, 13, 14, 13, 327, 11, 13, 3, 14, 3, 14, 7, 14, 331, 10, 14, 12, 14, 14, 14, 334, 11, 14, 3, 15, 3, 15, 6, 15, 338, 10, 15, 13, 15, 14, 15, 339, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 347, 10, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 5, 17, 355, 10, 17, 3, 17, 7, 17, 358, 10, 17, 12, 17, 14, 17, 361, 11, 17, 3, 18, 7, 18, 364, 10, 18, 12, 18, 14, 18, 367, 11, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 5, 18, 375, 10, 18, 3, 19, 3, 19, 5, 19, 379, 10, 19, 3, 19, 3, 19, 3, 20, 3, 20, 5, 20, 385, 10, 20, 3, 20, 3, 20, 3, 20, 5, 20, 390, 10, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 5, 22, 397, 10, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 5, 23, 406, 10, 23, 3, 23, 5, 23, 409, 10, 23, 3, 24, 3, 24, 5, 24, 413, 10, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 7, 25, 421, 10, 25, 12, 25, 14, 25, 424, 11, 25, 3, 25, 5, 25, 427, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 5, 26, 439, 10, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 6, 43, 483, 10, 43, 13, 43, 14, 43, 484, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 5, 44, 492, 10, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 5, 45, 501, 10, 45, 3, 46, 3, 46, 3, 46, 3, 46, 7, 46, 507, 10, 46, 12, 46, 14, 46, 510, 11, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 2, 3, 24, 53, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 2, 11, 4, 2, 3, 3, 17, 17, 3, 2, 40, 45, 3, 2, 47, 48, 3, 2, 49, 52, 3, 2, 53, 57, 5, 2, 48, 48, 55, 55, 58, 59, 3, 2, 74, 77, 3, 2, 71, 73, 3, 2, 62, 63, 2, 558, 2, 104, 3, 2, 2, 2, 4, 110, 3, 2, 2, 2, 6, 223, 3, 2, 2, 2, 8, 225, 3, 2, 2, 2, 10, 232, 3, 2, 2, 2, 12, 236, 3, 2, 2, 2, 14, 248, 3, 2, 2, 2, 16, 250, 3, 2, 2, 2, 18, 252, 3, 2, 2, 2, 20, 260, 3, 2, 2, 2, 22, 268, 3, 2, 2, 2, 24, 289, 3, 2, 2, 2, 26, 328, 3, 2, 2, 2, 28, 335, 3, 2, 2, 2, 30, 346, 3, 2, 2, 2, 32, 354, 3, 2, 2, 2, 34, 365, 3, 2, 2, 2, 36, 378, 3, 2, 2, 2, 38, 389, 3, 2, 2, 2, 40, 391, 3, 2, 2, 2, 42, 394, 3, 2, 2, 2, 44, 408, 3, 2, 2, 2, 46, 410, 3, 2, 2, 2, 48, 416, 3, 2, 2, 2, 50, 438, 3, 2, 2, 2, 52, 440, 3, 2, 2, 2, 54, 442, 3, 2, 2, 2, 56, 444, 3, 2, 2, 2, 58, 446, 3, 2, 2, 2, 60, 448, 3, 2, 2, 2, 62, 450, 3, 2, 2, 2, 64, 452, 3, 2, 2, 2, 66, 454, 3, 2, 2, 2, 68, 456, 3, 2, 2, 2, 70, 458, 3, 2, 2, 2, 72, 460, 3, 2, 2, 2, 74, 462, 3, 2, 2, 2, 76, 464, 3, 2, 2, 2, 78, 468, 3, 2, 2, 2, 80, 472, 3, 2, 2, 2, 82, 477, 3, 2, 2, 2, 84, 479, 3, 2, 2, 2, 86, 488, 3, 2, 2, 2, 88, 500, 3, 2, 2, 2, 90, 508, 3, 2, 2, 2, 92, 513, 3, 2, 2, 2, 94, 516, 3, 2, 2, 2, 96, 519, 3, 2, 2, 2, 98, 522, 3, 2, 2, 2, 100, 525, 3, 2, 2, 2, 102, 528, 3, 2, 2, 2, 104, 105, 5, 4, 3, 2, 105, 106, 7, 2, 2, 3, 106, 3, 3, 2, 2, 2, 107, 109, 5, 6, 4, 2, 108, 107, 3, 2, 2, 2, 109, 112, 3, 2, 2, 2, 110, 108, 3, 2, 2, 2, 110, 111, 3, 2, 2, 2, 111, 114, 3, 2, 2, 2, 112, 110, 3, 2, 2, 2, 113, 115, 5, 8, 5, 2, 114, 113, 3, 2, 2, 2, 114, 115, 3, 2, 2, 2, 115, 5, 3, 2, 2, 2, 116, 224, 7, 3, 2, 2, 117, 118, 5, 18, 10, 2, 118, 119, 7, 4, 2, 2, 119, 120, 5, 22, 12, 2, 120, 224, 3, 2, 2, 2, 121, 224, 5, 28, 15, 2, 122, 224, 5, 10, 6, 2, 123, 224, 7, 5, 2, 2, 124, 125, 7, 6, 2, 2, 125, 224, 7, 70, 2, 2, 126, 127, 7, 7, 2, 2, 127, 128, 5, 4, 3, 2, 128, 129, 7, 8, 2, 2, 129, 224, 3, 2, 2, 2, 130, 131, 7, 9, 2, 2, 131, 132, 5, 24, 13, 2, 132, 133, 7, 7, 2, 2, 133, 134, 5, 4, 3, 2, 134, 135, 7, 8, 2, 2, 135, 224, 3, 2, 2, 2, 136, 137, 7, 10, 2, 2, 137, 138, 5, 4, 3, 2, 138, 139, 7, 11, 2, 2, 139, 140, 5, 24, 13, 2, 140, 224, 3, 2, 2, 2, 141, 142, 7, 12, 2, 2, 142, 143, 5, 24, 13, 2, 143, 144, 7, 13, 2, 2, 144, 152, 5, 4, 3, 2, 145, 146, 7, 14, 2, 2, 146, 147, 5, 24, 13, 2, 147, 148, 7, 13, 2, 2, 148, 149, 5, 4, 3, 2, 149, 151, 3, 2, 2, 2, 150, 145, 3, 2, 2, 2, 151, 154, 3, 2, 2, 2, 152, 150, 3, 2, 2, 2, 152, 153, 3, 2, 2, 2, 153, 157, 3, 2, 2, 2, 154, 152, 3, 2, 2, 2, 155, 156, 7, 15, 2, 2, 156, 158, 5, 4, 3, 2, 157, 155, 3, 2, 2, 2, 157, 158, 3, 2, 2, 2, 158, 159, 3, 2, 2, 2, 159, 160, 7, 8, 2, 2, 160, 224, 3, 2, 2, 2, 161, 162, 7, 16, 2, 2, 162, 163, 7, 70, 2, 2, 163, 164, 7, 4, 2, 2, 164, 165, 5, 24, 13, 2, 165, 166, 7, 17, 2, 2, 166, 169, 5, 24, 13, 2, 167, 168, 7, 17, 2, 2, 168, 170, 5, 24, 13, 2, 169, 167, 3, 2, 2, 2, 169, 170, 3, 2, 2, 2, 170, 171, 3, 2, 2, 2, 171, 172, 7, 7, 2, 2, 172, 173, 5, 4, 3, 2, 173, 174, 7, 8, 2, 2, 174, 224, 3, 2, 2, 2, 175, 176, 7, 16, 2, 2, 176, 177, 5, 20, 11, 2, 177, 178, 7, 18, 2, 2, 178, 179, 5, 22, 12, 2, 179, 180, 7, 7, 2, 2, 180, 181, 5, 4, 3, 2, 181, 182, 7, 8, 2, 2, 182, 224, 3, 2, 2, 2, 183, 184, 7, 19, 2, 2, 184, 185, 5, 12, 7, 2, 185, 186, 5, 42, 22, 2, 186, 224, 3, 2, 2, 2, 187, 188, 7, 20, 2, 2, 188, 191, 5, 14, 8, 2, 189, 190, 7, 21, 2, 2, 190, 192, 5, 16, 9, 2, 191, 189, 3, 2, 2, 2, 191, 192, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 194, 5, 90, 46, 2, 194, 224, 3, 2, 2, 2, 195, 197, 7, 22, 2, 2, 196, 195, 3, 2, 2, 2, 196, 197, 3, 2, 2, 2, 197, 198, 3, 2, 2, 2, 198, 199, 7, 20, 2, 2, 199, 202, 5, 14, 8, 2, 200, 201, 7, 21, 2, 2, 201, 203, 5, 16, 9, 2, 202, 200, 3, 2, 2, 2, 202, 203, 3, 2, 2, 2, 203, 204, 3, 2, 2, 2, 204, 205, 5, 90, 46, 2, 205, 224, 3, 2, 2, 2, 206, 207, 7, 22, 2, 2, 207, 208, 7, 19, 2, 2, 208, 209, 7, 70, 2, 2, 209, 224, 5, 42, 22, 2, 210, 211, 7, 22, 2, 2, 211, 214, 5, 20, 11, 2, 212, 213, 7, 4, 2, 2, 213, 215, 5, 22, 12, 2, 214, 212, 3, 2, 2, 2, 214, 215, 3, 2, 2, 2, 215, 224, 3, 2, 2, 2, 216, 217, 7, 23, 2, 2, 217, 224, 5, 102, 52, 2, 218, 220, 7, 22, 2, 2, 219, 218, 3, 2, 2, 2, 219, 220, 3, 2, 2, 2, 220, 221, 3, 2, 2, 2, 221, 222, 7, 70, 2, 2, 222, 224, 5, 100, 51, 2, 223, 116, 3, 2, 2, 2, 223, 117, 3, 2, 2, 2, 223, 121, 3, 2, 2, 2, 223, 122, 3, 2, 2, 2, 223, 123, 3, 2, 2, 2, 223, 124, 3, 2, 2, 2, 223, 126, 3, 2, 2, 2, 223, 130, 3, 2, 2, 2, 223, 136, 3, 2, 2, 2, 223, 141, 3, 2, 2, 2, 223, 161, 3, 2, 2, 2, 223, 175, 3, 2, 2, 2, 223, 183, 3, 2, 2, 2, 223, 187, 3, 2, 2, 2, 223, 196, 3, 2, 2, 2, 223, 206, 3, 2, 2, 2, 223, 210, 3, 2, 2, 2, 223, 216, 3, 2, 2, 2, 223, 219, 3, 2, 2, 2, 224, 7, 3, 2, 2, 2, 225, 227, 7, 24, 2, 2, 226, 228, 5, 22, 12, 2, 227, 226, 3, 2, 2, 2, 227, 228, 3, 2, 2, 2, 228, 230, 3, 2, 2, 2, 229, 231, 7, 3, 2, 2, 230, 229, 3, 2, 2, 2, 230, 231, 3, 2, 2, 2, 231, 9, 3, 2, 2, 2, 232, 233, 7, 25, 2, 2, 233, 234, 7, 70, 2, 2, 234, 235, 7, 25, 2, 2, 235, 11, 3, 2, 2, 2, 236, 241, 7, 70, 2, 2, 237, 238, 7, 26, 2, 2, 238, 240, 7, 70, 2, 2, 239, 237, 3, 2, 2, 2, 240, 243, 3, 2, 2, 2, 241, 239, 3, 2, 2, 2, 241, 242, 3, 2, 2, 2, 242, 246, 3, 2, 2, 2, 243, 241, 3, 2, 2, 2, 244, 245, 7, 27, 2, 2, 245, 247, 7, 70, 2, 2, 246, 244, 3, 2, 2, 2, 246, 247, 3, 2, 2, 2, 247, 13, 3, 2, 2, 2, 248, 249, 5, 32, 17, 2, 249, 15, 3, 2, 2, 2, 250, 251, 5, 32, 17, 2, 251, 17, 3, 2, 2, 2, 252, 257, 5, 32, 17, 2, 253, 254, 7, 17, 2, 2, 254, 256, 5, 32, 17, 2, 255, 253, 3, 2, 2, 2, 256, 259, 3, 2, 2, 2, 257, 255, 3, 2, 2, 2, 257, 258, 3, 2, 2, 2, 258, 19, 3, 2, 2, 2, 259, 257, 3, 2, 2, 2, 260, 265, 7, 70, 2, 2, 261, 262, 7, 17, 2, 2, 262, 264, 7, 70, 2, 2, 263, 261, 3, 2, 2, 2, 264, 267, 3, 2, 2, 2, 265, 263, 3, 2, 2, 2, 265, 266, 3, 2, 2, 2, 266, 21, 3, 2, 2, 2, 267, 265, 3, 2, 2, 2, 268, 273, 5, 24, 13, 2, 269, 270, 7, 17, 2, 2, 270, 272, 5, 24, 13, 2, 271, 269, 3, 2, 2, 2, 272, 275, 3, 2, 2, 2, 273, 271, 3, 2, 2, 2, 273, 274, 3, 2, 2, 2, 274, 23, 3, 2, 2, 2, 275, 273, 3, 2, 2, 2, 276, 277, 8, 13, 1, 2, 277, 290, 7, 28, 2, 2, 278, 290, 7, 29, 2, 2, 279, 290, 7, 30, 2, 2, 280, 290, 5, 72, 37, 2, 281, 290, 5, 74, 38, 2, 282, 290, 7, 31, 2, 2, 283, 290, 5, 40, 21, 2, 284, 290, 5, 26, 14, 2, 285, 290, 5, 46, 24, 2, 286, 287, 5, 68, 35, 2, 287, 288, 5, 24, 13, 10, 288, 290, 3, 2, 2, 2, 289, 276, 3, 2, 2, 2, 289, 278, 3, 2, 2, 2, 289, 279, 3, 2, 2, 2, 289, 280, 3, 2, 2, 2, 289, 281, 3, 2, 2, 2, 289, 282, 3, 2, 2, 2, 289, 283, 3, 2, 2, 2, 289, 284, 3, 2, 2, 2, 289, 285, 3, 2, 2, 2, 289, 286, 3, 2, 2, 2, 290, 325, 3, 2, 2, 2, 291, 292, 12, 11, 2, 2, 292, 293, 5, 70, 36, 2, 293, 294, 5, 24, 13, 11, 294, 324, 3, 2, 2, 2, 295, 296, 12, 9, 2, 2, 296, 297, 5, 64, 33, 2, 297, 298, 5, 24, 13, 10, 298, 324, 3, 2, 2, 2, 299, 300, 12, 8, 2, 2, 300, 301, 5, 62, 32, 2, 301, 302, 5, 24, 13, 9, 302, 324, 3, 2, 2, 2, 303, 304, 12, 7, 2, 2, 304, 305, 5, 60, 31, 2, 305, 306, 5, 24, 13, 7, 306, 324, 3, 2, 2, 2, 307, 308, 12, 6, 2, 2, 308, 309, 5, 58, 30, 2, 309, 310, 5, 24, 13, 7, 310, 324, 3, 2, 2, 2, 311, 312, 12, 5, 2, 2, 312, 313, 5, 56, 29, 2, 313, 314, 5, 24, 13, 6, 314, 324, 3, 2, 2, 2, 315, 316, 12, 4, 2, 2, 316, 317, 5, 54, 28, 2, 317, 318, 5, 24, 13, 5, 318, 324, 3, 2, 2, 2, 319, 320, 12, 3, 2, 2, 320, 321, 5, 66, 34, 2, 321, 322, 5, 24, 13, 4, 322, 324, 3, 2, 2, 2, 323, 291, 3, 2, 2, 2, 323, 295, 3, 2, 2, 2, 323, 299, 3, 2, 2, 2, 323, 303, 3, 2, 2, 2, 323, 307, 3, 2, 2, 2, 323, 311, 3, 2, 2, 2, 323, 315, 3, 2, 2, 2, 323, 319, 3, 2, 2, 2, 324, 327, 3, 2, 2, 2, 325, 323, 3, 2, 2, 2, 325, 326, 3, 2, 2, 2, 326, 25, 3, 2, 2, 2, 327, 325, 3, 2, 2, 2, 328, 332, 5, 30, 16, 2, 329, 331, 5, 36, 19, 2, 330, 329, 3, 2, 2, 2, 331, 334, 3, 2, 2, 2, 332, 330, 3, 2, 2, 2, 332, 333, 3, 2, 2, 2, 333, 27, 3, 2, 2, 2, 334, 332, 3, 2, 2, 2, 335, 337, 5, 30, 16, 2, 336, 338, 5, 36, 19, 2, 337, 336, 3, 2, 2, 2, 338, 339, 3, 2, 2, 2, 339, 337, 3, 2, 2, 2, 339, 340, 3, 2, 2, 2, 340, 29, 3, 2, 2, 2, 341, 347, 5, 32, 17, 2, 342, 343, 7, 32, 2, 2, 343, 344, 5, 24, 13, 2, 344, 345, 7, 33, 2, 2, 345, 347, 3, 2, 2, 2, 346, 341, 3, 2, 2, 2, 346, 342, 3, 2, 2, 2, 347, 31, 3, 2, 2, 2, 348, 355, 7, 70, 2, 2, 349, 350, 7, 32, 2, 2, 350, 351, 5, 24, 13, 2, 351, 352, 7, 33, 2, 2, 352, 353, 5, 34, 18, 2, 353, 355, 3, 2, 2, 2, 354, 348, 3, 2, 2, 2, 354, 349, 3, 2, 2, 2, 355, 359, 3, 2, 2, 2, 356, 358, 5, 34, 18, 2, 357, 356, 3, 2, 2, 2, 358, 361, 3, 2, 2, 2, 359, 357, 3, 2, 2, 2, 359, 360, 3, 2, 2, 2, 360, 33, 3, 2, 2, 2, 361, 359, 3, 2, 2, 2, 362, 364, 5, 36, 19, 2, 363, 362, 3, 2, 2, 2, 364, 367, 3, 2, 2, 2, 365, 363, 3, 2, 2, 2, 365, 366, 3, 2, 2, 2, 366, 374, 3, 2, 2, 2, 367, 365, 3, 2, 2, 2, 368, 369, 7, 34, 2, 2, 369, 370, 5, 24, 13, 2, 370, 371, 7, 35, 2, 2, 371, 375, 3, 2, 2, 2, 372, 373, 7, 26, 2, 2, 373, 375, 7, 70, 2, 2, 374, 368, 3, 2, 2, 2, 374, 372, 3, 2, 2, 2, 375, 35, 3, 2, 2, 2, 376, 377, 7, 27, 2, 2, 377, 379, 7, 70, 2, 2, 378, 376, 3, 2, 2, 2, 378, 379, 3, 2, 2, 2, 379, 380, 3, 2, 2, 2, 380, 381, 5, 38, 20, 2, 381, 37, 3, 2, 2, 2, 382, 384, 7, 32, 2, 2, 383, 385, 5, 22, 12, 2, 384, 383, 3, 2, 2, 2, 384, 385, 3, 2, 2, 2, 385, 386, 3, 2, 2, 2, 386, 390, 7, 33, 2, 2, 387, 390, 5, 46, 24, 2, 388, 390, 5, 74, 38, 2, 389, 382, 3, 2, 2, 2, 389, 387, 3, 2, 2, 2, 389, 388, 3, 2, 2, 2, 390, 39, 3, 2, 2, 2, 391, 392, 7, 19, 2, 2, 392, 393, 5, 42, 22, 2, 393, 41, 3, 2, 2, 2, 394, 396, 7, 32, 2, 2, 395, 397, 5, 44, 23, 2, 396, 395, 3, 2, 2, 2, 396, 397, 3, 2, 2, 2, 397, 398, 3, 2, 2, 2, 398, 399, 7, 33, 2, 2, 399, 400, 5, 4, 3, 2, 400, 401, 7, 8, 2, 2, 401, 43, 3, 2, 2, 2, 402, 405, 5, 20, 11, 2, 403, 404, 7, 17, 2, 2, 404, 406, 7, 31, 2, 2, 405, 403, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 409, 3, 2, 2, 2, 407, 409, 7, 31, 2, 2, 408, 402, 3, 2, 2, 2, 408, 407, 3, 2, 2, 2, 409, 45, 3, 2, 2, 2, 410, 412, 7, 36, 2, 2, 411, 413, 5, 48, 25, 2, 412, 411, 3, 2, 2, 2, 412, 413, 3, 2, 2, 2, 413, 414, 3, 2, 2, 2, 414, 415, 7, 37, 2, 2, 415, 47, 3, 2, 2, 2, 416, 422, 5, 50, 26, 2, 417, 418, 5, 52, 27, 2, 418, 419, 5, 50, 26, 2, 419, 421, 3, 2, 2, 2, 420, 417, 3, 2, 2, 2, 421, 424, 3, 2, 2, 2, 422, 420, 3, 2, 2, 2, 422, 423, 3, 2, 2, 2, 423, 426, 3, 2, 2, 2, 424, 422, 3, 2, 2, 2, 425, 427, 5, 52, 27, 2, 426, 425, 3, 2, 2, 2, 426, 427, 3, 2, 2, 2, 427, 49, 3, 2, 2, 2, 428, 429, 7, 34, 2, 2, 429, 430, 5, 24, 13, 2, 430, 431, 7, 35, 2, 2, 431, 432, 7, 4, 2, 2, 432, 433, 5, 24, 13, 2, 433, 439, 3, 2, 2, 2, 434, 435, 7, 70, 2, 2, 435, 436, 7, 4, 2, 2, 436, 439, 5, 24, 13, 2, 437, 439, 5, 24, 13, 2, 438, 428, 3, 2, 2, 2, 438, 434, 3, 2, 2, 2, 438, 437, 3, 2, 2, 2, 439, 51, 3, 2, 2, 2, 440, 441, 9, 2, 2, 2, 441, 53, 3, 2, 2, 2, 442, 443, 7, 38, 2, 2, 443, 55, 3, 2, 2, 2, 444, 445, 7, 39, 2, 2, 445, 57, 3, 2, 2, 2, 446, 447, 9, 3, 2, 2, 447, 59, 3, 2, 2, 2, 448, 449, 7, 46, 2, 2, 449, 61, 3, 2, 2, 2, 450, 451, 9, 4, 2, 2, 451, 63, 3, 2, 2, 2, 452, 453, 9, 5, 2, 2, 453, 65, 3, 2, 2, 2, 454, 455, 9, 6, 2, 2, 455, 67, 3, 2, 2, 2, 456, 457, 9, 7, 2, 2, 457, 69, 3, 2, 2, 2, 458, 459, 7, 60, 2, 2, 459, 71, 3, 2, 2, 2, 460, 461, 9, 8, 2, 2, 461, 73, 3, 2, 2, 2, 462, 463, 9, 9, 2, 2, 463, 75, 3, 2, 2, 2, 464, 465, 7, 20, 2, 2, 465, 466, 7, 70, 2, 2, 466, 467, 5, 90, 46, 2, 467, 77, 3, 2, 2, 2, 468, 469, 7, 19, 2, 2, 469, 470, 5, 12, 7, 2, 470, 471, 5, 42, 22, 2, 471, 79, 3, 2, 2, 2, 472, 473, 7, 61, 2, 2, 473, 474, 7, 19, 2, 2, 474, 475, 5, 12, 7, 2, 475, 476, 5, 42, 22, 2, 476, 81, 3, 2, 2, 2, 477, 478, 9, 10, 2, 2, 478, 83, 3, 2, 2, 2, 479, 480, 7, 70, 2, 2, 480, 482, 7, 36, 2, 2, 481, 483, 5, 82, 42, 2, 482, 481, 3, 2, 2, 2, 483, 484, 3, 2, 2, 2, 484, 482, 3, 2, 2, 2, 484, 485, 3, 2, 2, 2, 485, 486, 3, 2, 2, 2, 486, 487, 7, 37, 2, 2, 487, 85, 3, 2, 2, 2, 488, 489, 7, 64, 2, 2, 489, 491, 7, 32, 2, 2, 490, 492, 5, 44, 23, 2, 491, 490, 3, 2, 2, 2, 491, 492, 3, 2, 2, 2, 492, 493, 3, 2, 2, 2, 493, 494, 7, 33, 2, 2, 494, 495, 5, 4, 3, 2, 495, 496, 7, 8, 2, 2, 496, 87, 3, 2, 2, 2, 497, 501, 5, 78, 40, 2, 498, 501, 5, 84, 43, 2, 499, 501, 5, 86, 44, 2, 500, 497, 3, 2, 2, 2, 500, 498, 3, 2, 2, 2, 500, 499, 3, 2, 2, 2, 501, 89, 3, 2, 2, 2, 502, 507, 5, 80, 41, 2, 503, 507, 5, 78, 40, 2, 504, 507, 5, 84, 43, 2, 505, 507, 5, 86, 44, 2, 506, 502, 3, 2, 2, 2, 506, 503, 3, 2, 2, 2, 506, 504, 3, 2, 2, 2, 506, 505, 3, 2, 2, 2, 507, 510, 3, 2, 2, 2, 508, 506, 3, 2, 2, 2, 508, 509, 3, 2, 2, 2, 509, 511, 3, 2, 2, 2, 510, 508, 3, 2, 2, 2, 511, 512, 7, 8, 2, 2, 512, 91, 3, 2, 2, 2, 513, 514, 7, 70, 2, 2, 514, 515, 7, 65, 2, 2, 515, 93, 3, 2, 2, 2, 516, 517, 7, 70, 2, 2, 517, 518, 7, 66, 2, 2, 518, 95, 3, 2, 2, 2, 519, 520, 7, 70, 2, 2, 520, 521, 7, 67, 2, 2, 521, 97, 3, 2, 2, 2, 522, 523, 7, 70, 2, 2, 523, 524, 7, 68, 2, 2, 524, 99, 3, 2, 2, 2, 525, 526, 7, 70, 2, 2, 526, 527, 7, 69, 2, 2, 527, 101, 3, 2, 2, 2, 528, 529, 5, 32, 17, 2, 529, 103, 3, 2, 2, 2, 45, 110, 114, 152, 157, 169, 191, 196, 202, 214, 219, 223, 227, 230, 241, 246, 257, 265, 273, 289, 323, 325, 332, 339, 346, 354, 359, 365, 374, 378, 384, 389, 396, 405, 408, 412, 422, 426, 438, 484, 491, 500, 506, 508] \ No newline at end of file diff --git a/src/main/java/org/luapp/language/generator/luapp.tokens b/src/main/java/org/luapp/language/generator/luapp.tokens index b349b4f..d15989f 100644 --- a/src/main/java/org/luapp/language/generator/luapp.tokens +++ b/src/main/java/org/luapp/language/generator/luapp.tokens @@ -65,19 +65,18 @@ T__63=64 T__64=65 T__65=66 T__66=67 -T__67=68 -NAME=69 -NORMALSTRING=70 -CHARSTRING=71 -LONGSTRING=72 -INT=73 -HEX=74 -FLOAT=75 -HEX_FLOAT=76 -COMMENT=77 -LINE_COMMENT=78 -WS=79 -SHEBANG=80 +NAME=68 +NORMALSTRING=69 +CHARSTRING=70 +LONGSTRING=71 +INT=72 +HEX=73 +FLOAT=74 +HEX_FLOAT=75 +COMMENT=76 +LINE_COMMENT=77 +WS=78 +SHEBANG=79 ';'=1 '='=2 'break'=3 @@ -136,13 +135,12 @@ SHEBANG=80 'not'=56 '#'=57 '^'=58 -'new'=59 -'static'=60 -'get'=61 -'set'=62 -'constructor'=63 -'++'=64 -'+='=65 -'*='=66 -'/='=67 -'-='=68 +'static'=59 +'get'=60 +'set'=61 +'constructor'=62 +'++'=63 +'+='=64 +'*='=65 +'/='=66 +'-='=67 diff --git a/src/main/java/org/luapp/language/generator/luappBaseListener.java b/src/main/java/org/luapp/language/generator/luappBaseListener.java index dda4aed..d71d160 100644 --- a/src/main/java/org/luapp/language/generator/luappBaseListener.java +++ b/src/main/java/org/luapp/language/generator/luappBaseListener.java @@ -1,4 +1,4 @@ -// Generated from C:/Users/Harry/Desktop/Lua/lua-plus-plus/src/main/java/org/luapp/language/parser\luapp.g4 by ANTLR 4.8 +// Generated from C:/Users/Harry/Desktop/Lua/lpp2electricboogaloo/lua-plus-plus/src/main/java/org/luapp/language/parser\luapp.g4 by ANTLR 4.8 package org.luapp.language.generator; import org.antlr.v4.runtime.ParserRuleContext; @@ -455,18 +455,6 @@ public class luappBaseListener implements luappListener { *

The default implementation does nothing.

*/ @Override public void exitString(luappParser.StringContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void enterNewclass(luappParser.NewclassContext ctx) { } - /** - * {@inheritDoc} - * - *

The default implementation does nothing.

- */ - @Override public void exitNewclass(luappParser.NewclassContext ctx) { } /** * {@inheritDoc} * diff --git a/src/main/java/org/luapp/language/generator/luappBaseVisitor.java b/src/main/java/org/luapp/language/generator/luappBaseVisitor.java index e18ede9..45e1991 100644 --- a/src/main/java/org/luapp/language/generator/luappBaseVisitor.java +++ b/src/main/java/org/luapp/language/generator/luappBaseVisitor.java @@ -1,4 +1,4 @@ -// Generated from C:/Users/Harry/Desktop/Lua/lua-plus-plus/src/main/java/org/luapp/language/parser\luapp.g4 by ANTLR 4.8 +// Generated from C:/Users/Harry/Desktop/Lua/lpp2electricboogaloo/lua-plus-plus/src/main/java/org/luapp/language/parser\luapp.g4 by ANTLR 4.8 package org.luapp.language.generator; import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor; @@ -270,13 +270,6 @@ public class luappBaseVisitor extends AbstractParseTreeVisitor implements * {@link #visitChildren} on {@code ctx}.

*/ @Override public T visitString(luappParser.StringContext ctx) { return visitChildren(ctx); } - /** - * {@inheritDoc} - * - *

The default implementation returns the result of calling - * {@link #visitChildren} on {@code ctx}.

- */ - @Override public T visitNewclass(luappParser.NewclassContext ctx) { return visitChildren(ctx); } /** * {@inheritDoc} * diff --git a/src/main/java/org/luapp/language/generator/luappLexer.interp b/src/main/java/org/luapp/language/generator/luappLexer.interp index fdbbdeb..ed89e6b 100644 --- a/src/main/java/org/luapp/language/generator/luappLexer.interp +++ b/src/main/java/org/luapp/language/generator/luappLexer.interp @@ -58,7 +58,6 @@ null 'not' '#' '^' -'new' 'static' 'get' 'set' @@ -150,7 +149,6 @@ null null null null -null NAME NORMALSTRING CHARSTRING @@ -232,7 +230,6 @@ T__63 T__64 T__65 T__66 -T__67 NAME NORMALSTRING CHARSTRING @@ -263,4 +260,4 @@ mode names: DEFAULT_MODE atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 82, 694, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 53, 3, 53, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 7, 70, 438, 10, 70, 12, 70, 14, 70, 441, 11, 70, 3, 71, 3, 71, 3, 71, 7, 71, 446, 10, 71, 12, 71, 14, 71, 449, 11, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 7, 72, 456, 10, 72, 12, 72, 14, 72, 459, 11, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 7, 74, 473, 10, 74, 12, 74, 14, 74, 476, 11, 74, 3, 74, 5, 74, 479, 10, 74, 3, 75, 6, 75, 482, 10, 75, 13, 75, 14, 75, 483, 3, 76, 3, 76, 3, 76, 6, 76, 489, 10, 76, 13, 76, 14, 76, 490, 3, 77, 6, 77, 494, 10, 77, 13, 77, 14, 77, 495, 3, 77, 3, 77, 7, 77, 500, 10, 77, 12, 77, 14, 77, 503, 11, 77, 3, 77, 5, 77, 506, 10, 77, 3, 77, 3, 77, 6, 77, 510, 10, 77, 13, 77, 14, 77, 511, 3, 77, 5, 77, 515, 10, 77, 3, 77, 6, 77, 518, 10, 77, 13, 77, 14, 77, 519, 3, 77, 3, 77, 5, 77, 524, 10, 77, 3, 78, 3, 78, 3, 78, 6, 78, 529, 10, 78, 13, 78, 14, 78, 530, 3, 78, 3, 78, 7, 78, 535, 10, 78, 12, 78, 14, 78, 538, 11, 78, 3, 78, 5, 78, 541, 10, 78, 3, 78, 3, 78, 3, 78, 3, 78, 6, 78, 547, 10, 78, 13, 78, 14, 78, 548, 3, 78, 5, 78, 552, 10, 78, 3, 78, 3, 78, 3, 78, 6, 78, 557, 10, 78, 13, 78, 14, 78, 558, 3, 78, 3, 78, 5, 78, 563, 10, 78, 3, 79, 3, 79, 5, 79, 567, 10, 79, 3, 79, 6, 79, 570, 10, 79, 13, 79, 14, 79, 571, 3, 80, 3, 80, 5, 80, 576, 10, 80, 3, 80, 6, 80, 579, 10, 80, 13, 80, 14, 80, 580, 3, 81, 3, 81, 3, 81, 3, 81, 5, 81, 587, 10, 81, 3, 81, 3, 81, 3, 81, 3, 81, 5, 81, 593, 10, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 5, 82, 606, 10, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 6, 84, 618, 10, 84, 13, 84, 14, 84, 619, 3, 84, 3, 84, 3, 85, 3, 85, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 7, 88, 643, 10, 88, 12, 88, 14, 88, 646, 11, 88, 3, 88, 3, 88, 7, 88, 650, 10, 88, 12, 88, 14, 88, 653, 11, 88, 3, 88, 3, 88, 7, 88, 657, 10, 88, 12, 88, 14, 88, 660, 11, 88, 3, 88, 3, 88, 7, 88, 664, 10, 88, 12, 88, 14, 88, 667, 11, 88, 5, 88, 669, 10, 88, 3, 88, 3, 88, 3, 88, 5, 88, 674, 10, 88, 3, 88, 3, 88, 3, 89, 6, 89, 679, 10, 89, 13, 89, 14, 89, 680, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 7, 90, 688, 10, 90, 12, 90, 14, 90, 691, 11, 90, 3, 90, 3, 90, 3, 474, 2, 91, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 74, 147, 2, 149, 75, 151, 76, 153, 77, 155, 78, 157, 2, 159, 2, 161, 2, 163, 2, 165, 2, 167, 2, 169, 2, 171, 2, 173, 79, 175, 80, 177, 81, 179, 82, 3, 2, 19, 5, 2, 67, 92, 97, 97, 99, 124, 6, 2, 50, 59, 67, 92, 97, 97, 99, 124, 4, 2, 36, 36, 94, 94, 4, 2, 41, 41, 94, 94, 4, 2, 90, 90, 122, 122, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 4, 2, 82, 82, 114, 114, 12, 2, 36, 36, 41, 41, 94, 94, 99, 100, 104, 104, 112, 112, 116, 116, 118, 118, 120, 120, 124, 124, 3, 2, 50, 52, 3, 2, 50, 59, 5, 2, 50, 59, 67, 72, 99, 104, 6, 2, 12, 12, 15, 15, 63, 63, 93, 93, 4, 2, 12, 12, 15, 15, 5, 2, 12, 12, 15, 15, 93, 93, 4, 3, 12, 12, 15, 15, 5, 2, 11, 12, 14, 15, 34, 34, 2, 731, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 3, 181, 3, 2, 2, 2, 5, 183, 3, 2, 2, 2, 7, 185, 3, 2, 2, 2, 9, 191, 3, 2, 2, 2, 11, 196, 3, 2, 2, 2, 13, 199, 3, 2, 2, 2, 15, 203, 3, 2, 2, 2, 17, 209, 3, 2, 2, 2, 19, 216, 3, 2, 2, 2, 21, 222, 3, 2, 2, 2, 23, 225, 3, 2, 2, 2, 25, 230, 3, 2, 2, 2, 27, 237, 3, 2, 2, 2, 29, 242, 3, 2, 2, 2, 31, 246, 3, 2, 2, 2, 33, 248, 3, 2, 2, 2, 35, 251, 3, 2, 2, 2, 37, 260, 3, 2, 2, 2, 39, 266, 3, 2, 2, 2, 41, 274, 3, 2, 2, 2, 43, 280, 3, 2, 2, 2, 45, 285, 3, 2, 2, 2, 47, 292, 3, 2, 2, 2, 49, 295, 3, 2, 2, 2, 51, 297, 3, 2, 2, 2, 53, 299, 3, 2, 2, 2, 55, 303, 3, 2, 2, 2, 57, 309, 3, 2, 2, 2, 59, 314, 3, 2, 2, 2, 61, 318, 3, 2, 2, 2, 63, 320, 3, 2, 2, 2, 65, 322, 3, 2, 2, 2, 67, 324, 3, 2, 2, 2, 69, 326, 3, 2, 2, 2, 71, 328, 3, 2, 2, 2, 73, 330, 3, 2, 2, 2, 75, 333, 3, 2, 2, 2, 77, 337, 3, 2, 2, 2, 79, 339, 3, 2, 2, 2, 81, 341, 3, 2, 2, 2, 83, 344, 3, 2, 2, 2, 85, 347, 3, 2, 2, 2, 87, 350, 3, 2, 2, 2, 89, 353, 3, 2, 2, 2, 91, 356, 3, 2, 2, 2, 93, 358, 3, 2, 2, 2, 95, 360, 3, 2, 2, 2, 97, 362, 3, 2, 2, 2, 99, 364, 3, 2, 2, 2, 101, 366, 3, 2, 2, 2, 103, 369, 3, 2, 2, 2, 105, 371, 3, 2, 2, 2, 107, 373, 3, 2, 2, 2, 109, 375, 3, 2, 2, 2, 111, 378, 3, 2, 2, 2, 113, 381, 3, 2, 2, 2, 115, 385, 3, 2, 2, 2, 117, 387, 3, 2, 2, 2, 119, 389, 3, 2, 2, 2, 121, 393, 3, 2, 2, 2, 123, 400, 3, 2, 2, 2, 125, 404, 3, 2, 2, 2, 127, 408, 3, 2, 2, 2, 129, 420, 3, 2, 2, 2, 131, 423, 3, 2, 2, 2, 133, 426, 3, 2, 2, 2, 135, 429, 3, 2, 2, 2, 137, 432, 3, 2, 2, 2, 139, 435, 3, 2, 2, 2, 141, 442, 3, 2, 2, 2, 143, 452, 3, 2, 2, 2, 145, 462, 3, 2, 2, 2, 147, 478, 3, 2, 2, 2, 149, 481, 3, 2, 2, 2, 151, 485, 3, 2, 2, 2, 153, 523, 3, 2, 2, 2, 155, 562, 3, 2, 2, 2, 157, 564, 3, 2, 2, 2, 159, 573, 3, 2, 2, 2, 161, 592, 3, 2, 2, 2, 163, 605, 3, 2, 2, 2, 165, 607, 3, 2, 2, 2, 167, 612, 3, 2, 2, 2, 169, 623, 3, 2, 2, 2, 171, 625, 3, 2, 2, 2, 173, 627, 3, 2, 2, 2, 175, 636, 3, 2, 2, 2, 177, 678, 3, 2, 2, 2, 179, 684, 3, 2, 2, 2, 181, 182, 7, 61, 2, 2, 182, 4, 3, 2, 2, 2, 183, 184, 7, 63, 2, 2, 184, 6, 3, 2, 2, 2, 185, 186, 7, 100, 2, 2, 186, 187, 7, 116, 2, 2, 187, 188, 7, 103, 2, 2, 188, 189, 7, 99, 2, 2, 189, 190, 7, 109, 2, 2, 190, 8, 3, 2, 2, 2, 191, 192, 7, 105, 2, 2, 192, 193, 7, 113, 2, 2, 193, 194, 7, 118, 2, 2, 194, 195, 7, 113, 2, 2, 195, 10, 3, 2, 2, 2, 196, 197, 7, 102, 2, 2, 197, 198, 7, 113, 2, 2, 198, 12, 3, 2, 2, 2, 199, 200, 7, 103, 2, 2, 200, 201, 7, 112, 2, 2, 201, 202, 7, 102, 2, 2, 202, 14, 3, 2, 2, 2, 203, 204, 7, 121, 2, 2, 204, 205, 7, 106, 2, 2, 205, 206, 7, 107, 2, 2, 206, 207, 7, 110, 2, 2, 207, 208, 7, 103, 2, 2, 208, 16, 3, 2, 2, 2, 209, 210, 7, 116, 2, 2, 210, 211, 7, 103, 2, 2, 211, 212, 7, 114, 2, 2, 212, 213, 7, 103, 2, 2, 213, 214, 7, 99, 2, 2, 214, 215, 7, 118, 2, 2, 215, 18, 3, 2, 2, 2, 216, 217, 7, 119, 2, 2, 217, 218, 7, 112, 2, 2, 218, 219, 7, 118, 2, 2, 219, 220, 7, 107, 2, 2, 220, 221, 7, 110, 2, 2, 221, 20, 3, 2, 2, 2, 222, 223, 7, 107, 2, 2, 223, 224, 7, 104, 2, 2, 224, 22, 3, 2, 2, 2, 225, 226, 7, 118, 2, 2, 226, 227, 7, 106, 2, 2, 227, 228, 7, 103, 2, 2, 228, 229, 7, 112, 2, 2, 229, 24, 3, 2, 2, 2, 230, 231, 7, 103, 2, 2, 231, 232, 7, 110, 2, 2, 232, 233, 7, 117, 2, 2, 233, 234, 7, 103, 2, 2, 234, 235, 7, 107, 2, 2, 235, 236, 7, 104, 2, 2, 236, 26, 3, 2, 2, 2, 237, 238, 7, 103, 2, 2, 238, 239, 7, 110, 2, 2, 239, 240, 7, 117, 2, 2, 240, 241, 7, 103, 2, 2, 241, 28, 3, 2, 2, 2, 242, 243, 7, 104, 2, 2, 243, 244, 7, 113, 2, 2, 244, 245, 7, 116, 2, 2, 245, 30, 3, 2, 2, 2, 246, 247, 7, 46, 2, 2, 247, 32, 3, 2, 2, 2, 248, 249, 7, 107, 2, 2, 249, 250, 7, 112, 2, 2, 250, 34, 3, 2, 2, 2, 251, 252, 7, 104, 2, 2, 252, 253, 7, 119, 2, 2, 253, 254, 7, 112, 2, 2, 254, 255, 7, 101, 2, 2, 255, 256, 7, 118, 2, 2, 256, 257, 7, 107, 2, 2, 257, 258, 7, 113, 2, 2, 258, 259, 7, 112, 2, 2, 259, 36, 3, 2, 2, 2, 260, 261, 7, 101, 2, 2, 261, 262, 7, 110, 2, 2, 262, 263, 7, 99, 2, 2, 263, 264, 7, 117, 2, 2, 264, 265, 7, 117, 2, 2, 265, 38, 3, 2, 2, 2, 266, 267, 7, 103, 2, 2, 267, 268, 7, 122, 2, 2, 268, 269, 7, 118, 2, 2, 269, 270, 7, 103, 2, 2, 270, 271, 7, 112, 2, 2, 271, 272, 7, 102, 2, 2, 272, 273, 7, 117, 2, 2, 273, 40, 3, 2, 2, 2, 274, 275, 7, 110, 2, 2, 275, 276, 7, 113, 2, 2, 276, 277, 7, 101, 2, 2, 277, 278, 7, 99, 2, 2, 278, 279, 7, 110, 2, 2, 279, 42, 3, 2, 2, 2, 280, 281, 7, 117, 2, 2, 281, 282, 7, 99, 2, 2, 282, 283, 7, 104, 2, 2, 283, 284, 7, 103, 2, 2, 284, 44, 3, 2, 2, 2, 285, 286, 7, 116, 2, 2, 286, 287, 7, 103, 2, 2, 287, 288, 7, 118, 2, 2, 288, 289, 7, 119, 2, 2, 289, 290, 7, 116, 2, 2, 290, 291, 7, 112, 2, 2, 291, 46, 3, 2, 2, 2, 292, 293, 7, 60, 2, 2, 293, 294, 7, 60, 2, 2, 294, 48, 3, 2, 2, 2, 295, 296, 7, 48, 2, 2, 296, 50, 3, 2, 2, 2, 297, 298, 7, 60, 2, 2, 298, 52, 3, 2, 2, 2, 299, 300, 7, 112, 2, 2, 300, 301, 7, 107, 2, 2, 301, 302, 7, 110, 2, 2, 302, 54, 3, 2, 2, 2, 303, 304, 7, 104, 2, 2, 304, 305, 7, 99, 2, 2, 305, 306, 7, 110, 2, 2, 306, 307, 7, 117, 2, 2, 307, 308, 7, 103, 2, 2, 308, 56, 3, 2, 2, 2, 309, 310, 7, 118, 2, 2, 310, 311, 7, 116, 2, 2, 311, 312, 7, 119, 2, 2, 312, 313, 7, 103, 2, 2, 313, 58, 3, 2, 2, 2, 314, 315, 7, 48, 2, 2, 315, 316, 7, 48, 2, 2, 316, 317, 7, 48, 2, 2, 317, 60, 3, 2, 2, 2, 318, 319, 7, 42, 2, 2, 319, 62, 3, 2, 2, 2, 320, 321, 7, 43, 2, 2, 321, 64, 3, 2, 2, 2, 322, 323, 7, 93, 2, 2, 323, 66, 3, 2, 2, 2, 324, 325, 7, 95, 2, 2, 325, 68, 3, 2, 2, 2, 326, 327, 7, 125, 2, 2, 327, 70, 3, 2, 2, 2, 328, 329, 7, 127, 2, 2, 329, 72, 3, 2, 2, 2, 330, 331, 7, 113, 2, 2, 331, 332, 7, 116, 2, 2, 332, 74, 3, 2, 2, 2, 333, 334, 7, 99, 2, 2, 334, 335, 7, 112, 2, 2, 335, 336, 7, 102, 2, 2, 336, 76, 3, 2, 2, 2, 337, 338, 7, 62, 2, 2, 338, 78, 3, 2, 2, 2, 339, 340, 7, 64, 2, 2, 340, 80, 3, 2, 2, 2, 341, 342, 7, 62, 2, 2, 342, 343, 7, 63, 2, 2, 343, 82, 3, 2, 2, 2, 344, 345, 7, 64, 2, 2, 345, 346, 7, 63, 2, 2, 346, 84, 3, 2, 2, 2, 347, 348, 7, 128, 2, 2, 348, 349, 7, 63, 2, 2, 349, 86, 3, 2, 2, 2, 350, 351, 7, 63, 2, 2, 351, 352, 7, 63, 2, 2, 352, 88, 3, 2, 2, 2, 353, 354, 7, 48, 2, 2, 354, 355, 7, 48, 2, 2, 355, 90, 3, 2, 2, 2, 356, 357, 7, 45, 2, 2, 357, 92, 3, 2, 2, 2, 358, 359, 7, 47, 2, 2, 359, 94, 3, 2, 2, 2, 360, 361, 7, 44, 2, 2, 361, 96, 3, 2, 2, 2, 362, 363, 7, 49, 2, 2, 363, 98, 3, 2, 2, 2, 364, 365, 7, 39, 2, 2, 365, 100, 3, 2, 2, 2, 366, 367, 7, 49, 2, 2, 367, 368, 7, 49, 2, 2, 368, 102, 3, 2, 2, 2, 369, 370, 7, 40, 2, 2, 370, 104, 3, 2, 2, 2, 371, 372, 7, 126, 2, 2, 372, 106, 3, 2, 2, 2, 373, 374, 7, 128, 2, 2, 374, 108, 3, 2, 2, 2, 375, 376, 7, 62, 2, 2, 376, 377, 7, 62, 2, 2, 377, 110, 3, 2, 2, 2, 378, 379, 7, 64, 2, 2, 379, 380, 7, 64, 2, 2, 380, 112, 3, 2, 2, 2, 381, 382, 7, 112, 2, 2, 382, 383, 7, 113, 2, 2, 383, 384, 7, 118, 2, 2, 384, 114, 3, 2, 2, 2, 385, 386, 7, 37, 2, 2, 386, 116, 3, 2, 2, 2, 387, 388, 7, 96, 2, 2, 388, 118, 3, 2, 2, 2, 389, 390, 7, 112, 2, 2, 390, 391, 7, 103, 2, 2, 391, 392, 7, 121, 2, 2, 392, 120, 3, 2, 2, 2, 393, 394, 7, 117, 2, 2, 394, 395, 7, 118, 2, 2, 395, 396, 7, 99, 2, 2, 396, 397, 7, 118, 2, 2, 397, 398, 7, 107, 2, 2, 398, 399, 7, 101, 2, 2, 399, 122, 3, 2, 2, 2, 400, 401, 7, 105, 2, 2, 401, 402, 7, 103, 2, 2, 402, 403, 7, 118, 2, 2, 403, 124, 3, 2, 2, 2, 404, 405, 7, 117, 2, 2, 405, 406, 7, 103, 2, 2, 406, 407, 7, 118, 2, 2, 407, 126, 3, 2, 2, 2, 408, 409, 7, 101, 2, 2, 409, 410, 7, 113, 2, 2, 410, 411, 7, 112, 2, 2, 411, 412, 7, 117, 2, 2, 412, 413, 7, 118, 2, 2, 413, 414, 7, 116, 2, 2, 414, 415, 7, 119, 2, 2, 415, 416, 7, 101, 2, 2, 416, 417, 7, 118, 2, 2, 417, 418, 7, 113, 2, 2, 418, 419, 7, 116, 2, 2, 419, 128, 3, 2, 2, 2, 420, 421, 7, 45, 2, 2, 421, 422, 7, 45, 2, 2, 422, 130, 3, 2, 2, 2, 423, 424, 7, 45, 2, 2, 424, 425, 7, 63, 2, 2, 425, 132, 3, 2, 2, 2, 426, 427, 7, 44, 2, 2, 427, 428, 7, 63, 2, 2, 428, 134, 3, 2, 2, 2, 429, 430, 7, 49, 2, 2, 430, 431, 7, 63, 2, 2, 431, 136, 3, 2, 2, 2, 432, 433, 7, 47, 2, 2, 433, 434, 7, 63, 2, 2, 434, 138, 3, 2, 2, 2, 435, 439, 9, 2, 2, 2, 436, 438, 9, 3, 2, 2, 437, 436, 3, 2, 2, 2, 438, 441, 3, 2, 2, 2, 439, 437, 3, 2, 2, 2, 439, 440, 3, 2, 2, 2, 440, 140, 3, 2, 2, 2, 441, 439, 3, 2, 2, 2, 442, 447, 7, 36, 2, 2, 443, 446, 5, 161, 81, 2, 444, 446, 10, 4, 2, 2, 445, 443, 3, 2, 2, 2, 445, 444, 3, 2, 2, 2, 446, 449, 3, 2, 2, 2, 447, 445, 3, 2, 2, 2, 447, 448, 3, 2, 2, 2, 448, 450, 3, 2, 2, 2, 449, 447, 3, 2, 2, 2, 450, 451, 7, 36, 2, 2, 451, 142, 3, 2, 2, 2, 452, 457, 7, 41, 2, 2, 453, 456, 5, 161, 81, 2, 454, 456, 10, 5, 2, 2, 455, 453, 3, 2, 2, 2, 455, 454, 3, 2, 2, 2, 456, 459, 3, 2, 2, 2, 457, 455, 3, 2, 2, 2, 457, 458, 3, 2, 2, 2, 458, 460, 3, 2, 2, 2, 459, 457, 3, 2, 2, 2, 460, 461, 7, 41, 2, 2, 461, 144, 3, 2, 2, 2, 462, 463, 7, 93, 2, 2, 463, 464, 5, 147, 74, 2, 464, 465, 7, 95, 2, 2, 465, 146, 3, 2, 2, 2, 466, 467, 7, 63, 2, 2, 467, 468, 5, 147, 74, 2, 468, 469, 7, 63, 2, 2, 469, 479, 3, 2, 2, 2, 470, 474, 7, 93, 2, 2, 471, 473, 11, 2, 2, 2, 472, 471, 3, 2, 2, 2, 473, 476, 3, 2, 2, 2, 474, 475, 3, 2, 2, 2, 474, 472, 3, 2, 2, 2, 475, 477, 3, 2, 2, 2, 476, 474, 3, 2, 2, 2, 477, 479, 7, 95, 2, 2, 478, 466, 3, 2, 2, 2, 478, 470, 3, 2, 2, 2, 479, 148, 3, 2, 2, 2, 480, 482, 5, 169, 85, 2, 481, 480, 3, 2, 2, 2, 482, 483, 3, 2, 2, 2, 483, 481, 3, 2, 2, 2, 483, 484, 3, 2, 2, 2, 484, 150, 3, 2, 2, 2, 485, 486, 7, 50, 2, 2, 486, 488, 9, 6, 2, 2, 487, 489, 5, 171, 86, 2, 488, 487, 3, 2, 2, 2, 489, 490, 3, 2, 2, 2, 490, 488, 3, 2, 2, 2, 490, 491, 3, 2, 2, 2, 491, 152, 3, 2, 2, 2, 492, 494, 5, 169, 85, 2, 493, 492, 3, 2, 2, 2, 494, 495, 3, 2, 2, 2, 495, 493, 3, 2, 2, 2, 495, 496, 3, 2, 2, 2, 496, 497, 3, 2, 2, 2, 497, 501, 7, 48, 2, 2, 498, 500, 5, 169, 85, 2, 499, 498, 3, 2, 2, 2, 500, 503, 3, 2, 2, 2, 501, 499, 3, 2, 2, 2, 501, 502, 3, 2, 2, 2, 502, 505, 3, 2, 2, 2, 503, 501, 3, 2, 2, 2, 504, 506, 5, 157, 79, 2, 505, 504, 3, 2, 2, 2, 505, 506, 3, 2, 2, 2, 506, 524, 3, 2, 2, 2, 507, 509, 7, 48, 2, 2, 508, 510, 5, 169, 85, 2, 509, 508, 3, 2, 2, 2, 510, 511, 3, 2, 2, 2, 511, 509, 3, 2, 2, 2, 511, 512, 3, 2, 2, 2, 512, 514, 3, 2, 2, 2, 513, 515, 5, 157, 79, 2, 514, 513, 3, 2, 2, 2, 514, 515, 3, 2, 2, 2, 515, 524, 3, 2, 2, 2, 516, 518, 5, 169, 85, 2, 517, 516, 3, 2, 2, 2, 518, 519, 3, 2, 2, 2, 519, 517, 3, 2, 2, 2, 519, 520, 3, 2, 2, 2, 520, 521, 3, 2, 2, 2, 521, 522, 5, 157, 79, 2, 522, 524, 3, 2, 2, 2, 523, 493, 3, 2, 2, 2, 523, 507, 3, 2, 2, 2, 523, 517, 3, 2, 2, 2, 524, 154, 3, 2, 2, 2, 525, 526, 7, 50, 2, 2, 526, 528, 9, 6, 2, 2, 527, 529, 5, 171, 86, 2, 528, 527, 3, 2, 2, 2, 529, 530, 3, 2, 2, 2, 530, 528, 3, 2, 2, 2, 530, 531, 3, 2, 2, 2, 531, 532, 3, 2, 2, 2, 532, 536, 7, 48, 2, 2, 533, 535, 5, 171, 86, 2, 534, 533, 3, 2, 2, 2, 535, 538, 3, 2, 2, 2, 536, 534, 3, 2, 2, 2, 536, 537, 3, 2, 2, 2, 537, 540, 3, 2, 2, 2, 538, 536, 3, 2, 2, 2, 539, 541, 5, 159, 80, 2, 540, 539, 3, 2, 2, 2, 540, 541, 3, 2, 2, 2, 541, 563, 3, 2, 2, 2, 542, 543, 7, 50, 2, 2, 543, 544, 9, 6, 2, 2, 544, 546, 7, 48, 2, 2, 545, 547, 5, 171, 86, 2, 546, 545, 3, 2, 2, 2, 547, 548, 3, 2, 2, 2, 548, 546, 3, 2, 2, 2, 548, 549, 3, 2, 2, 2, 549, 551, 3, 2, 2, 2, 550, 552, 5, 159, 80, 2, 551, 550, 3, 2, 2, 2, 551, 552, 3, 2, 2, 2, 552, 563, 3, 2, 2, 2, 553, 554, 7, 50, 2, 2, 554, 556, 9, 6, 2, 2, 555, 557, 5, 171, 86, 2, 556, 555, 3, 2, 2, 2, 557, 558, 3, 2, 2, 2, 558, 556, 3, 2, 2, 2, 558, 559, 3, 2, 2, 2, 559, 560, 3, 2, 2, 2, 560, 561, 5, 159, 80, 2, 561, 563, 3, 2, 2, 2, 562, 525, 3, 2, 2, 2, 562, 542, 3, 2, 2, 2, 562, 553, 3, 2, 2, 2, 563, 156, 3, 2, 2, 2, 564, 566, 9, 7, 2, 2, 565, 567, 9, 8, 2, 2, 566, 565, 3, 2, 2, 2, 566, 567, 3, 2, 2, 2, 567, 569, 3, 2, 2, 2, 568, 570, 5, 169, 85, 2, 569, 568, 3, 2, 2, 2, 570, 571, 3, 2, 2, 2, 571, 569, 3, 2, 2, 2, 571, 572, 3, 2, 2, 2, 572, 158, 3, 2, 2, 2, 573, 575, 9, 9, 2, 2, 574, 576, 9, 8, 2, 2, 575, 574, 3, 2, 2, 2, 575, 576, 3, 2, 2, 2, 576, 578, 3, 2, 2, 2, 577, 579, 5, 169, 85, 2, 578, 577, 3, 2, 2, 2, 579, 580, 3, 2, 2, 2, 580, 578, 3, 2, 2, 2, 580, 581, 3, 2, 2, 2, 581, 160, 3, 2, 2, 2, 582, 583, 7, 94, 2, 2, 583, 593, 9, 10, 2, 2, 584, 586, 7, 94, 2, 2, 585, 587, 7, 15, 2, 2, 586, 585, 3, 2, 2, 2, 586, 587, 3, 2, 2, 2, 587, 588, 3, 2, 2, 2, 588, 593, 7, 12, 2, 2, 589, 593, 5, 163, 82, 2, 590, 593, 5, 165, 83, 2, 591, 593, 5, 167, 84, 2, 592, 582, 3, 2, 2, 2, 592, 584, 3, 2, 2, 2, 592, 589, 3, 2, 2, 2, 592, 590, 3, 2, 2, 2, 592, 591, 3, 2, 2, 2, 593, 162, 3, 2, 2, 2, 594, 595, 7, 94, 2, 2, 595, 606, 5, 169, 85, 2, 596, 597, 7, 94, 2, 2, 597, 598, 5, 169, 85, 2, 598, 599, 5, 169, 85, 2, 599, 606, 3, 2, 2, 2, 600, 601, 7, 94, 2, 2, 601, 602, 9, 11, 2, 2, 602, 603, 5, 169, 85, 2, 603, 604, 5, 169, 85, 2, 604, 606, 3, 2, 2, 2, 605, 594, 3, 2, 2, 2, 605, 596, 3, 2, 2, 2, 605, 600, 3, 2, 2, 2, 606, 164, 3, 2, 2, 2, 607, 608, 7, 94, 2, 2, 608, 609, 7, 122, 2, 2, 609, 610, 5, 171, 86, 2, 610, 611, 5, 171, 86, 2, 611, 166, 3, 2, 2, 2, 612, 613, 7, 94, 2, 2, 613, 614, 7, 119, 2, 2, 614, 615, 7, 125, 2, 2, 615, 617, 3, 2, 2, 2, 616, 618, 5, 171, 86, 2, 617, 616, 3, 2, 2, 2, 618, 619, 3, 2, 2, 2, 619, 617, 3, 2, 2, 2, 619, 620, 3, 2, 2, 2, 620, 621, 3, 2, 2, 2, 621, 622, 7, 127, 2, 2, 622, 168, 3, 2, 2, 2, 623, 624, 9, 12, 2, 2, 624, 170, 3, 2, 2, 2, 625, 626, 9, 13, 2, 2, 626, 172, 3, 2, 2, 2, 627, 628, 7, 47, 2, 2, 628, 629, 7, 47, 2, 2, 629, 630, 7, 93, 2, 2, 630, 631, 3, 2, 2, 2, 631, 632, 5, 147, 74, 2, 632, 633, 7, 95, 2, 2, 633, 634, 3, 2, 2, 2, 634, 635, 8, 87, 2, 2, 635, 174, 3, 2, 2, 2, 636, 637, 7, 47, 2, 2, 637, 638, 7, 47, 2, 2, 638, 668, 3, 2, 2, 2, 639, 669, 3, 2, 2, 2, 640, 644, 7, 93, 2, 2, 641, 643, 7, 63, 2, 2, 642, 641, 3, 2, 2, 2, 643, 646, 3, 2, 2, 2, 644, 642, 3, 2, 2, 2, 644, 645, 3, 2, 2, 2, 645, 669, 3, 2, 2, 2, 646, 644, 3, 2, 2, 2, 647, 651, 7, 93, 2, 2, 648, 650, 7, 63, 2, 2, 649, 648, 3, 2, 2, 2, 650, 653, 3, 2, 2, 2, 651, 649, 3, 2, 2, 2, 651, 652, 3, 2, 2, 2, 652, 654, 3, 2, 2, 2, 653, 651, 3, 2, 2, 2, 654, 658, 10, 14, 2, 2, 655, 657, 10, 15, 2, 2, 656, 655, 3, 2, 2, 2, 657, 660, 3, 2, 2, 2, 658, 656, 3, 2, 2, 2, 658, 659, 3, 2, 2, 2, 659, 669, 3, 2, 2, 2, 660, 658, 3, 2, 2, 2, 661, 665, 10, 16, 2, 2, 662, 664, 10, 15, 2, 2, 663, 662, 3, 2, 2, 2, 664, 667, 3, 2, 2, 2, 665, 663, 3, 2, 2, 2, 665, 666, 3, 2, 2, 2, 666, 669, 3, 2, 2, 2, 667, 665, 3, 2, 2, 2, 668, 639, 3, 2, 2, 2, 668, 640, 3, 2, 2, 2, 668, 647, 3, 2, 2, 2, 668, 661, 3, 2, 2, 2, 669, 673, 3, 2, 2, 2, 670, 671, 7, 15, 2, 2, 671, 674, 7, 12, 2, 2, 672, 674, 9, 17, 2, 2, 673, 670, 3, 2, 2, 2, 673, 672, 3, 2, 2, 2, 674, 675, 3, 2, 2, 2, 675, 676, 8, 88, 2, 2, 676, 176, 3, 2, 2, 2, 677, 679, 9, 18, 2, 2, 678, 677, 3, 2, 2, 2, 679, 680, 3, 2, 2, 2, 680, 678, 3, 2, 2, 2, 680, 681, 3, 2, 2, 2, 681, 682, 3, 2, 2, 2, 682, 683, 8, 89, 3, 2, 683, 178, 3, 2, 2, 2, 684, 685, 7, 37, 2, 2, 685, 689, 7, 35, 2, 2, 686, 688, 10, 15, 2, 2, 687, 686, 3, 2, 2, 2, 688, 691, 3, 2, 2, 2, 689, 687, 3, 2, 2, 2, 689, 690, 3, 2, 2, 2, 690, 692, 3, 2, 2, 2, 691, 689, 3, 2, 2, 2, 692, 693, 8, 90, 2, 2, 693, 180, 3, 2, 2, 2, 42, 2, 439, 445, 447, 455, 457, 474, 478, 483, 490, 495, 501, 505, 511, 514, 519, 523, 530, 536, 540, 548, 551, 558, 562, 566, 571, 575, 580, 586, 592, 605, 619, 644, 651, 658, 665, 668, 673, 680, 689, 4, 2, 3, 2, 8, 2, 2] \ No newline at end of file +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 81, 688, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 53, 3, 53, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 7, 69, 432, 10, 69, 12, 69, 14, 69, 435, 11, 69, 3, 70, 3, 70, 3, 70, 7, 70, 440, 10, 70, 12, 70, 14, 70, 443, 11, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 7, 71, 450, 10, 71, 12, 71, 14, 71, 453, 11, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 7, 73, 467, 10, 73, 12, 73, 14, 73, 470, 11, 73, 3, 73, 5, 73, 473, 10, 73, 3, 74, 6, 74, 476, 10, 74, 13, 74, 14, 74, 477, 3, 75, 3, 75, 3, 75, 6, 75, 483, 10, 75, 13, 75, 14, 75, 484, 3, 76, 6, 76, 488, 10, 76, 13, 76, 14, 76, 489, 3, 76, 3, 76, 7, 76, 494, 10, 76, 12, 76, 14, 76, 497, 11, 76, 3, 76, 5, 76, 500, 10, 76, 3, 76, 3, 76, 6, 76, 504, 10, 76, 13, 76, 14, 76, 505, 3, 76, 5, 76, 509, 10, 76, 3, 76, 6, 76, 512, 10, 76, 13, 76, 14, 76, 513, 3, 76, 3, 76, 5, 76, 518, 10, 76, 3, 77, 3, 77, 3, 77, 6, 77, 523, 10, 77, 13, 77, 14, 77, 524, 3, 77, 3, 77, 7, 77, 529, 10, 77, 12, 77, 14, 77, 532, 11, 77, 3, 77, 5, 77, 535, 10, 77, 3, 77, 3, 77, 3, 77, 3, 77, 6, 77, 541, 10, 77, 13, 77, 14, 77, 542, 3, 77, 5, 77, 546, 10, 77, 3, 77, 3, 77, 3, 77, 6, 77, 551, 10, 77, 13, 77, 14, 77, 552, 3, 77, 3, 77, 5, 77, 557, 10, 77, 3, 78, 3, 78, 5, 78, 561, 10, 78, 3, 78, 6, 78, 564, 10, 78, 13, 78, 14, 78, 565, 3, 79, 3, 79, 5, 79, 570, 10, 79, 3, 79, 6, 79, 573, 10, 79, 13, 79, 14, 79, 574, 3, 80, 3, 80, 3, 80, 3, 80, 5, 80, 581, 10, 80, 3, 80, 3, 80, 3, 80, 3, 80, 5, 80, 587, 10, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 5, 81, 600, 10, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 6, 83, 612, 10, 83, 13, 83, 14, 83, 613, 3, 83, 3, 83, 3, 84, 3, 84, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 7, 87, 637, 10, 87, 12, 87, 14, 87, 640, 11, 87, 3, 87, 3, 87, 7, 87, 644, 10, 87, 12, 87, 14, 87, 647, 11, 87, 3, 87, 3, 87, 7, 87, 651, 10, 87, 12, 87, 14, 87, 654, 11, 87, 3, 87, 3, 87, 7, 87, 658, 10, 87, 12, 87, 14, 87, 661, 11, 87, 5, 87, 663, 10, 87, 3, 87, 3, 87, 3, 87, 5, 87, 668, 10, 87, 3, 87, 3, 87, 3, 88, 6, 88, 673, 10, 88, 13, 88, 14, 88, 674, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 7, 89, 682, 10, 89, 12, 89, 14, 89, 685, 11, 89, 3, 89, 3, 89, 3, 468, 2, 90, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 2, 147, 74, 149, 75, 151, 76, 153, 77, 155, 2, 157, 2, 159, 2, 161, 2, 163, 2, 165, 2, 167, 2, 169, 2, 171, 78, 173, 79, 175, 80, 177, 81, 3, 2, 19, 5, 2, 67, 92, 97, 97, 99, 124, 6, 2, 50, 59, 67, 92, 97, 97, 99, 124, 4, 2, 36, 36, 94, 94, 4, 2, 41, 41, 94, 94, 4, 2, 90, 90, 122, 122, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 4, 2, 82, 82, 114, 114, 12, 2, 36, 36, 41, 41, 94, 94, 99, 100, 104, 104, 112, 112, 116, 116, 118, 118, 120, 120, 124, 124, 3, 2, 50, 52, 3, 2, 50, 59, 5, 2, 50, 59, 67, 72, 99, 104, 6, 2, 12, 12, 15, 15, 63, 63, 93, 93, 4, 2, 12, 12, 15, 15, 5, 2, 12, 12, 15, 15, 93, 93, 4, 3, 12, 12, 15, 15, 5, 2, 11, 12, 14, 15, 34, 34, 2, 725, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 3, 179, 3, 2, 2, 2, 5, 181, 3, 2, 2, 2, 7, 183, 3, 2, 2, 2, 9, 189, 3, 2, 2, 2, 11, 194, 3, 2, 2, 2, 13, 197, 3, 2, 2, 2, 15, 201, 3, 2, 2, 2, 17, 207, 3, 2, 2, 2, 19, 214, 3, 2, 2, 2, 21, 220, 3, 2, 2, 2, 23, 223, 3, 2, 2, 2, 25, 228, 3, 2, 2, 2, 27, 235, 3, 2, 2, 2, 29, 240, 3, 2, 2, 2, 31, 244, 3, 2, 2, 2, 33, 246, 3, 2, 2, 2, 35, 249, 3, 2, 2, 2, 37, 258, 3, 2, 2, 2, 39, 264, 3, 2, 2, 2, 41, 272, 3, 2, 2, 2, 43, 278, 3, 2, 2, 2, 45, 283, 3, 2, 2, 2, 47, 290, 3, 2, 2, 2, 49, 293, 3, 2, 2, 2, 51, 295, 3, 2, 2, 2, 53, 297, 3, 2, 2, 2, 55, 301, 3, 2, 2, 2, 57, 307, 3, 2, 2, 2, 59, 312, 3, 2, 2, 2, 61, 316, 3, 2, 2, 2, 63, 318, 3, 2, 2, 2, 65, 320, 3, 2, 2, 2, 67, 322, 3, 2, 2, 2, 69, 324, 3, 2, 2, 2, 71, 326, 3, 2, 2, 2, 73, 328, 3, 2, 2, 2, 75, 331, 3, 2, 2, 2, 77, 335, 3, 2, 2, 2, 79, 337, 3, 2, 2, 2, 81, 339, 3, 2, 2, 2, 83, 342, 3, 2, 2, 2, 85, 345, 3, 2, 2, 2, 87, 348, 3, 2, 2, 2, 89, 351, 3, 2, 2, 2, 91, 354, 3, 2, 2, 2, 93, 356, 3, 2, 2, 2, 95, 358, 3, 2, 2, 2, 97, 360, 3, 2, 2, 2, 99, 362, 3, 2, 2, 2, 101, 364, 3, 2, 2, 2, 103, 367, 3, 2, 2, 2, 105, 369, 3, 2, 2, 2, 107, 371, 3, 2, 2, 2, 109, 373, 3, 2, 2, 2, 111, 376, 3, 2, 2, 2, 113, 379, 3, 2, 2, 2, 115, 383, 3, 2, 2, 2, 117, 385, 3, 2, 2, 2, 119, 387, 3, 2, 2, 2, 121, 394, 3, 2, 2, 2, 123, 398, 3, 2, 2, 2, 125, 402, 3, 2, 2, 2, 127, 414, 3, 2, 2, 2, 129, 417, 3, 2, 2, 2, 131, 420, 3, 2, 2, 2, 133, 423, 3, 2, 2, 2, 135, 426, 3, 2, 2, 2, 137, 429, 3, 2, 2, 2, 139, 436, 3, 2, 2, 2, 141, 446, 3, 2, 2, 2, 143, 456, 3, 2, 2, 2, 145, 472, 3, 2, 2, 2, 147, 475, 3, 2, 2, 2, 149, 479, 3, 2, 2, 2, 151, 517, 3, 2, 2, 2, 153, 556, 3, 2, 2, 2, 155, 558, 3, 2, 2, 2, 157, 567, 3, 2, 2, 2, 159, 586, 3, 2, 2, 2, 161, 599, 3, 2, 2, 2, 163, 601, 3, 2, 2, 2, 165, 606, 3, 2, 2, 2, 167, 617, 3, 2, 2, 2, 169, 619, 3, 2, 2, 2, 171, 621, 3, 2, 2, 2, 173, 630, 3, 2, 2, 2, 175, 672, 3, 2, 2, 2, 177, 678, 3, 2, 2, 2, 179, 180, 7, 61, 2, 2, 180, 4, 3, 2, 2, 2, 181, 182, 7, 63, 2, 2, 182, 6, 3, 2, 2, 2, 183, 184, 7, 100, 2, 2, 184, 185, 7, 116, 2, 2, 185, 186, 7, 103, 2, 2, 186, 187, 7, 99, 2, 2, 187, 188, 7, 109, 2, 2, 188, 8, 3, 2, 2, 2, 189, 190, 7, 105, 2, 2, 190, 191, 7, 113, 2, 2, 191, 192, 7, 118, 2, 2, 192, 193, 7, 113, 2, 2, 193, 10, 3, 2, 2, 2, 194, 195, 7, 102, 2, 2, 195, 196, 7, 113, 2, 2, 196, 12, 3, 2, 2, 2, 197, 198, 7, 103, 2, 2, 198, 199, 7, 112, 2, 2, 199, 200, 7, 102, 2, 2, 200, 14, 3, 2, 2, 2, 201, 202, 7, 121, 2, 2, 202, 203, 7, 106, 2, 2, 203, 204, 7, 107, 2, 2, 204, 205, 7, 110, 2, 2, 205, 206, 7, 103, 2, 2, 206, 16, 3, 2, 2, 2, 207, 208, 7, 116, 2, 2, 208, 209, 7, 103, 2, 2, 209, 210, 7, 114, 2, 2, 210, 211, 7, 103, 2, 2, 211, 212, 7, 99, 2, 2, 212, 213, 7, 118, 2, 2, 213, 18, 3, 2, 2, 2, 214, 215, 7, 119, 2, 2, 215, 216, 7, 112, 2, 2, 216, 217, 7, 118, 2, 2, 217, 218, 7, 107, 2, 2, 218, 219, 7, 110, 2, 2, 219, 20, 3, 2, 2, 2, 220, 221, 7, 107, 2, 2, 221, 222, 7, 104, 2, 2, 222, 22, 3, 2, 2, 2, 223, 224, 7, 118, 2, 2, 224, 225, 7, 106, 2, 2, 225, 226, 7, 103, 2, 2, 226, 227, 7, 112, 2, 2, 227, 24, 3, 2, 2, 2, 228, 229, 7, 103, 2, 2, 229, 230, 7, 110, 2, 2, 230, 231, 7, 117, 2, 2, 231, 232, 7, 103, 2, 2, 232, 233, 7, 107, 2, 2, 233, 234, 7, 104, 2, 2, 234, 26, 3, 2, 2, 2, 235, 236, 7, 103, 2, 2, 236, 237, 7, 110, 2, 2, 237, 238, 7, 117, 2, 2, 238, 239, 7, 103, 2, 2, 239, 28, 3, 2, 2, 2, 240, 241, 7, 104, 2, 2, 241, 242, 7, 113, 2, 2, 242, 243, 7, 116, 2, 2, 243, 30, 3, 2, 2, 2, 244, 245, 7, 46, 2, 2, 245, 32, 3, 2, 2, 2, 246, 247, 7, 107, 2, 2, 247, 248, 7, 112, 2, 2, 248, 34, 3, 2, 2, 2, 249, 250, 7, 104, 2, 2, 250, 251, 7, 119, 2, 2, 251, 252, 7, 112, 2, 2, 252, 253, 7, 101, 2, 2, 253, 254, 7, 118, 2, 2, 254, 255, 7, 107, 2, 2, 255, 256, 7, 113, 2, 2, 256, 257, 7, 112, 2, 2, 257, 36, 3, 2, 2, 2, 258, 259, 7, 101, 2, 2, 259, 260, 7, 110, 2, 2, 260, 261, 7, 99, 2, 2, 261, 262, 7, 117, 2, 2, 262, 263, 7, 117, 2, 2, 263, 38, 3, 2, 2, 2, 264, 265, 7, 103, 2, 2, 265, 266, 7, 122, 2, 2, 266, 267, 7, 118, 2, 2, 267, 268, 7, 103, 2, 2, 268, 269, 7, 112, 2, 2, 269, 270, 7, 102, 2, 2, 270, 271, 7, 117, 2, 2, 271, 40, 3, 2, 2, 2, 272, 273, 7, 110, 2, 2, 273, 274, 7, 113, 2, 2, 274, 275, 7, 101, 2, 2, 275, 276, 7, 99, 2, 2, 276, 277, 7, 110, 2, 2, 277, 42, 3, 2, 2, 2, 278, 279, 7, 117, 2, 2, 279, 280, 7, 99, 2, 2, 280, 281, 7, 104, 2, 2, 281, 282, 7, 103, 2, 2, 282, 44, 3, 2, 2, 2, 283, 284, 7, 116, 2, 2, 284, 285, 7, 103, 2, 2, 285, 286, 7, 118, 2, 2, 286, 287, 7, 119, 2, 2, 287, 288, 7, 116, 2, 2, 288, 289, 7, 112, 2, 2, 289, 46, 3, 2, 2, 2, 290, 291, 7, 60, 2, 2, 291, 292, 7, 60, 2, 2, 292, 48, 3, 2, 2, 2, 293, 294, 7, 48, 2, 2, 294, 50, 3, 2, 2, 2, 295, 296, 7, 60, 2, 2, 296, 52, 3, 2, 2, 2, 297, 298, 7, 112, 2, 2, 298, 299, 7, 107, 2, 2, 299, 300, 7, 110, 2, 2, 300, 54, 3, 2, 2, 2, 301, 302, 7, 104, 2, 2, 302, 303, 7, 99, 2, 2, 303, 304, 7, 110, 2, 2, 304, 305, 7, 117, 2, 2, 305, 306, 7, 103, 2, 2, 306, 56, 3, 2, 2, 2, 307, 308, 7, 118, 2, 2, 308, 309, 7, 116, 2, 2, 309, 310, 7, 119, 2, 2, 310, 311, 7, 103, 2, 2, 311, 58, 3, 2, 2, 2, 312, 313, 7, 48, 2, 2, 313, 314, 7, 48, 2, 2, 314, 315, 7, 48, 2, 2, 315, 60, 3, 2, 2, 2, 316, 317, 7, 42, 2, 2, 317, 62, 3, 2, 2, 2, 318, 319, 7, 43, 2, 2, 319, 64, 3, 2, 2, 2, 320, 321, 7, 93, 2, 2, 321, 66, 3, 2, 2, 2, 322, 323, 7, 95, 2, 2, 323, 68, 3, 2, 2, 2, 324, 325, 7, 125, 2, 2, 325, 70, 3, 2, 2, 2, 326, 327, 7, 127, 2, 2, 327, 72, 3, 2, 2, 2, 328, 329, 7, 113, 2, 2, 329, 330, 7, 116, 2, 2, 330, 74, 3, 2, 2, 2, 331, 332, 7, 99, 2, 2, 332, 333, 7, 112, 2, 2, 333, 334, 7, 102, 2, 2, 334, 76, 3, 2, 2, 2, 335, 336, 7, 62, 2, 2, 336, 78, 3, 2, 2, 2, 337, 338, 7, 64, 2, 2, 338, 80, 3, 2, 2, 2, 339, 340, 7, 62, 2, 2, 340, 341, 7, 63, 2, 2, 341, 82, 3, 2, 2, 2, 342, 343, 7, 64, 2, 2, 343, 344, 7, 63, 2, 2, 344, 84, 3, 2, 2, 2, 345, 346, 7, 128, 2, 2, 346, 347, 7, 63, 2, 2, 347, 86, 3, 2, 2, 2, 348, 349, 7, 63, 2, 2, 349, 350, 7, 63, 2, 2, 350, 88, 3, 2, 2, 2, 351, 352, 7, 48, 2, 2, 352, 353, 7, 48, 2, 2, 353, 90, 3, 2, 2, 2, 354, 355, 7, 45, 2, 2, 355, 92, 3, 2, 2, 2, 356, 357, 7, 47, 2, 2, 357, 94, 3, 2, 2, 2, 358, 359, 7, 44, 2, 2, 359, 96, 3, 2, 2, 2, 360, 361, 7, 49, 2, 2, 361, 98, 3, 2, 2, 2, 362, 363, 7, 39, 2, 2, 363, 100, 3, 2, 2, 2, 364, 365, 7, 49, 2, 2, 365, 366, 7, 49, 2, 2, 366, 102, 3, 2, 2, 2, 367, 368, 7, 40, 2, 2, 368, 104, 3, 2, 2, 2, 369, 370, 7, 126, 2, 2, 370, 106, 3, 2, 2, 2, 371, 372, 7, 128, 2, 2, 372, 108, 3, 2, 2, 2, 373, 374, 7, 62, 2, 2, 374, 375, 7, 62, 2, 2, 375, 110, 3, 2, 2, 2, 376, 377, 7, 64, 2, 2, 377, 378, 7, 64, 2, 2, 378, 112, 3, 2, 2, 2, 379, 380, 7, 112, 2, 2, 380, 381, 7, 113, 2, 2, 381, 382, 7, 118, 2, 2, 382, 114, 3, 2, 2, 2, 383, 384, 7, 37, 2, 2, 384, 116, 3, 2, 2, 2, 385, 386, 7, 96, 2, 2, 386, 118, 3, 2, 2, 2, 387, 388, 7, 117, 2, 2, 388, 389, 7, 118, 2, 2, 389, 390, 7, 99, 2, 2, 390, 391, 7, 118, 2, 2, 391, 392, 7, 107, 2, 2, 392, 393, 7, 101, 2, 2, 393, 120, 3, 2, 2, 2, 394, 395, 7, 105, 2, 2, 395, 396, 7, 103, 2, 2, 396, 397, 7, 118, 2, 2, 397, 122, 3, 2, 2, 2, 398, 399, 7, 117, 2, 2, 399, 400, 7, 103, 2, 2, 400, 401, 7, 118, 2, 2, 401, 124, 3, 2, 2, 2, 402, 403, 7, 101, 2, 2, 403, 404, 7, 113, 2, 2, 404, 405, 7, 112, 2, 2, 405, 406, 7, 117, 2, 2, 406, 407, 7, 118, 2, 2, 407, 408, 7, 116, 2, 2, 408, 409, 7, 119, 2, 2, 409, 410, 7, 101, 2, 2, 410, 411, 7, 118, 2, 2, 411, 412, 7, 113, 2, 2, 412, 413, 7, 116, 2, 2, 413, 126, 3, 2, 2, 2, 414, 415, 7, 45, 2, 2, 415, 416, 7, 45, 2, 2, 416, 128, 3, 2, 2, 2, 417, 418, 7, 45, 2, 2, 418, 419, 7, 63, 2, 2, 419, 130, 3, 2, 2, 2, 420, 421, 7, 44, 2, 2, 421, 422, 7, 63, 2, 2, 422, 132, 3, 2, 2, 2, 423, 424, 7, 49, 2, 2, 424, 425, 7, 63, 2, 2, 425, 134, 3, 2, 2, 2, 426, 427, 7, 47, 2, 2, 427, 428, 7, 63, 2, 2, 428, 136, 3, 2, 2, 2, 429, 433, 9, 2, 2, 2, 430, 432, 9, 3, 2, 2, 431, 430, 3, 2, 2, 2, 432, 435, 3, 2, 2, 2, 433, 431, 3, 2, 2, 2, 433, 434, 3, 2, 2, 2, 434, 138, 3, 2, 2, 2, 435, 433, 3, 2, 2, 2, 436, 441, 7, 36, 2, 2, 437, 440, 5, 159, 80, 2, 438, 440, 10, 4, 2, 2, 439, 437, 3, 2, 2, 2, 439, 438, 3, 2, 2, 2, 440, 443, 3, 2, 2, 2, 441, 439, 3, 2, 2, 2, 441, 442, 3, 2, 2, 2, 442, 444, 3, 2, 2, 2, 443, 441, 3, 2, 2, 2, 444, 445, 7, 36, 2, 2, 445, 140, 3, 2, 2, 2, 446, 451, 7, 41, 2, 2, 447, 450, 5, 159, 80, 2, 448, 450, 10, 5, 2, 2, 449, 447, 3, 2, 2, 2, 449, 448, 3, 2, 2, 2, 450, 453, 3, 2, 2, 2, 451, 449, 3, 2, 2, 2, 451, 452, 3, 2, 2, 2, 452, 454, 3, 2, 2, 2, 453, 451, 3, 2, 2, 2, 454, 455, 7, 41, 2, 2, 455, 142, 3, 2, 2, 2, 456, 457, 7, 93, 2, 2, 457, 458, 5, 145, 73, 2, 458, 459, 7, 95, 2, 2, 459, 144, 3, 2, 2, 2, 460, 461, 7, 63, 2, 2, 461, 462, 5, 145, 73, 2, 462, 463, 7, 63, 2, 2, 463, 473, 3, 2, 2, 2, 464, 468, 7, 93, 2, 2, 465, 467, 11, 2, 2, 2, 466, 465, 3, 2, 2, 2, 467, 470, 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 468, 466, 3, 2, 2, 2, 469, 471, 3, 2, 2, 2, 470, 468, 3, 2, 2, 2, 471, 473, 7, 95, 2, 2, 472, 460, 3, 2, 2, 2, 472, 464, 3, 2, 2, 2, 473, 146, 3, 2, 2, 2, 474, 476, 5, 167, 84, 2, 475, 474, 3, 2, 2, 2, 476, 477, 3, 2, 2, 2, 477, 475, 3, 2, 2, 2, 477, 478, 3, 2, 2, 2, 478, 148, 3, 2, 2, 2, 479, 480, 7, 50, 2, 2, 480, 482, 9, 6, 2, 2, 481, 483, 5, 169, 85, 2, 482, 481, 3, 2, 2, 2, 483, 484, 3, 2, 2, 2, 484, 482, 3, 2, 2, 2, 484, 485, 3, 2, 2, 2, 485, 150, 3, 2, 2, 2, 486, 488, 5, 167, 84, 2, 487, 486, 3, 2, 2, 2, 488, 489, 3, 2, 2, 2, 489, 487, 3, 2, 2, 2, 489, 490, 3, 2, 2, 2, 490, 491, 3, 2, 2, 2, 491, 495, 7, 48, 2, 2, 492, 494, 5, 167, 84, 2, 493, 492, 3, 2, 2, 2, 494, 497, 3, 2, 2, 2, 495, 493, 3, 2, 2, 2, 495, 496, 3, 2, 2, 2, 496, 499, 3, 2, 2, 2, 497, 495, 3, 2, 2, 2, 498, 500, 5, 155, 78, 2, 499, 498, 3, 2, 2, 2, 499, 500, 3, 2, 2, 2, 500, 518, 3, 2, 2, 2, 501, 503, 7, 48, 2, 2, 502, 504, 5, 167, 84, 2, 503, 502, 3, 2, 2, 2, 504, 505, 3, 2, 2, 2, 505, 503, 3, 2, 2, 2, 505, 506, 3, 2, 2, 2, 506, 508, 3, 2, 2, 2, 507, 509, 5, 155, 78, 2, 508, 507, 3, 2, 2, 2, 508, 509, 3, 2, 2, 2, 509, 518, 3, 2, 2, 2, 510, 512, 5, 167, 84, 2, 511, 510, 3, 2, 2, 2, 512, 513, 3, 2, 2, 2, 513, 511, 3, 2, 2, 2, 513, 514, 3, 2, 2, 2, 514, 515, 3, 2, 2, 2, 515, 516, 5, 155, 78, 2, 516, 518, 3, 2, 2, 2, 517, 487, 3, 2, 2, 2, 517, 501, 3, 2, 2, 2, 517, 511, 3, 2, 2, 2, 518, 152, 3, 2, 2, 2, 519, 520, 7, 50, 2, 2, 520, 522, 9, 6, 2, 2, 521, 523, 5, 169, 85, 2, 522, 521, 3, 2, 2, 2, 523, 524, 3, 2, 2, 2, 524, 522, 3, 2, 2, 2, 524, 525, 3, 2, 2, 2, 525, 526, 3, 2, 2, 2, 526, 530, 7, 48, 2, 2, 527, 529, 5, 169, 85, 2, 528, 527, 3, 2, 2, 2, 529, 532, 3, 2, 2, 2, 530, 528, 3, 2, 2, 2, 530, 531, 3, 2, 2, 2, 531, 534, 3, 2, 2, 2, 532, 530, 3, 2, 2, 2, 533, 535, 5, 157, 79, 2, 534, 533, 3, 2, 2, 2, 534, 535, 3, 2, 2, 2, 535, 557, 3, 2, 2, 2, 536, 537, 7, 50, 2, 2, 537, 538, 9, 6, 2, 2, 538, 540, 7, 48, 2, 2, 539, 541, 5, 169, 85, 2, 540, 539, 3, 2, 2, 2, 541, 542, 3, 2, 2, 2, 542, 540, 3, 2, 2, 2, 542, 543, 3, 2, 2, 2, 543, 545, 3, 2, 2, 2, 544, 546, 5, 157, 79, 2, 545, 544, 3, 2, 2, 2, 545, 546, 3, 2, 2, 2, 546, 557, 3, 2, 2, 2, 547, 548, 7, 50, 2, 2, 548, 550, 9, 6, 2, 2, 549, 551, 5, 169, 85, 2, 550, 549, 3, 2, 2, 2, 551, 552, 3, 2, 2, 2, 552, 550, 3, 2, 2, 2, 552, 553, 3, 2, 2, 2, 553, 554, 3, 2, 2, 2, 554, 555, 5, 157, 79, 2, 555, 557, 3, 2, 2, 2, 556, 519, 3, 2, 2, 2, 556, 536, 3, 2, 2, 2, 556, 547, 3, 2, 2, 2, 557, 154, 3, 2, 2, 2, 558, 560, 9, 7, 2, 2, 559, 561, 9, 8, 2, 2, 560, 559, 3, 2, 2, 2, 560, 561, 3, 2, 2, 2, 561, 563, 3, 2, 2, 2, 562, 564, 5, 167, 84, 2, 563, 562, 3, 2, 2, 2, 564, 565, 3, 2, 2, 2, 565, 563, 3, 2, 2, 2, 565, 566, 3, 2, 2, 2, 566, 156, 3, 2, 2, 2, 567, 569, 9, 9, 2, 2, 568, 570, 9, 8, 2, 2, 569, 568, 3, 2, 2, 2, 569, 570, 3, 2, 2, 2, 570, 572, 3, 2, 2, 2, 571, 573, 5, 167, 84, 2, 572, 571, 3, 2, 2, 2, 573, 574, 3, 2, 2, 2, 574, 572, 3, 2, 2, 2, 574, 575, 3, 2, 2, 2, 575, 158, 3, 2, 2, 2, 576, 577, 7, 94, 2, 2, 577, 587, 9, 10, 2, 2, 578, 580, 7, 94, 2, 2, 579, 581, 7, 15, 2, 2, 580, 579, 3, 2, 2, 2, 580, 581, 3, 2, 2, 2, 581, 582, 3, 2, 2, 2, 582, 587, 7, 12, 2, 2, 583, 587, 5, 161, 81, 2, 584, 587, 5, 163, 82, 2, 585, 587, 5, 165, 83, 2, 586, 576, 3, 2, 2, 2, 586, 578, 3, 2, 2, 2, 586, 583, 3, 2, 2, 2, 586, 584, 3, 2, 2, 2, 586, 585, 3, 2, 2, 2, 587, 160, 3, 2, 2, 2, 588, 589, 7, 94, 2, 2, 589, 600, 5, 167, 84, 2, 590, 591, 7, 94, 2, 2, 591, 592, 5, 167, 84, 2, 592, 593, 5, 167, 84, 2, 593, 600, 3, 2, 2, 2, 594, 595, 7, 94, 2, 2, 595, 596, 9, 11, 2, 2, 596, 597, 5, 167, 84, 2, 597, 598, 5, 167, 84, 2, 598, 600, 3, 2, 2, 2, 599, 588, 3, 2, 2, 2, 599, 590, 3, 2, 2, 2, 599, 594, 3, 2, 2, 2, 600, 162, 3, 2, 2, 2, 601, 602, 7, 94, 2, 2, 602, 603, 7, 122, 2, 2, 603, 604, 5, 169, 85, 2, 604, 605, 5, 169, 85, 2, 605, 164, 3, 2, 2, 2, 606, 607, 7, 94, 2, 2, 607, 608, 7, 119, 2, 2, 608, 609, 7, 125, 2, 2, 609, 611, 3, 2, 2, 2, 610, 612, 5, 169, 85, 2, 611, 610, 3, 2, 2, 2, 612, 613, 3, 2, 2, 2, 613, 611, 3, 2, 2, 2, 613, 614, 3, 2, 2, 2, 614, 615, 3, 2, 2, 2, 615, 616, 7, 127, 2, 2, 616, 166, 3, 2, 2, 2, 617, 618, 9, 12, 2, 2, 618, 168, 3, 2, 2, 2, 619, 620, 9, 13, 2, 2, 620, 170, 3, 2, 2, 2, 621, 622, 7, 47, 2, 2, 622, 623, 7, 47, 2, 2, 623, 624, 7, 93, 2, 2, 624, 625, 3, 2, 2, 2, 625, 626, 5, 145, 73, 2, 626, 627, 7, 95, 2, 2, 627, 628, 3, 2, 2, 2, 628, 629, 8, 86, 2, 2, 629, 172, 3, 2, 2, 2, 630, 631, 7, 47, 2, 2, 631, 632, 7, 47, 2, 2, 632, 662, 3, 2, 2, 2, 633, 663, 3, 2, 2, 2, 634, 638, 7, 93, 2, 2, 635, 637, 7, 63, 2, 2, 636, 635, 3, 2, 2, 2, 637, 640, 3, 2, 2, 2, 638, 636, 3, 2, 2, 2, 638, 639, 3, 2, 2, 2, 639, 663, 3, 2, 2, 2, 640, 638, 3, 2, 2, 2, 641, 645, 7, 93, 2, 2, 642, 644, 7, 63, 2, 2, 643, 642, 3, 2, 2, 2, 644, 647, 3, 2, 2, 2, 645, 643, 3, 2, 2, 2, 645, 646, 3, 2, 2, 2, 646, 648, 3, 2, 2, 2, 647, 645, 3, 2, 2, 2, 648, 652, 10, 14, 2, 2, 649, 651, 10, 15, 2, 2, 650, 649, 3, 2, 2, 2, 651, 654, 3, 2, 2, 2, 652, 650, 3, 2, 2, 2, 652, 653, 3, 2, 2, 2, 653, 663, 3, 2, 2, 2, 654, 652, 3, 2, 2, 2, 655, 659, 10, 16, 2, 2, 656, 658, 10, 15, 2, 2, 657, 656, 3, 2, 2, 2, 658, 661, 3, 2, 2, 2, 659, 657, 3, 2, 2, 2, 659, 660, 3, 2, 2, 2, 660, 663, 3, 2, 2, 2, 661, 659, 3, 2, 2, 2, 662, 633, 3, 2, 2, 2, 662, 634, 3, 2, 2, 2, 662, 641, 3, 2, 2, 2, 662, 655, 3, 2, 2, 2, 663, 667, 3, 2, 2, 2, 664, 665, 7, 15, 2, 2, 665, 668, 7, 12, 2, 2, 666, 668, 9, 17, 2, 2, 667, 664, 3, 2, 2, 2, 667, 666, 3, 2, 2, 2, 668, 669, 3, 2, 2, 2, 669, 670, 8, 87, 2, 2, 670, 174, 3, 2, 2, 2, 671, 673, 9, 18, 2, 2, 672, 671, 3, 2, 2, 2, 673, 674, 3, 2, 2, 2, 674, 672, 3, 2, 2, 2, 674, 675, 3, 2, 2, 2, 675, 676, 3, 2, 2, 2, 676, 677, 8, 88, 3, 2, 677, 176, 3, 2, 2, 2, 678, 679, 7, 37, 2, 2, 679, 683, 7, 35, 2, 2, 680, 682, 10, 15, 2, 2, 681, 680, 3, 2, 2, 2, 682, 685, 3, 2, 2, 2, 683, 681, 3, 2, 2, 2, 683, 684, 3, 2, 2, 2, 684, 686, 3, 2, 2, 2, 685, 683, 3, 2, 2, 2, 686, 687, 8, 89, 2, 2, 687, 178, 3, 2, 2, 2, 42, 2, 433, 439, 441, 449, 451, 468, 472, 477, 484, 489, 495, 499, 505, 508, 513, 517, 524, 530, 534, 542, 545, 552, 556, 560, 565, 569, 574, 580, 586, 599, 613, 638, 645, 652, 659, 662, 667, 674, 683, 4, 2, 3, 2, 8, 2, 2] \ No newline at end of file diff --git a/src/main/java/org/luapp/language/generator/luappLexer.java b/src/main/java/org/luapp/language/generator/luappLexer.java index 1705e83..63779d1 100644 --- a/src/main/java/org/luapp/language/generator/luappLexer.java +++ b/src/main/java/org/luapp/language/generator/luappLexer.java @@ -1,4 +1,4 @@ -// Generated from C:/Users/Harry/Desktop/Lua/lua-plus-plus/src/main/java/org/luapp/language/parser\luapp.g4 by ANTLR 4.8 +// Generated from C:/Users/Harry/Desktop/Lua/lpp2electricboogaloo/lua-plus-plus/src/main/java/org/luapp/language/parser\luapp.g4 by ANTLR 4.8 package org.luapp.language.generator; import org.antlr.v4.runtime.Lexer; import org.antlr.v4.runtime.CharStream; @@ -26,9 +26,8 @@ public class luappLexer extends Lexer { T__45=46, T__46=47, T__47=48, T__48=49, T__49=50, T__50=51, T__51=52, T__52=53, T__53=54, T__54=55, T__55=56, T__56=57, T__57=58, T__58=59, T__59=60, T__60=61, T__61=62, T__62=63, T__63=64, T__64=65, T__65=66, - T__66=67, T__67=68, NAME=69, NORMALSTRING=70, CHARSTRING=71, LONGSTRING=72, - INT=73, HEX=74, FLOAT=75, HEX_FLOAT=76, COMMENT=77, LINE_COMMENT=78, WS=79, - SHEBANG=80; + T__66=67, NAME=68, NORMALSTRING=69, CHARSTRING=70, LONGSTRING=71, INT=72, + HEX=73, FLOAT=74, HEX_FLOAT=75, COMMENT=76, LINE_COMMENT=77, WS=78, SHEBANG=79; public static String[] channelNames = { "DEFAULT_TOKEN_CHANNEL", "HIDDEN" }; @@ -47,7 +46,7 @@ private static String[] makeRuleNames() { "T__41", "T__42", "T__43", "T__44", "T__45", "T__46", "T__47", "T__48", "T__49", "T__50", "T__51", "T__52", "T__53", "T__54", "T__55", "T__56", "T__57", "T__58", "T__59", "T__60", "T__61", "T__62", "T__63", "T__64", - "T__65", "T__66", "T__67", "NAME", "NORMALSTRING", "CHARSTRING", "LONGSTRING", + "T__65", "T__66", "NAME", "NORMALSTRING", "CHARSTRING", "LONGSTRING", "NESTED_STR", "INT", "HEX", "FLOAT", "HEX_FLOAT", "ExponentPart", "HexExponentPart", "EscapeSequence", "DecimalEscape", "HexEscape", "UtfEscape", "Digit", "HexDigit", "COMMENT", "LINE_COMMENT", "WS", "SHEBANG" @@ -63,9 +62,8 @@ private static String[] makeLiteralNames() { "'return'", "'::'", "'.'", "':'", "'nil'", "'false'", "'true'", "'...'", "'('", "')'", "'['", "']'", "'{'", "'}'", "'or'", "'and'", "'<'", "'>'", "'<='", "'>='", "'~='", "'=='", "'..'", "'+'", "'-'", "'*'", "'/'", "'%'", - "'//'", "'&'", "'|'", "'~'", "'<<'", "'>>'", "'not'", "'#'", "'^'", "'new'", - "'static'", "'get'", "'set'", "'constructor'", "'++'", "'+='", "'*='", - "'/='", "'-='" + "'//'", "'&'", "'|'", "'~'", "'<<'", "'>>'", "'not'", "'#'", "'^'", "'static'", + "'get'", "'set'", "'constructor'", "'++'", "'+='", "'*='", "'/='", "'-='" }; } private static final String[] _LITERAL_NAMES = makeLiteralNames(); @@ -76,7 +74,7 @@ private static String[] makeSymbolicNames() { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, "NAME", "NORMALSTRING", + null, null, null, null, null, null, null, null, "NAME", "NORMALSTRING", "CHARSTRING", "LONGSTRING", "INT", "HEX", "FLOAT", "HEX_FLOAT", "COMMENT", "LINE_COMMENT", "WS", "SHEBANG" }; @@ -140,7 +138,7 @@ public luappLexer(CharStream input) { public ATN getATN() { return _ATN; } public static final String _serializedATN = - "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2R\u02b6\b\1\4\2\t"+ + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2Q\u02b0\b\1\4\2\t"+ "\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+ "\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ @@ -150,239 +148,238 @@ public luappLexer(CharStream input) { "\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t="+ "\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I"+ "\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT"+ - "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\3\2\3\2\3\3\3\3\3\4\3\4\3\4\3\4\3"+ - "\4\3\4\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b"+ - "\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\13\3\13"+ - "\3\13\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3"+ - "\16\3\16\3\17\3\17\3\17\3\17\3\20\3\20\3\21\3\21\3\21\3\22\3\22\3\22\3"+ - "\22\3\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3"+ - "\24\3\24\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3"+ - "\26\3\26\3\26\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30\3\31\3"+ - "\31\3\32\3\32\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3"+ - "\35\3\35\3\35\3\35\3\36\3\36\3\36\3\36\3\37\3\37\3 \3 \3!\3!\3\"\3\"\3"+ - "#\3#\3$\3$\3%\3%\3%\3&\3&\3&\3&\3\'\3\'\3(\3(\3)\3)\3)\3*\3*\3*\3+\3+"+ - "\3+\3,\3,\3,\3-\3-\3-\3.\3.\3/\3/\3\60\3\60\3\61\3\61\3\62\3\62\3\63\3"+ - "\63\3\63\3\64\3\64\3\65\3\65\3\66\3\66\3\67\3\67\3\67\38\38\38\39\39\3"+ - "9\39\3:\3:\3;\3;\3<\3<\3<\3<\3=\3=\3=\3=\3=\3=\3=\3>\3>\3>\3>\3?\3?\3"+ - "?\3?\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3@\3A\3A\3A\3B\3B\3B\3C\3C\3C\3"+ - "D\3D\3D\3E\3E\3E\3F\3F\7F\u01b6\nF\fF\16F\u01b9\13F\3G\3G\3G\7G\u01be"+ - "\nG\fG\16G\u01c1\13G\3G\3G\3H\3H\3H\7H\u01c8\nH\fH\16H\u01cb\13H\3H\3"+ - "H\3I\3I\3I\3I\3J\3J\3J\3J\3J\3J\7J\u01d9\nJ\fJ\16J\u01dc\13J\3J\5J\u01df"+ - "\nJ\3K\6K\u01e2\nK\rK\16K\u01e3\3L\3L\3L\6L\u01e9\nL\rL\16L\u01ea\3M\6"+ - "M\u01ee\nM\rM\16M\u01ef\3M\3M\7M\u01f4\nM\fM\16M\u01f7\13M\3M\5M\u01fa"+ - "\nM\3M\3M\6M\u01fe\nM\rM\16M\u01ff\3M\5M\u0203\nM\3M\6M\u0206\nM\rM\16"+ - "M\u0207\3M\3M\5M\u020c\nM\3N\3N\3N\6N\u0211\nN\rN\16N\u0212\3N\3N\7N\u0217"+ - "\nN\fN\16N\u021a\13N\3N\5N\u021d\nN\3N\3N\3N\3N\6N\u0223\nN\rN\16N\u0224"+ - "\3N\5N\u0228\nN\3N\3N\3N\6N\u022d\nN\rN\16N\u022e\3N\3N\5N\u0233\nN\3"+ - "O\3O\5O\u0237\nO\3O\6O\u023a\nO\rO\16O\u023b\3P\3P\5P\u0240\nP\3P\6P\u0243"+ - "\nP\rP\16P\u0244\3Q\3Q\3Q\3Q\5Q\u024b\nQ\3Q\3Q\3Q\3Q\5Q\u0251\nQ\3R\3"+ - "R\3R\3R\3R\3R\3R\3R\3R\3R\3R\5R\u025e\nR\3S\3S\3S\3S\3S\3T\3T\3T\3T\3"+ - "T\6T\u026a\nT\rT\16T\u026b\3T\3T\3U\3U\3V\3V\3W\3W\3W\3W\3W\3W\3W\3W\3"+ - "W\3X\3X\3X\3X\3X\3X\7X\u0283\nX\fX\16X\u0286\13X\3X\3X\7X\u028a\nX\fX"+ - "\16X\u028d\13X\3X\3X\7X\u0291\nX\fX\16X\u0294\13X\3X\3X\7X\u0298\nX\f"+ - "X\16X\u029b\13X\5X\u029d\nX\3X\3X\3X\5X\u02a2\nX\3X\3X\3Y\6Y\u02a7\nY"+ - "\rY\16Y\u02a8\3Y\3Y\3Z\3Z\3Z\7Z\u02b0\nZ\fZ\16Z\u02b3\13Z\3Z\3Z\3\u01da"+ - "\2[\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35"+ - "\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67\359\36"+ - ";\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67"+ - "m8o9q:s;u{?}@\177A\u0081B\u0083C\u0085D\u0087E\u0089F\u008bG\u008d"+ - "H\u008fI\u0091J\u0093\2\u0095K\u0097L\u0099M\u009bN\u009d\2\u009f\2\u00a1"+ - "\2\u00a3\2\u00a5\2\u00a7\2\u00a9\2\u00ab\2\u00adO\u00afP\u00b1Q\u00b3"+ - "R\3\2\23\5\2C\\aac|\6\2\62;C\\aac|\4\2$$^^\4\2))^^\4\2ZZzz\4\2GGgg\4\2"+ - "--//\4\2RRrr\f\2$$))^^cdhhppttvvxx||\3\2\62\64\3\2\62;\5\2\62;CHch\6\2"+ - "\f\f\17\17??]]\4\2\f\f\17\17\5\2\f\f\17\17]]\4\3\f\f\17\17\5\2\13\f\16"+ - "\17\"\"\2\u02db\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3"+ - "\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2"+ - "\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3"+ - "\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2"+ - "\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\2"+ - "9\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3"+ - "\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2"+ - "\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2"+ - "_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3"+ - "\2\2\2\2m\3\2\2\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2"+ - "\2\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0083"+ - "\3\2\2\2\2\u0085\3\2\2\2\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2"+ - "\2\2\u008d\3\2\2\2\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0095\3\2\2\2\2\u0097"+ - "\3\2\2\2\2\u0099\3\2\2\2\2\u009b\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2"+ - "\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2\2\3\u00b5\3\2\2\2\5\u00b7\3\2\2\2\7\u00b9"+ - "\3\2\2\2\t\u00bf\3\2\2\2\13\u00c4\3\2\2\2\r\u00c7\3\2\2\2\17\u00cb\3\2"+ - "\2\2\21\u00d1\3\2\2\2\23\u00d8\3\2\2\2\25\u00de\3\2\2\2\27\u00e1\3\2\2"+ - "\2\31\u00e6\3\2\2\2\33\u00ed\3\2\2\2\35\u00f2\3\2\2\2\37\u00f6\3\2\2\2"+ - "!\u00f8\3\2\2\2#\u00fb\3\2\2\2%\u0104\3\2\2\2\'\u010a\3\2\2\2)\u0112\3"+ - "\2\2\2+\u0118\3\2\2\2-\u011d\3\2\2\2/\u0124\3\2\2\2\61\u0127\3\2\2\2\63"+ - "\u0129\3\2\2\2\65\u012b\3\2\2\2\67\u012f\3\2\2\29\u0135\3\2\2\2;\u013a"+ - "\3\2\2\2=\u013e\3\2\2\2?\u0140\3\2\2\2A\u0142\3\2\2\2C\u0144\3\2\2\2E"+ - "\u0146\3\2\2\2G\u0148\3\2\2\2I\u014a\3\2\2\2K\u014d\3\2\2\2M\u0151\3\2"+ - "\2\2O\u0153\3\2\2\2Q\u0155\3\2\2\2S\u0158\3\2\2\2U\u015b\3\2\2\2W\u015e"+ - "\3\2\2\2Y\u0161\3\2\2\2[\u0164\3\2\2\2]\u0166\3\2\2\2_\u0168\3\2\2\2a"+ - "\u016a\3\2\2\2c\u016c\3\2\2\2e\u016e\3\2\2\2g\u0171\3\2\2\2i\u0173\3\2"+ - "\2\2k\u0175\3\2\2\2m\u0177\3\2\2\2o\u017a\3\2\2\2q\u017d\3\2\2\2s\u0181"+ - "\3\2\2\2u\u0183\3\2\2\2w\u0185\3\2\2\2y\u0189\3\2\2\2{\u0190\3\2\2\2}"+ - "\u0194\3\2\2\2\177\u0198\3\2\2\2\u0081\u01a4\3\2\2\2\u0083\u01a7\3\2\2"+ - "\2\u0085\u01aa\3\2\2\2\u0087\u01ad\3\2\2\2\u0089\u01b0\3\2\2\2\u008b\u01b3"+ - "\3\2\2\2\u008d\u01ba\3\2\2\2\u008f\u01c4\3\2\2\2\u0091\u01ce\3\2\2\2\u0093"+ - "\u01de\3\2\2\2\u0095\u01e1\3\2\2\2\u0097\u01e5\3\2\2\2\u0099\u020b\3\2"+ - "\2\2\u009b\u0232\3\2\2\2\u009d\u0234\3\2\2\2\u009f\u023d\3\2\2\2\u00a1"+ - "\u0250\3\2\2\2\u00a3\u025d\3\2\2\2\u00a5\u025f\3\2\2\2\u00a7\u0264\3\2"+ - "\2\2\u00a9\u026f\3\2\2\2\u00ab\u0271\3\2\2\2\u00ad\u0273\3\2\2\2\u00af"+ - "\u027c\3\2\2\2\u00b1\u02a6\3\2\2\2\u00b3\u02ac\3\2\2\2\u00b5\u00b6\7="+ - "\2\2\u00b6\4\3\2\2\2\u00b7\u00b8\7?\2\2\u00b8\6\3\2\2\2\u00b9\u00ba\7"+ - "d\2\2\u00ba\u00bb\7t\2\2\u00bb\u00bc\7g\2\2\u00bc\u00bd\7c\2\2\u00bd\u00be"+ - "\7m\2\2\u00be\b\3\2\2\2\u00bf\u00c0\7i\2\2\u00c0\u00c1\7q\2\2\u00c1\u00c2"+ - "\7v\2\2\u00c2\u00c3\7q\2\2\u00c3\n\3\2\2\2\u00c4\u00c5\7f\2\2\u00c5\u00c6"+ - "\7q\2\2\u00c6\f\3\2\2\2\u00c7\u00c8\7g\2\2\u00c8\u00c9\7p\2\2\u00c9\u00ca"+ - "\7f\2\2\u00ca\16\3\2\2\2\u00cb\u00cc\7y\2\2\u00cc\u00cd\7j\2\2\u00cd\u00ce"+ - "\7k\2\2\u00ce\u00cf\7n\2\2\u00cf\u00d0\7g\2\2\u00d0\20\3\2\2\2\u00d1\u00d2"+ - "\7t\2\2\u00d2\u00d3\7g\2\2\u00d3\u00d4\7r\2\2\u00d4\u00d5\7g\2\2\u00d5"+ - "\u00d6\7c\2\2\u00d6\u00d7\7v\2\2\u00d7\22\3\2\2\2\u00d8\u00d9\7w\2\2\u00d9"+ - "\u00da\7p\2\2\u00da\u00db\7v\2\2\u00db\u00dc\7k\2\2\u00dc\u00dd\7n\2\2"+ - "\u00dd\24\3\2\2\2\u00de\u00df\7k\2\2\u00df\u00e0\7h\2\2\u00e0\26\3\2\2"+ - "\2\u00e1\u00e2\7v\2\2\u00e2\u00e3\7j\2\2\u00e3\u00e4\7g\2\2\u00e4\u00e5"+ - "\7p\2\2\u00e5\30\3\2\2\2\u00e6\u00e7\7g\2\2\u00e7\u00e8\7n\2\2\u00e8\u00e9"+ - "\7u\2\2\u00e9\u00ea\7g\2\2\u00ea\u00eb\7k\2\2\u00eb\u00ec\7h\2\2\u00ec"+ - "\32\3\2\2\2\u00ed\u00ee\7g\2\2\u00ee\u00ef\7n\2\2\u00ef\u00f0\7u\2\2\u00f0"+ - "\u00f1\7g\2\2\u00f1\34\3\2\2\2\u00f2\u00f3\7h\2\2\u00f3\u00f4\7q\2\2\u00f4"+ - "\u00f5\7t\2\2\u00f5\36\3\2\2\2\u00f6\u00f7\7.\2\2\u00f7 \3\2\2\2\u00f8"+ - "\u00f9\7k\2\2\u00f9\u00fa\7p\2\2\u00fa\"\3\2\2\2\u00fb\u00fc\7h\2\2\u00fc"+ - "\u00fd\7w\2\2\u00fd\u00fe\7p\2\2\u00fe\u00ff\7e\2\2\u00ff\u0100\7v\2\2"+ - "\u0100\u0101\7k\2\2\u0101\u0102\7q\2\2\u0102\u0103\7p\2\2\u0103$\3\2\2"+ - "\2\u0104\u0105\7e\2\2\u0105\u0106\7n\2\2\u0106\u0107\7c\2\2\u0107\u0108"+ - "\7u\2\2\u0108\u0109\7u\2\2\u0109&\3\2\2\2\u010a\u010b\7g\2\2\u010b\u010c"+ - "\7z\2\2\u010c\u010d\7v\2\2\u010d\u010e\7g\2\2\u010e\u010f\7p\2\2\u010f"+ - "\u0110\7f\2\2\u0110\u0111\7u\2\2\u0111(\3\2\2\2\u0112\u0113\7n\2\2\u0113"+ - "\u0114\7q\2\2\u0114\u0115\7e\2\2\u0115\u0116\7c\2\2\u0116\u0117\7n\2\2"+ - "\u0117*\3\2\2\2\u0118\u0119\7u\2\2\u0119\u011a\7c\2\2\u011a\u011b\7h\2"+ - "\2\u011b\u011c\7g\2\2\u011c,\3\2\2\2\u011d\u011e\7t\2\2\u011e\u011f\7"+ - "g\2\2\u011f\u0120\7v\2\2\u0120\u0121\7w\2\2\u0121\u0122\7t\2\2\u0122\u0123"+ - "\7p\2\2\u0123.\3\2\2\2\u0124\u0125\7<\2\2\u0125\u0126\7<\2\2\u0126\60"+ - "\3\2\2\2\u0127\u0128\7\60\2\2\u0128\62\3\2\2\2\u0129\u012a\7<\2\2\u012a"+ - "\64\3\2\2\2\u012b\u012c\7p\2\2\u012c\u012d\7k\2\2\u012d\u012e\7n\2\2\u012e"+ - "\66\3\2\2\2\u012f\u0130\7h\2\2\u0130\u0131\7c\2\2\u0131\u0132\7n\2\2\u0132"+ - "\u0133\7u\2\2\u0133\u0134\7g\2\2\u01348\3\2\2\2\u0135\u0136\7v\2\2\u0136"+ - "\u0137\7t\2\2\u0137\u0138\7w\2\2\u0138\u0139\7g\2\2\u0139:\3\2\2\2\u013a"+ - "\u013b\7\60\2\2\u013b\u013c\7\60\2\2\u013c\u013d\7\60\2\2\u013d<\3\2\2"+ - "\2\u013e\u013f\7*\2\2\u013f>\3\2\2\2\u0140\u0141\7+\2\2\u0141@\3\2\2\2"+ - "\u0142\u0143\7]\2\2\u0143B\3\2\2\2\u0144\u0145\7_\2\2\u0145D\3\2\2\2\u0146"+ - "\u0147\7}\2\2\u0147F\3\2\2\2\u0148\u0149\7\177\2\2\u0149H\3\2\2\2\u014a"+ - "\u014b\7q\2\2\u014b\u014c\7t\2\2\u014cJ\3\2\2\2\u014d\u014e\7c\2\2\u014e"+ - "\u014f\7p\2\2\u014f\u0150\7f\2\2\u0150L\3\2\2\2\u0151\u0152\7>\2\2\u0152"+ - "N\3\2\2\2\u0153\u0154\7@\2\2\u0154P\3\2\2\2\u0155\u0156\7>\2\2\u0156\u0157"+ - "\7?\2\2\u0157R\3\2\2\2\u0158\u0159\7@\2\2\u0159\u015a\7?\2\2\u015aT\3"+ - "\2\2\2\u015b\u015c\7\u0080\2\2\u015c\u015d\7?\2\2\u015dV\3\2\2\2\u015e"+ - "\u015f\7?\2\2\u015f\u0160\7?\2\2\u0160X\3\2\2\2\u0161\u0162\7\60\2\2\u0162"+ - "\u0163\7\60\2\2\u0163Z\3\2\2\2\u0164\u0165\7-\2\2\u0165\\\3\2\2\2\u0166"+ - "\u0167\7/\2\2\u0167^\3\2\2\2\u0168\u0169\7,\2\2\u0169`\3\2\2\2\u016a\u016b"+ - "\7\61\2\2\u016bb\3\2\2\2\u016c\u016d\7\'\2\2\u016dd\3\2\2\2\u016e\u016f"+ - "\7\61\2\2\u016f\u0170\7\61\2\2\u0170f\3\2\2\2\u0171\u0172\7(\2\2\u0172"+ - "h\3\2\2\2\u0173\u0174\7~\2\2\u0174j\3\2\2\2\u0175\u0176\7\u0080\2\2\u0176"+ - "l\3\2\2\2\u0177\u0178\7>\2\2\u0178\u0179\7>\2\2\u0179n\3\2\2\2\u017a\u017b"+ - "\7@\2\2\u017b\u017c\7@\2\2\u017cp\3\2\2\2\u017d\u017e\7p\2\2\u017e\u017f"+ - "\7q\2\2\u017f\u0180\7v\2\2\u0180r\3\2\2\2\u0181\u0182\7%\2\2\u0182t\3"+ - "\2\2\2\u0183\u0184\7`\2\2\u0184v\3\2\2\2\u0185\u0186\7p\2\2\u0186\u0187"+ - "\7g\2\2\u0187\u0188\7y\2\2\u0188x\3\2\2\2\u0189\u018a\7u\2\2\u018a\u018b"+ - "\7v\2\2\u018b\u018c\7c\2\2\u018c\u018d\7v\2\2\u018d\u018e\7k\2\2\u018e"+ - "\u018f\7e\2\2\u018fz\3\2\2\2\u0190\u0191\7i\2\2\u0191\u0192\7g\2\2\u0192"+ - "\u0193\7v\2\2\u0193|\3\2\2\2\u0194\u0195\7u\2\2\u0195\u0196\7g\2\2\u0196"+ - "\u0197\7v\2\2\u0197~\3\2\2\2\u0198\u0199\7e\2\2\u0199\u019a\7q\2\2\u019a"+ - "\u019b\7p\2\2\u019b\u019c\7u\2\2\u019c\u019d\7v\2\2\u019d\u019e\7t\2\2"+ - "\u019e\u019f\7w\2\2\u019f\u01a0\7e\2\2\u01a0\u01a1\7v\2\2\u01a1\u01a2"+ - "\7q\2\2\u01a2\u01a3\7t\2\2\u01a3\u0080\3\2\2\2\u01a4\u01a5\7-\2\2\u01a5"+ - "\u01a6\7-\2\2\u01a6\u0082\3\2\2\2\u01a7\u01a8\7-\2\2\u01a8\u01a9\7?\2"+ - "\2\u01a9\u0084\3\2\2\2\u01aa\u01ab\7,\2\2\u01ab\u01ac\7?\2\2\u01ac\u0086"+ - "\3\2\2\2\u01ad\u01ae\7\61\2\2\u01ae\u01af\7?\2\2\u01af\u0088\3\2\2\2\u01b0"+ - "\u01b1\7/\2\2\u01b1\u01b2\7?\2\2\u01b2\u008a\3\2\2\2\u01b3\u01b7\t\2\2"+ - "\2\u01b4\u01b6\t\3\2\2\u01b5\u01b4\3\2\2\2\u01b6\u01b9\3\2\2\2\u01b7\u01b5"+ - "\3\2\2\2\u01b7\u01b8\3\2\2\2\u01b8\u008c\3\2\2\2\u01b9\u01b7\3\2\2\2\u01ba"+ - "\u01bf\7$\2\2\u01bb\u01be\5\u00a1Q\2\u01bc\u01be\n\4\2\2\u01bd\u01bb\3"+ - "\2\2\2\u01bd\u01bc\3\2\2\2\u01be\u01c1\3\2\2\2\u01bf\u01bd\3\2\2\2\u01bf"+ - "\u01c0\3\2\2\2\u01c0\u01c2\3\2\2\2\u01c1\u01bf\3\2\2\2\u01c2\u01c3\7$"+ - "\2\2\u01c3\u008e\3\2\2\2\u01c4\u01c9\7)\2\2\u01c5\u01c8\5\u00a1Q\2\u01c6"+ - "\u01c8\n\5\2\2\u01c7\u01c5\3\2\2\2\u01c7\u01c6\3\2\2\2\u01c8\u01cb\3\2"+ - "\2\2\u01c9\u01c7\3\2\2\2\u01c9\u01ca\3\2\2\2\u01ca\u01cc\3\2\2\2\u01cb"+ - "\u01c9\3\2\2\2\u01cc\u01cd\7)\2\2\u01cd\u0090\3\2\2\2\u01ce\u01cf\7]\2"+ - "\2\u01cf\u01d0\5\u0093J\2\u01d0\u01d1\7_\2\2\u01d1\u0092\3\2\2\2\u01d2"+ - "\u01d3\7?\2\2\u01d3\u01d4\5\u0093J\2\u01d4\u01d5\7?\2\2\u01d5\u01df\3"+ - "\2\2\2\u01d6\u01da\7]\2\2\u01d7\u01d9\13\2\2\2\u01d8\u01d7\3\2\2\2\u01d9"+ - "\u01dc\3\2\2\2\u01da\u01db\3\2\2\2\u01da\u01d8\3\2\2\2\u01db\u01dd\3\2"+ - "\2\2\u01dc\u01da\3\2\2\2\u01dd\u01df\7_\2\2\u01de\u01d2\3\2\2\2\u01de"+ - "\u01d6\3\2\2\2\u01df\u0094\3\2\2\2\u01e0\u01e2\5\u00a9U\2\u01e1\u01e0"+ - "\3\2\2\2\u01e2\u01e3\3\2\2\2\u01e3\u01e1\3\2\2\2\u01e3\u01e4\3\2\2\2\u01e4"+ - "\u0096\3\2\2\2\u01e5\u01e6\7\62\2\2\u01e6\u01e8\t\6\2\2\u01e7\u01e9\5"+ - "\u00abV\2\u01e8\u01e7\3\2\2\2\u01e9\u01ea\3\2\2\2\u01ea\u01e8\3\2\2\2"+ - "\u01ea\u01eb\3\2\2\2\u01eb\u0098\3\2\2\2\u01ec\u01ee\5\u00a9U\2\u01ed"+ - "\u01ec\3\2\2\2\u01ee\u01ef\3\2\2\2\u01ef\u01ed\3\2\2\2\u01ef\u01f0\3\2"+ - "\2\2\u01f0\u01f1\3\2\2\2\u01f1\u01f5\7\60\2\2\u01f2\u01f4\5\u00a9U\2\u01f3"+ - "\u01f2\3\2\2\2\u01f4\u01f7\3\2\2\2\u01f5\u01f3\3\2\2\2\u01f5\u01f6\3\2"+ - "\2\2\u01f6\u01f9\3\2\2\2\u01f7\u01f5\3\2\2\2\u01f8\u01fa\5\u009dO\2\u01f9"+ - "\u01f8\3\2\2\2\u01f9\u01fa\3\2\2\2\u01fa\u020c\3\2\2\2\u01fb\u01fd\7\60"+ - "\2\2\u01fc\u01fe\5\u00a9U\2\u01fd\u01fc\3\2\2\2\u01fe\u01ff\3\2\2\2\u01ff"+ - "\u01fd\3\2\2\2\u01ff\u0200\3\2\2\2\u0200\u0202\3\2\2\2\u0201\u0203\5\u009d"+ - "O\2\u0202\u0201\3\2\2\2\u0202\u0203\3\2\2\2\u0203\u020c\3\2\2\2\u0204"+ - "\u0206\5\u00a9U\2\u0205\u0204\3\2\2\2\u0206\u0207\3\2\2\2\u0207\u0205"+ - "\3\2\2\2\u0207\u0208\3\2\2\2\u0208\u0209\3\2\2\2\u0209\u020a\5\u009dO"+ - "\2\u020a\u020c\3\2\2\2\u020b\u01ed\3\2\2\2\u020b\u01fb\3\2\2\2\u020b\u0205"+ - "\3\2\2\2\u020c\u009a\3\2\2\2\u020d\u020e\7\62\2\2\u020e\u0210\t\6\2\2"+ - "\u020f\u0211\5\u00abV\2\u0210\u020f\3\2\2\2\u0211\u0212\3\2\2\2\u0212"+ - "\u0210\3\2\2\2\u0212\u0213\3\2\2\2\u0213\u0214\3\2\2\2\u0214\u0218\7\60"+ - "\2\2\u0215\u0217\5\u00abV\2\u0216\u0215\3\2\2\2\u0217\u021a\3\2\2\2\u0218"+ - "\u0216\3\2\2\2\u0218\u0219\3\2\2\2\u0219\u021c\3\2\2\2\u021a\u0218\3\2"+ - "\2\2\u021b\u021d\5\u009fP\2\u021c\u021b\3\2\2\2\u021c\u021d\3\2\2\2\u021d"+ - "\u0233\3\2\2\2\u021e\u021f\7\62\2\2\u021f\u0220\t\6\2\2\u0220\u0222\7"+ - "\60\2\2\u0221\u0223\5\u00abV\2\u0222\u0221\3\2\2\2\u0223\u0224\3\2\2\2"+ - "\u0224\u0222\3\2\2\2\u0224\u0225\3\2\2\2\u0225\u0227\3\2\2\2\u0226\u0228"+ - "\5\u009fP\2\u0227\u0226\3\2\2\2\u0227\u0228\3\2\2\2\u0228\u0233\3\2\2"+ - "\2\u0229\u022a\7\62\2\2\u022a\u022c\t\6\2\2\u022b\u022d\5\u00abV\2\u022c"+ - "\u022b\3\2\2\2\u022d\u022e\3\2\2\2\u022e\u022c\3\2\2\2\u022e\u022f\3\2"+ - "\2\2\u022f\u0230\3\2\2\2\u0230\u0231\5\u009fP\2\u0231\u0233\3\2\2\2\u0232"+ - "\u020d\3\2\2\2\u0232\u021e\3\2\2\2\u0232\u0229\3\2\2\2\u0233\u009c\3\2"+ - "\2\2\u0234\u0236\t\7\2\2\u0235\u0237\t\b\2\2\u0236\u0235\3\2\2\2\u0236"+ - "\u0237\3\2\2\2\u0237\u0239\3\2\2\2\u0238\u023a\5\u00a9U\2\u0239\u0238"+ - "\3\2\2\2\u023a\u023b\3\2\2\2\u023b\u0239\3\2\2\2\u023b\u023c\3\2\2\2\u023c"+ - "\u009e\3\2\2\2\u023d\u023f\t\t\2\2\u023e\u0240\t\b\2\2\u023f\u023e\3\2"+ - "\2\2\u023f\u0240\3\2\2\2\u0240\u0242\3\2\2\2\u0241\u0243\5\u00a9U\2\u0242"+ - "\u0241\3\2\2\2\u0243\u0244\3\2\2\2\u0244\u0242\3\2\2\2\u0244\u0245\3\2"+ - "\2\2\u0245\u00a0\3\2\2\2\u0246\u0247\7^\2\2\u0247\u0251\t\n\2\2\u0248"+ - "\u024a\7^\2\2\u0249\u024b\7\17\2\2\u024a\u0249\3\2\2\2\u024a\u024b\3\2"+ - "\2\2\u024b\u024c\3\2\2\2\u024c\u0251\7\f\2\2\u024d\u0251\5\u00a3R\2\u024e"+ - "\u0251\5\u00a5S\2\u024f\u0251\5\u00a7T\2\u0250\u0246\3\2\2\2\u0250\u0248"+ - "\3\2\2\2\u0250\u024d\3\2\2\2\u0250\u024e\3\2\2\2\u0250\u024f\3\2\2\2\u0251"+ - "\u00a2\3\2\2\2\u0252\u0253\7^\2\2\u0253\u025e\5\u00a9U\2\u0254\u0255\7"+ - "^\2\2\u0255\u0256\5\u00a9U\2\u0256\u0257\5\u00a9U\2\u0257\u025e\3\2\2"+ - "\2\u0258\u0259\7^\2\2\u0259\u025a\t\13\2\2\u025a\u025b\5\u00a9U\2\u025b"+ - "\u025c\5\u00a9U\2\u025c\u025e\3\2\2\2\u025d\u0252\3\2\2\2\u025d\u0254"+ - "\3\2\2\2\u025d\u0258\3\2\2\2\u025e\u00a4\3\2\2\2\u025f\u0260\7^\2\2\u0260"+ - "\u0261\7z\2\2\u0261\u0262\5\u00abV\2\u0262\u0263\5\u00abV\2\u0263\u00a6"+ - "\3\2\2\2\u0264\u0265\7^\2\2\u0265\u0266\7w\2\2\u0266\u0267\7}\2\2\u0267"+ - "\u0269\3\2\2\2\u0268\u026a\5\u00abV\2\u0269\u0268\3\2\2\2\u026a\u026b"+ - "\3\2\2\2\u026b\u0269\3\2\2\2\u026b\u026c\3\2\2\2\u026c\u026d\3\2\2\2\u026d"+ - "\u026e\7\177\2\2\u026e\u00a8\3\2\2\2\u026f\u0270\t\f\2\2\u0270\u00aa\3"+ - "\2\2\2\u0271\u0272\t\r\2\2\u0272\u00ac\3\2\2\2\u0273\u0274\7/\2\2\u0274"+ - "\u0275\7/\2\2\u0275\u0276\7]\2\2\u0276\u0277\3\2\2\2\u0277\u0278\5\u0093"+ - "J\2\u0278\u0279\7_\2\2\u0279\u027a\3\2\2\2\u027a\u027b\bW\2\2\u027b\u00ae"+ - "\3\2\2\2\u027c\u027d\7/\2\2\u027d\u027e\7/\2\2\u027e\u029c\3\2\2\2\u027f"+ - "\u029d\3\2\2\2\u0280\u0284\7]\2\2\u0281\u0283\7?\2\2\u0282\u0281\3\2\2"+ - "\2\u0283\u0286\3\2\2\2\u0284\u0282\3\2\2\2\u0284\u0285\3\2\2\2\u0285\u029d"+ - "\3\2\2\2\u0286\u0284\3\2\2\2\u0287\u028b\7]\2\2\u0288\u028a\7?\2\2\u0289"+ - "\u0288\3\2\2\2\u028a\u028d\3\2\2\2\u028b\u0289\3\2\2\2\u028b\u028c\3\2"+ - "\2\2\u028c\u028e\3\2\2\2\u028d\u028b\3\2\2\2\u028e\u0292\n\16\2\2\u028f"+ - "\u0291\n\17\2\2\u0290\u028f\3\2\2\2\u0291\u0294\3\2\2\2\u0292\u0290\3"+ - "\2\2\2\u0292\u0293\3\2\2\2\u0293\u029d\3\2\2\2\u0294\u0292\3\2\2\2\u0295"+ - "\u0299\n\20\2\2\u0296\u0298\n\17\2\2\u0297\u0296\3\2\2\2\u0298\u029b\3"+ - "\2\2\2\u0299\u0297\3\2\2\2\u0299\u029a\3\2\2\2\u029a\u029d\3\2\2\2\u029b"+ - "\u0299\3\2\2\2\u029c\u027f\3\2\2\2\u029c\u0280\3\2\2\2\u029c\u0287\3\2"+ - "\2\2\u029c\u0295\3\2\2\2\u029d\u02a1\3\2\2\2\u029e\u029f\7\17\2\2\u029f"+ - "\u02a2\7\f\2\2\u02a0\u02a2\t\21\2\2\u02a1\u029e\3\2\2\2\u02a1\u02a0\3"+ - "\2\2\2\u02a2\u02a3\3\2\2\2\u02a3\u02a4\bX\2\2\u02a4\u00b0\3\2\2\2\u02a5"+ - "\u02a7\t\22\2\2\u02a6\u02a5\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8\u02a6\3"+ - "\2\2\2\u02a8\u02a9\3\2\2\2\u02a9\u02aa\3\2\2\2\u02aa\u02ab\bY\3\2\u02ab"+ - "\u00b2\3\2\2\2\u02ac\u02ad\7%\2\2\u02ad\u02b1\7#\2\2\u02ae\u02b0\n\17"+ - "\2\2\u02af\u02ae\3\2\2\2\u02b0\u02b3\3\2\2\2\u02b1\u02af\3\2\2\2\u02b1"+ - "\u02b2\3\2\2\2\u02b2\u02b4\3\2\2\2\u02b3\u02b1\3\2\2\2\u02b4\u02b5\bZ"+ - "\2\2\u02b5\u00b4\3\2\2\2*\2\u01b7\u01bd\u01bf\u01c7\u01c9\u01da\u01de"+ - "\u01e3\u01ea\u01ef\u01f5\u01f9\u01ff\u0202\u0207\u020b\u0212\u0218\u021c"+ - "\u0224\u0227\u022e\u0232\u0236\u023b\u023f\u0244\u024a\u0250\u025d\u026b"+ - "\u0284\u028b\u0292\u0299\u029c\u02a1\u02a8\u02b1\4\2\3\2\b\2\2"; + "\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\3\2\3\2\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4"+ + "\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3"+ + "\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13"+ + "\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3"+ + "\16\3\17\3\17\3\17\3\17\3\20\3\20\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3"+ + "\22\3\22\3\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3"+ + "\24\3\24\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26\3\26\3"+ + "\26\3\26\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30\3\31\3\31\3"+ + "\32\3\32\3\33\3\33\3\33\3\33\3\34\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3"+ + "\35\3\35\3\35\3\36\3\36\3\36\3\36\3\37\3\37\3 \3 \3!\3!\3\"\3\"\3#\3#"+ + "\3$\3$\3%\3%\3%\3&\3&\3&\3&\3\'\3\'\3(\3(\3)\3)\3)\3*\3*\3*\3+\3+\3+\3"+ + ",\3,\3,\3-\3-\3-\3.\3.\3/\3/\3\60\3\60\3\61\3\61\3\62\3\62\3\63\3\63\3"+ + "\63\3\64\3\64\3\65\3\65\3\66\3\66\3\67\3\67\3\67\38\38\38\39\39\39\39"+ + "\3:\3:\3;\3;\3<\3<\3<\3<\3<\3<\3<\3=\3=\3=\3=\3>\3>\3>\3>\3?\3?\3?\3?"+ + "\3?\3?\3?\3?\3?\3?\3?\3?\3@\3@\3@\3A\3A\3A\3B\3B\3B\3C\3C\3C\3D\3D\3D"+ + "\3E\3E\7E\u01b0\nE\fE\16E\u01b3\13E\3F\3F\3F\7F\u01b8\nF\fF\16F\u01bb"+ + "\13F\3F\3F\3G\3G\3G\7G\u01c2\nG\fG\16G\u01c5\13G\3G\3G\3H\3H\3H\3H\3I"+ + "\3I\3I\3I\3I\3I\7I\u01d3\nI\fI\16I\u01d6\13I\3I\5I\u01d9\nI\3J\6J\u01dc"+ + "\nJ\rJ\16J\u01dd\3K\3K\3K\6K\u01e3\nK\rK\16K\u01e4\3L\6L\u01e8\nL\rL\16"+ + "L\u01e9\3L\3L\7L\u01ee\nL\fL\16L\u01f1\13L\3L\5L\u01f4\nL\3L\3L\6L\u01f8"+ + "\nL\rL\16L\u01f9\3L\5L\u01fd\nL\3L\6L\u0200\nL\rL\16L\u0201\3L\3L\5L\u0206"+ + "\nL\3M\3M\3M\6M\u020b\nM\rM\16M\u020c\3M\3M\7M\u0211\nM\fM\16M\u0214\13"+ + "M\3M\5M\u0217\nM\3M\3M\3M\3M\6M\u021d\nM\rM\16M\u021e\3M\5M\u0222\nM\3"+ + "M\3M\3M\6M\u0227\nM\rM\16M\u0228\3M\3M\5M\u022d\nM\3N\3N\5N\u0231\nN\3"+ + "N\6N\u0234\nN\rN\16N\u0235\3O\3O\5O\u023a\nO\3O\6O\u023d\nO\rO\16O\u023e"+ + "\3P\3P\3P\3P\5P\u0245\nP\3P\3P\3P\3P\5P\u024b\nP\3Q\3Q\3Q\3Q\3Q\3Q\3Q"+ + "\3Q\3Q\3Q\3Q\5Q\u0258\nQ\3R\3R\3R\3R\3R\3S\3S\3S\3S\3S\6S\u0264\nS\rS"+ + "\16S\u0265\3S\3S\3T\3T\3U\3U\3V\3V\3V\3V\3V\3V\3V\3V\3V\3W\3W\3W\3W\3"+ + "W\3W\7W\u027d\nW\fW\16W\u0280\13W\3W\3W\7W\u0284\nW\fW\16W\u0287\13W\3"+ + "W\3W\7W\u028b\nW\fW\16W\u028e\13W\3W\3W\7W\u0292\nW\fW\16W\u0295\13W\5"+ + "W\u0297\nW\3W\3W\3W\5W\u029c\nW\3W\3W\3X\6X\u02a1\nX\rX\16X\u02a2\3X\3"+ + "X\3Y\3Y\3Y\7Y\u02aa\nY\fY\16Y\u02ad\13Y\3Y\3Y\3\u01d4\2Z\3\3\5\4\7\5\t"+ + "\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23"+ + "%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!A\"C#E$G"+ + "%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s;u{"+ + "?}@\177A\u0081B\u0083C\u0085D\u0087E\u0089F\u008bG\u008dH\u008fI\u0091"+ + "\2\u0093J\u0095K\u0097L\u0099M\u009b\2\u009d\2\u009f\2\u00a1\2\u00a3\2"+ + "\u00a5\2\u00a7\2\u00a9\2\u00abN\u00adO\u00afP\u00b1Q\3\2\23\5\2C\\aac"+ + "|\6\2\62;C\\aac|\4\2$$^^\4\2))^^\4\2ZZzz\4\2GGgg\4\2--//\4\2RRrr\f\2$"+ + "$))^^cdhhppttvvxx||\3\2\62\64\3\2\62;\5\2\62;CHch\6\2\f\f\17\17??]]\4"+ + "\2\f\f\17\17\5\2\f\f\17\17]]\4\3\f\f\17\17\5\2\13\f\16\17\"\"\2\u02d5"+ + "\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2"+ + "\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2"+ + "\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2"+ + "\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2"+ + "\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3"+ + "\2\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2"+ + "\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2"+ + "U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3"+ + "\2\2\2\2c\3\2\2\2\2e\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2"+ + "\2\2o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2\2y\3\2\2\2\2"+ + "{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2\2\u0081\3\2\2\2\2\u0083\3\2\2\2\2\u0085"+ + "\3\2\2\2\2\u0087\3\2\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2"+ + "\2\2\u008f\3\2\2\2\2\u0093\3\2\2\2\2\u0095\3\2\2\2\2\u0097\3\2\2\2\2\u0099"+ + "\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2\2\2\u00b1\3\2\2"+ + "\2\3\u00b3\3\2\2\2\5\u00b5\3\2\2\2\7\u00b7\3\2\2\2\t\u00bd\3\2\2\2\13"+ + "\u00c2\3\2\2\2\r\u00c5\3\2\2\2\17\u00c9\3\2\2\2\21\u00cf\3\2\2\2\23\u00d6"+ + "\3\2\2\2\25\u00dc\3\2\2\2\27\u00df\3\2\2\2\31\u00e4\3\2\2\2\33\u00eb\3"+ + "\2\2\2\35\u00f0\3\2\2\2\37\u00f4\3\2\2\2!\u00f6\3\2\2\2#\u00f9\3\2\2\2"+ + "%\u0102\3\2\2\2\'\u0108\3\2\2\2)\u0110\3\2\2\2+\u0116\3\2\2\2-\u011b\3"+ + "\2\2\2/\u0122\3\2\2\2\61\u0125\3\2\2\2\63\u0127\3\2\2\2\65\u0129\3\2\2"+ + "\2\67\u012d\3\2\2\29\u0133\3\2\2\2;\u0138\3\2\2\2=\u013c\3\2\2\2?\u013e"+ + "\3\2\2\2A\u0140\3\2\2\2C\u0142\3\2\2\2E\u0144\3\2\2\2G\u0146\3\2\2\2I"+ + "\u0148\3\2\2\2K\u014b\3\2\2\2M\u014f\3\2\2\2O\u0151\3\2\2\2Q\u0153\3\2"+ + "\2\2S\u0156\3\2\2\2U\u0159\3\2\2\2W\u015c\3\2\2\2Y\u015f\3\2\2\2[\u0162"+ + "\3\2\2\2]\u0164\3\2\2\2_\u0166\3\2\2\2a\u0168\3\2\2\2c\u016a\3\2\2\2e"+ + "\u016c\3\2\2\2g\u016f\3\2\2\2i\u0171\3\2\2\2k\u0173\3\2\2\2m\u0175\3\2"+ + "\2\2o\u0178\3\2\2\2q\u017b\3\2\2\2s\u017f\3\2\2\2u\u0181\3\2\2\2w\u0183"+ + "\3\2\2\2y\u018a\3\2\2\2{\u018e\3\2\2\2}\u0192\3\2\2\2\177\u019e\3\2\2"+ + "\2\u0081\u01a1\3\2\2\2\u0083\u01a4\3\2\2\2\u0085\u01a7\3\2\2\2\u0087\u01aa"+ + "\3\2\2\2\u0089\u01ad\3\2\2\2\u008b\u01b4\3\2\2\2\u008d\u01be\3\2\2\2\u008f"+ + "\u01c8\3\2\2\2\u0091\u01d8\3\2\2\2\u0093\u01db\3\2\2\2\u0095\u01df\3\2"+ + "\2\2\u0097\u0205\3\2\2\2\u0099\u022c\3\2\2\2\u009b\u022e\3\2\2\2\u009d"+ + "\u0237\3\2\2\2\u009f\u024a\3\2\2\2\u00a1\u0257\3\2\2\2\u00a3\u0259\3\2"+ + "\2\2\u00a5\u025e\3\2\2\2\u00a7\u0269\3\2\2\2\u00a9\u026b\3\2\2\2\u00ab"+ + "\u026d\3\2\2\2\u00ad\u0276\3\2\2\2\u00af\u02a0\3\2\2\2\u00b1\u02a6\3\2"+ + "\2\2\u00b3\u00b4\7=\2\2\u00b4\4\3\2\2\2\u00b5\u00b6\7?\2\2\u00b6\6\3\2"+ + "\2\2\u00b7\u00b8\7d\2\2\u00b8\u00b9\7t\2\2\u00b9\u00ba\7g\2\2\u00ba\u00bb"+ + "\7c\2\2\u00bb\u00bc\7m\2\2\u00bc\b\3\2\2\2\u00bd\u00be\7i\2\2\u00be\u00bf"+ + "\7q\2\2\u00bf\u00c0\7v\2\2\u00c0\u00c1\7q\2\2\u00c1\n\3\2\2\2\u00c2\u00c3"+ + "\7f\2\2\u00c3\u00c4\7q\2\2\u00c4\f\3\2\2\2\u00c5\u00c6\7g\2\2\u00c6\u00c7"+ + "\7p\2\2\u00c7\u00c8\7f\2\2\u00c8\16\3\2\2\2\u00c9\u00ca\7y\2\2\u00ca\u00cb"+ + "\7j\2\2\u00cb\u00cc\7k\2\2\u00cc\u00cd\7n\2\2\u00cd\u00ce\7g\2\2\u00ce"+ + "\20\3\2\2\2\u00cf\u00d0\7t\2\2\u00d0\u00d1\7g\2\2\u00d1\u00d2\7r\2\2\u00d2"+ + "\u00d3\7g\2\2\u00d3\u00d4\7c\2\2\u00d4\u00d5\7v\2\2\u00d5\22\3\2\2\2\u00d6"+ + "\u00d7\7w\2\2\u00d7\u00d8\7p\2\2\u00d8\u00d9\7v\2\2\u00d9\u00da\7k\2\2"+ + "\u00da\u00db\7n\2\2\u00db\24\3\2\2\2\u00dc\u00dd\7k\2\2\u00dd\u00de\7"+ + "h\2\2\u00de\26\3\2\2\2\u00df\u00e0\7v\2\2\u00e0\u00e1\7j\2\2\u00e1\u00e2"+ + "\7g\2\2\u00e2\u00e3\7p\2\2\u00e3\30\3\2\2\2\u00e4\u00e5\7g\2\2\u00e5\u00e6"+ + "\7n\2\2\u00e6\u00e7\7u\2\2\u00e7\u00e8\7g\2\2\u00e8\u00e9\7k\2\2\u00e9"+ + "\u00ea\7h\2\2\u00ea\32\3\2\2\2\u00eb\u00ec\7g\2\2\u00ec\u00ed\7n\2\2\u00ed"+ + "\u00ee\7u\2\2\u00ee\u00ef\7g\2\2\u00ef\34\3\2\2\2\u00f0\u00f1\7h\2\2\u00f1"+ + "\u00f2\7q\2\2\u00f2\u00f3\7t\2\2\u00f3\36\3\2\2\2\u00f4\u00f5\7.\2\2\u00f5"+ + " \3\2\2\2\u00f6\u00f7\7k\2\2\u00f7\u00f8\7p\2\2\u00f8\"\3\2\2\2\u00f9"+ + "\u00fa\7h\2\2\u00fa\u00fb\7w\2\2\u00fb\u00fc\7p\2\2\u00fc\u00fd\7e\2\2"+ + "\u00fd\u00fe\7v\2\2\u00fe\u00ff\7k\2\2\u00ff\u0100\7q\2\2\u0100\u0101"+ + "\7p\2\2\u0101$\3\2\2\2\u0102\u0103\7e\2\2\u0103\u0104\7n\2\2\u0104\u0105"+ + "\7c\2\2\u0105\u0106\7u\2\2\u0106\u0107\7u\2\2\u0107&\3\2\2\2\u0108\u0109"+ + "\7g\2\2\u0109\u010a\7z\2\2\u010a\u010b\7v\2\2\u010b\u010c\7g\2\2\u010c"+ + "\u010d\7p\2\2\u010d\u010e\7f\2\2\u010e\u010f\7u\2\2\u010f(\3\2\2\2\u0110"+ + "\u0111\7n\2\2\u0111\u0112\7q\2\2\u0112\u0113\7e\2\2\u0113\u0114\7c\2\2"+ + "\u0114\u0115\7n\2\2\u0115*\3\2\2\2\u0116\u0117\7u\2\2\u0117\u0118\7c\2"+ + "\2\u0118\u0119\7h\2\2\u0119\u011a\7g\2\2\u011a,\3\2\2\2\u011b\u011c\7"+ + "t\2\2\u011c\u011d\7g\2\2\u011d\u011e\7v\2\2\u011e\u011f\7w\2\2\u011f\u0120"+ + "\7t\2\2\u0120\u0121\7p\2\2\u0121.\3\2\2\2\u0122\u0123\7<\2\2\u0123\u0124"+ + "\7<\2\2\u0124\60\3\2\2\2\u0125\u0126\7\60\2\2\u0126\62\3\2\2\2\u0127\u0128"+ + "\7<\2\2\u0128\64\3\2\2\2\u0129\u012a\7p\2\2\u012a\u012b\7k\2\2\u012b\u012c"+ + "\7n\2\2\u012c\66\3\2\2\2\u012d\u012e\7h\2\2\u012e\u012f\7c\2\2\u012f\u0130"+ + "\7n\2\2\u0130\u0131\7u\2\2\u0131\u0132\7g\2\2\u01328\3\2\2\2\u0133\u0134"+ + "\7v\2\2\u0134\u0135\7t\2\2\u0135\u0136\7w\2\2\u0136\u0137\7g\2\2\u0137"+ + ":\3\2\2\2\u0138\u0139\7\60\2\2\u0139\u013a\7\60\2\2\u013a\u013b\7\60\2"+ + "\2\u013b<\3\2\2\2\u013c\u013d\7*\2\2\u013d>\3\2\2\2\u013e\u013f\7+\2\2"+ + "\u013f@\3\2\2\2\u0140\u0141\7]\2\2\u0141B\3\2\2\2\u0142\u0143\7_\2\2\u0143"+ + "D\3\2\2\2\u0144\u0145\7}\2\2\u0145F\3\2\2\2\u0146\u0147\7\177\2\2\u0147"+ + "H\3\2\2\2\u0148\u0149\7q\2\2\u0149\u014a\7t\2\2\u014aJ\3\2\2\2\u014b\u014c"+ + "\7c\2\2\u014c\u014d\7p\2\2\u014d\u014e\7f\2\2\u014eL\3\2\2\2\u014f\u0150"+ + "\7>\2\2\u0150N\3\2\2\2\u0151\u0152\7@\2\2\u0152P\3\2\2\2\u0153\u0154\7"+ + ">\2\2\u0154\u0155\7?\2\2\u0155R\3\2\2\2\u0156\u0157\7@\2\2\u0157\u0158"+ + "\7?\2\2\u0158T\3\2\2\2\u0159\u015a\7\u0080\2\2\u015a\u015b\7?\2\2\u015b"+ + "V\3\2\2\2\u015c\u015d\7?\2\2\u015d\u015e\7?\2\2\u015eX\3\2\2\2\u015f\u0160"+ + "\7\60\2\2\u0160\u0161\7\60\2\2\u0161Z\3\2\2\2\u0162\u0163\7-\2\2\u0163"+ + "\\\3\2\2\2\u0164\u0165\7/\2\2\u0165^\3\2\2\2\u0166\u0167\7,\2\2\u0167"+ + "`\3\2\2\2\u0168\u0169\7\61\2\2\u0169b\3\2\2\2\u016a\u016b\7\'\2\2\u016b"+ + "d\3\2\2\2\u016c\u016d\7\61\2\2\u016d\u016e\7\61\2\2\u016ef\3\2\2\2\u016f"+ + "\u0170\7(\2\2\u0170h\3\2\2\2\u0171\u0172\7~\2\2\u0172j\3\2\2\2\u0173\u0174"+ + "\7\u0080\2\2\u0174l\3\2\2\2\u0175\u0176\7>\2\2\u0176\u0177\7>\2\2\u0177"+ + "n\3\2\2\2\u0178\u0179\7@\2\2\u0179\u017a\7@\2\2\u017ap\3\2\2\2\u017b\u017c"+ + "\7p\2\2\u017c\u017d\7q\2\2\u017d\u017e\7v\2\2\u017er\3\2\2\2\u017f\u0180"+ + "\7%\2\2\u0180t\3\2\2\2\u0181\u0182\7`\2\2\u0182v\3\2\2\2\u0183\u0184\7"+ + "u\2\2\u0184\u0185\7v\2\2\u0185\u0186\7c\2\2\u0186\u0187\7v\2\2\u0187\u0188"+ + "\7k\2\2\u0188\u0189\7e\2\2\u0189x\3\2\2\2\u018a\u018b\7i\2\2\u018b\u018c"+ + "\7g\2\2\u018c\u018d\7v\2\2\u018dz\3\2\2\2\u018e\u018f\7u\2\2\u018f\u0190"+ + "\7g\2\2\u0190\u0191\7v\2\2\u0191|\3\2\2\2\u0192\u0193\7e\2\2\u0193\u0194"+ + "\7q\2\2\u0194\u0195\7p\2\2\u0195\u0196\7u\2\2\u0196\u0197\7v\2\2\u0197"+ + "\u0198\7t\2\2\u0198\u0199\7w\2\2\u0199\u019a\7e\2\2\u019a\u019b\7v\2\2"+ + "\u019b\u019c\7q\2\2\u019c\u019d\7t\2\2\u019d~\3\2\2\2\u019e\u019f\7-\2"+ + "\2\u019f\u01a0\7-\2\2\u01a0\u0080\3\2\2\2\u01a1\u01a2\7-\2\2\u01a2\u01a3"+ + "\7?\2\2\u01a3\u0082\3\2\2\2\u01a4\u01a5\7,\2\2\u01a5\u01a6\7?\2\2\u01a6"+ + "\u0084\3\2\2\2\u01a7\u01a8\7\61\2\2\u01a8\u01a9\7?\2\2\u01a9\u0086\3\2"+ + "\2\2\u01aa\u01ab\7/\2\2\u01ab\u01ac\7?\2\2\u01ac\u0088\3\2\2\2\u01ad\u01b1"+ + "\t\2\2\2\u01ae\u01b0\t\3\2\2\u01af\u01ae\3\2\2\2\u01b0\u01b3\3\2\2\2\u01b1"+ + "\u01af\3\2\2\2\u01b1\u01b2\3\2\2\2\u01b2\u008a\3\2\2\2\u01b3\u01b1\3\2"+ + "\2\2\u01b4\u01b9\7$\2\2\u01b5\u01b8\5\u009fP\2\u01b6\u01b8\n\4\2\2\u01b7"+ + "\u01b5\3\2\2\2\u01b7\u01b6\3\2\2\2\u01b8\u01bb\3\2\2\2\u01b9\u01b7\3\2"+ + "\2\2\u01b9\u01ba\3\2\2\2\u01ba\u01bc\3\2\2\2\u01bb\u01b9\3\2\2\2\u01bc"+ + "\u01bd\7$\2\2\u01bd\u008c\3\2\2\2\u01be\u01c3\7)\2\2\u01bf\u01c2\5\u009f"+ + "P\2\u01c0\u01c2\n\5\2\2\u01c1\u01bf\3\2\2\2\u01c1\u01c0\3\2\2\2\u01c2"+ + "\u01c5\3\2\2\2\u01c3\u01c1\3\2\2\2\u01c3\u01c4\3\2\2\2\u01c4\u01c6\3\2"+ + "\2\2\u01c5\u01c3\3\2\2\2\u01c6\u01c7\7)\2\2\u01c7\u008e\3\2\2\2\u01c8"+ + "\u01c9\7]\2\2\u01c9\u01ca\5\u0091I\2\u01ca\u01cb\7_\2\2\u01cb\u0090\3"+ + "\2\2\2\u01cc\u01cd\7?\2\2\u01cd\u01ce\5\u0091I\2\u01ce\u01cf\7?\2\2\u01cf"+ + "\u01d9\3\2\2\2\u01d0\u01d4\7]\2\2\u01d1\u01d3\13\2\2\2\u01d2\u01d1\3\2"+ + "\2\2\u01d3\u01d6\3\2\2\2\u01d4\u01d5\3\2\2\2\u01d4\u01d2\3\2\2\2\u01d5"+ + "\u01d7\3\2\2\2\u01d6\u01d4\3\2\2\2\u01d7\u01d9\7_\2\2\u01d8\u01cc\3\2"+ + "\2\2\u01d8\u01d0\3\2\2\2\u01d9\u0092\3\2\2\2\u01da\u01dc\5\u00a7T\2\u01db"+ + "\u01da\3\2\2\2\u01dc\u01dd\3\2\2\2\u01dd\u01db\3\2\2\2\u01dd\u01de\3\2"+ + "\2\2\u01de\u0094\3\2\2\2\u01df\u01e0\7\62\2\2\u01e0\u01e2\t\6\2\2\u01e1"+ + "\u01e3\5\u00a9U\2\u01e2\u01e1\3\2\2\2\u01e3\u01e4\3\2\2\2\u01e4\u01e2"+ + "\3\2\2\2\u01e4\u01e5\3\2\2\2\u01e5\u0096\3\2\2\2\u01e6\u01e8\5\u00a7T"+ + "\2\u01e7\u01e6\3\2\2\2\u01e8\u01e9\3\2\2\2\u01e9\u01e7\3\2\2\2\u01e9\u01ea"+ + "\3\2\2\2\u01ea\u01eb\3\2\2\2\u01eb\u01ef\7\60\2\2\u01ec\u01ee\5\u00a7"+ + "T\2\u01ed\u01ec\3\2\2\2\u01ee\u01f1\3\2\2\2\u01ef\u01ed\3\2\2\2\u01ef"+ + "\u01f0\3\2\2\2\u01f0\u01f3\3\2\2\2\u01f1\u01ef\3\2\2\2\u01f2\u01f4\5\u009b"+ + "N\2\u01f3\u01f2\3\2\2\2\u01f3\u01f4\3\2\2\2\u01f4\u0206\3\2\2\2\u01f5"+ + "\u01f7\7\60\2\2\u01f6\u01f8\5\u00a7T\2\u01f7\u01f6\3\2\2\2\u01f8\u01f9"+ + "\3\2\2\2\u01f9\u01f7\3\2\2\2\u01f9\u01fa\3\2\2\2\u01fa\u01fc\3\2\2\2\u01fb"+ + "\u01fd\5\u009bN\2\u01fc\u01fb\3\2\2\2\u01fc\u01fd\3\2\2\2\u01fd\u0206"+ + "\3\2\2\2\u01fe\u0200\5\u00a7T\2\u01ff\u01fe\3\2\2\2\u0200\u0201\3\2\2"+ + "\2\u0201\u01ff\3\2\2\2\u0201\u0202\3\2\2\2\u0202\u0203\3\2\2\2\u0203\u0204"+ + "\5\u009bN\2\u0204\u0206\3\2\2\2\u0205\u01e7\3\2\2\2\u0205\u01f5\3\2\2"+ + "\2\u0205\u01ff\3\2\2\2\u0206\u0098\3\2\2\2\u0207\u0208\7\62\2\2\u0208"+ + "\u020a\t\6\2\2\u0209\u020b\5\u00a9U\2\u020a\u0209\3\2\2\2\u020b\u020c"+ + "\3\2\2\2\u020c\u020a\3\2\2\2\u020c\u020d\3\2\2\2\u020d\u020e\3\2\2\2\u020e"+ + "\u0212\7\60\2\2\u020f\u0211\5\u00a9U\2\u0210\u020f\3\2\2\2\u0211\u0214"+ + "\3\2\2\2\u0212\u0210\3\2\2\2\u0212\u0213\3\2\2\2\u0213\u0216\3\2\2\2\u0214"+ + "\u0212\3\2\2\2\u0215\u0217\5\u009dO\2\u0216\u0215\3\2\2\2\u0216\u0217"+ + "\3\2\2\2\u0217\u022d\3\2\2\2\u0218\u0219\7\62\2\2\u0219\u021a\t\6\2\2"+ + "\u021a\u021c\7\60\2\2\u021b\u021d\5\u00a9U\2\u021c\u021b\3\2\2\2\u021d"+ + "\u021e\3\2\2\2\u021e\u021c\3\2\2\2\u021e\u021f\3\2\2\2\u021f\u0221\3\2"+ + "\2\2\u0220\u0222\5\u009dO\2\u0221\u0220\3\2\2\2\u0221\u0222\3\2\2\2\u0222"+ + "\u022d\3\2\2\2\u0223\u0224\7\62\2\2\u0224\u0226\t\6\2\2\u0225\u0227\5"+ + "\u00a9U\2\u0226\u0225\3\2\2\2\u0227\u0228\3\2\2\2\u0228\u0226\3\2\2\2"+ + "\u0228\u0229\3\2\2\2\u0229\u022a\3\2\2\2\u022a\u022b\5\u009dO\2\u022b"+ + "\u022d\3\2\2\2\u022c\u0207\3\2\2\2\u022c\u0218\3\2\2\2\u022c\u0223\3\2"+ + "\2\2\u022d\u009a\3\2\2\2\u022e\u0230\t\7\2\2\u022f\u0231\t\b\2\2\u0230"+ + "\u022f\3\2\2\2\u0230\u0231\3\2\2\2\u0231\u0233\3\2\2\2\u0232\u0234\5\u00a7"+ + "T\2\u0233\u0232\3\2\2\2\u0234\u0235\3\2\2\2\u0235\u0233\3\2\2\2\u0235"+ + "\u0236\3\2\2\2\u0236\u009c\3\2\2\2\u0237\u0239\t\t\2\2\u0238\u023a\t\b"+ + "\2\2\u0239\u0238\3\2\2\2\u0239\u023a\3\2\2\2\u023a\u023c\3\2\2\2\u023b"+ + "\u023d\5\u00a7T\2\u023c\u023b\3\2\2\2\u023d\u023e\3\2\2\2\u023e\u023c"+ + "\3\2\2\2\u023e\u023f\3\2\2\2\u023f\u009e\3\2\2\2\u0240\u0241\7^\2\2\u0241"+ + "\u024b\t\n\2\2\u0242\u0244\7^\2\2\u0243\u0245\7\17\2\2\u0244\u0243\3\2"+ + "\2\2\u0244\u0245\3\2\2\2\u0245\u0246\3\2\2\2\u0246\u024b\7\f\2\2\u0247"+ + "\u024b\5\u00a1Q\2\u0248\u024b\5\u00a3R\2\u0249\u024b\5\u00a5S\2\u024a"+ + "\u0240\3\2\2\2\u024a\u0242\3\2\2\2\u024a\u0247\3\2\2\2\u024a\u0248\3\2"+ + "\2\2\u024a\u0249\3\2\2\2\u024b\u00a0\3\2\2\2\u024c\u024d\7^\2\2\u024d"+ + "\u0258\5\u00a7T\2\u024e\u024f\7^\2\2\u024f\u0250\5\u00a7T\2\u0250\u0251"+ + "\5\u00a7T\2\u0251\u0258\3\2\2\2\u0252\u0253\7^\2\2\u0253\u0254\t\13\2"+ + "\2\u0254\u0255\5\u00a7T\2\u0255\u0256\5\u00a7T\2\u0256\u0258\3\2\2\2\u0257"+ + "\u024c\3\2\2\2\u0257\u024e\3\2\2\2\u0257\u0252\3\2\2\2\u0258\u00a2\3\2"+ + "\2\2\u0259\u025a\7^\2\2\u025a\u025b\7z\2\2\u025b\u025c\5\u00a9U\2\u025c"+ + "\u025d\5\u00a9U\2\u025d\u00a4\3\2\2\2\u025e\u025f\7^\2\2\u025f\u0260\7"+ + "w\2\2\u0260\u0261\7}\2\2\u0261\u0263\3\2\2\2\u0262\u0264\5\u00a9U\2\u0263"+ + "\u0262\3\2\2\2\u0264\u0265\3\2\2\2\u0265\u0263\3\2\2\2\u0265\u0266\3\2"+ + "\2\2\u0266\u0267\3\2\2\2\u0267\u0268\7\177\2\2\u0268\u00a6\3\2\2\2\u0269"+ + "\u026a\t\f\2\2\u026a\u00a8\3\2\2\2\u026b\u026c\t\r\2\2\u026c\u00aa\3\2"+ + "\2\2\u026d\u026e\7/\2\2\u026e\u026f\7/\2\2\u026f\u0270\7]\2\2\u0270\u0271"+ + "\3\2\2\2\u0271\u0272\5\u0091I\2\u0272\u0273\7_\2\2\u0273\u0274\3\2\2\2"+ + "\u0274\u0275\bV\2\2\u0275\u00ac\3\2\2\2\u0276\u0277\7/\2\2\u0277\u0278"+ + "\7/\2\2\u0278\u0296\3\2\2\2\u0279\u0297\3\2\2\2\u027a\u027e\7]\2\2\u027b"+ + "\u027d\7?\2\2\u027c\u027b\3\2\2\2\u027d\u0280\3\2\2\2\u027e\u027c\3\2"+ + "\2\2\u027e\u027f\3\2\2\2\u027f\u0297\3\2\2\2\u0280\u027e\3\2\2\2\u0281"+ + "\u0285\7]\2\2\u0282\u0284\7?\2\2\u0283\u0282\3\2\2\2\u0284\u0287\3\2\2"+ + "\2\u0285\u0283\3\2\2\2\u0285\u0286\3\2\2\2\u0286\u0288\3\2\2\2\u0287\u0285"+ + "\3\2\2\2\u0288\u028c\n\16\2\2\u0289\u028b\n\17\2\2\u028a\u0289\3\2\2\2"+ + "\u028b\u028e\3\2\2\2\u028c\u028a\3\2\2\2\u028c\u028d\3\2\2\2\u028d\u0297"+ + "\3\2\2\2\u028e\u028c\3\2\2\2\u028f\u0293\n\20\2\2\u0290\u0292\n\17\2\2"+ + "\u0291\u0290\3\2\2\2\u0292\u0295\3\2\2\2\u0293\u0291\3\2\2\2\u0293\u0294"+ + "\3\2\2\2\u0294\u0297\3\2\2\2\u0295\u0293\3\2\2\2\u0296\u0279\3\2\2\2\u0296"+ + "\u027a\3\2\2\2\u0296\u0281\3\2\2\2\u0296\u028f\3\2\2\2\u0297\u029b\3\2"+ + "\2\2\u0298\u0299\7\17\2\2\u0299\u029c\7\f\2\2\u029a\u029c\t\21\2\2\u029b"+ + "\u0298\3\2\2\2\u029b\u029a\3\2\2\2\u029c\u029d\3\2\2\2\u029d\u029e\bW"+ + "\2\2\u029e\u00ae\3\2\2\2\u029f\u02a1\t\22\2\2\u02a0\u029f\3\2\2\2\u02a1"+ + "\u02a2\3\2\2\2\u02a2\u02a0\3\2\2\2\u02a2\u02a3\3\2\2\2\u02a3\u02a4\3\2"+ + "\2\2\u02a4\u02a5\bX\3\2\u02a5\u00b0\3\2\2\2\u02a6\u02a7\7%\2\2\u02a7\u02ab"+ + "\7#\2\2\u02a8\u02aa\n\17\2\2\u02a9\u02a8\3\2\2\2\u02aa\u02ad\3\2\2\2\u02ab"+ + "\u02a9\3\2\2\2\u02ab\u02ac\3\2\2\2\u02ac\u02ae\3\2\2\2\u02ad\u02ab\3\2"+ + "\2\2\u02ae\u02af\bY\2\2\u02af\u00b2\3\2\2\2*\2\u01b1\u01b7\u01b9\u01c1"+ + "\u01c3\u01d4\u01d8\u01dd\u01e4\u01e9\u01ef\u01f3\u01f9\u01fc\u0201\u0205"+ + "\u020c\u0212\u0216\u021e\u0221\u0228\u022c\u0230\u0235\u0239\u023e\u0244"+ + "\u024a\u0257\u0265\u027e\u0285\u028c\u0293\u0296\u029b\u02a2\u02ab\4\2"+ + "\3\2\b\2\2"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/src/main/java/org/luapp/language/generator/luappLexer.tokens b/src/main/java/org/luapp/language/generator/luappLexer.tokens index b349b4f..d15989f 100644 --- a/src/main/java/org/luapp/language/generator/luappLexer.tokens +++ b/src/main/java/org/luapp/language/generator/luappLexer.tokens @@ -65,19 +65,18 @@ T__63=64 T__64=65 T__65=66 T__66=67 -T__67=68 -NAME=69 -NORMALSTRING=70 -CHARSTRING=71 -LONGSTRING=72 -INT=73 -HEX=74 -FLOAT=75 -HEX_FLOAT=76 -COMMENT=77 -LINE_COMMENT=78 -WS=79 -SHEBANG=80 +NAME=68 +NORMALSTRING=69 +CHARSTRING=70 +LONGSTRING=71 +INT=72 +HEX=73 +FLOAT=74 +HEX_FLOAT=75 +COMMENT=76 +LINE_COMMENT=77 +WS=78 +SHEBANG=79 ';'=1 '='=2 'break'=3 @@ -136,13 +135,12 @@ SHEBANG=80 'not'=56 '#'=57 '^'=58 -'new'=59 -'static'=60 -'get'=61 -'set'=62 -'constructor'=63 -'++'=64 -'+='=65 -'*='=66 -'/='=67 -'-='=68 +'static'=59 +'get'=60 +'set'=61 +'constructor'=62 +'++'=63 +'+='=64 +'*='=65 +'/='=66 +'-='=67 diff --git a/src/main/java/org/luapp/language/generator/luappListener.java b/src/main/java/org/luapp/language/generator/luappListener.java index 427ab55..703f52b 100644 --- a/src/main/java/org/luapp/language/generator/luappListener.java +++ b/src/main/java/org/luapp/language/generator/luappListener.java @@ -1,4 +1,4 @@ -// Generated from C:/Users/Harry/Desktop/Lua/lua-plus-plus/src/main/java/org/luapp/language/parser\luapp.g4 by ANTLR 4.8 +// Generated from C:/Users/Harry/Desktop/Lua/lpp2electricboogaloo/lua-plus-plus/src/main/java/org/luapp/language/parser\luapp.g4 by ANTLR 4.8 package org.luapp.language.generator; import org.antlr.v4.runtime.tree.ParseTreeListener; @@ -377,16 +377,6 @@ public interface luappListener extends ParseTreeListener { * @param ctx the parse tree */ void exitString(luappParser.StringContext ctx); - /** - * Enter a parse tree produced by {@link luappParser#newclass}. - * @param ctx the parse tree - */ - void enterNewclass(luappParser.NewclassContext ctx); - /** - * Exit a parse tree produced by {@link luappParser#newclass}. - * @param ctx the parse tree - */ - void exitNewclass(luappParser.NewclassContext ctx); /** * Enter a parse tree produced by {@link luappParser#classdef}. * @param ctx the parse tree diff --git a/src/main/java/org/luapp/language/generator/luappParser.java b/src/main/java/org/luapp/language/generator/luappParser.java index 6ab187b..215c2e5 100644 --- a/src/main/java/org/luapp/language/generator/luappParser.java +++ b/src/main/java/org/luapp/language/generator/luappParser.java @@ -1,4 +1,4 @@ -// Generated from C:/Users/Harry/Desktop/Lua/lua-plus-plus/src/main/java/org/luapp/language/parser\luapp.g4 by ANTLR 4.8 +// Generated from C:/Users/Harry/Desktop/Lua/lpp2electricboogaloo/lua-plus-plus/src/main/java/org/luapp/language/parser\luapp.g4 by ANTLR 4.8 package org.luapp.language.generator; import org.antlr.v4.runtime.atn.*; import org.antlr.v4.runtime.dfa.DFA; @@ -26,9 +26,8 @@ public class luappParser extends Parser { T__45=46, T__46=47, T__47=48, T__48=49, T__49=50, T__50=51, T__51=52, T__52=53, T__53=54, T__54=55, T__55=56, T__56=57, T__57=58, T__58=59, T__59=60, T__60=61, T__61=62, T__62=63, T__63=64, T__64=65, T__65=66, - T__66=67, T__67=68, NAME=69, NORMALSTRING=70, CHARSTRING=71, LONGSTRING=72, - INT=73, HEX=74, FLOAT=75, HEX_FLOAT=76, COMMENT=77, LINE_COMMENT=78, WS=79, - SHEBANG=80; + T__66=67, NAME=68, NORMALSTRING=69, CHARSTRING=70, LONGSTRING=71, INT=72, + HEX=73, FLOAT=74, HEX_FLOAT=75, COMMENT=76, LINE_COMMENT=77, WS=78, SHEBANG=79; public static final int RULE_chunk = 0, RULE_block = 1, RULE_stat = 2, RULE_retstat = 3, RULE_label = 4, RULE_funcname = 5, RULE_classname = 6, RULE_abstractclassname = 7, RULE_varlist = 8, @@ -39,11 +38,11 @@ public class luappParser extends Parser { RULE_fieldsep = 25, RULE_operatorOr = 26, RULE_operatorAnd = 27, RULE_operatorComparison = 28, RULE_operatorStrcat = 29, RULE_operatorAddSub = 30, RULE_operatorMulDivMod = 31, RULE_operatorBitwise = 32, RULE_operatorUnary = 33, RULE_operatorPower = 34, - RULE_number = 35, RULE_string = 36, RULE_newclass = 37, RULE_classdef = 38, - RULE_classfunction = 39, RULE_classstaticfunction = 40, RULE_classgetorset = 41, - RULE_classgetset = 42, RULE_constructor = 43, RULE_classmember = 44, RULE_classbody = 45, - RULE_addOne = 46, RULE_plusEqual = 47, RULE_multiplyEqual = 48, RULE_divEqual = 49, - RULE_minusEqual = 50, RULE_safeOperator = 51; + RULE_number = 35, RULE_string = 36, RULE_classdef = 37, RULE_classfunction = 38, + RULE_classstaticfunction = 39, RULE_classgetorset = 40, RULE_classgetset = 41, + RULE_constructor = 42, RULE_classmember = 43, RULE_classbody = 44, RULE_addOne = 45, + RULE_plusEqual = 46, RULE_multiplyEqual = 47, RULE_divEqual = 48, RULE_minusEqual = 49, + RULE_safeOperator = 50; private static String[] makeRuleNames() { return new String[] { "chunk", "block", "stat", "retstat", "label", "funcname", "classname", @@ -52,10 +51,10 @@ private static String[] makeRuleNames() { "functiondef", "funcbody", "parlist", "tableconstructor", "fieldlist", "field", "fieldsep", "operatorOr", "operatorAnd", "operatorComparison", "operatorStrcat", "operatorAddSub", "operatorMulDivMod", "operatorBitwise", - "operatorUnary", "operatorPower", "number", "string", "newclass", "classdef", - "classfunction", "classstaticfunction", "classgetorset", "classgetset", - "constructor", "classmember", "classbody", "addOne", "plusEqual", "multiplyEqual", - "divEqual", "minusEqual", "safeOperator" + "operatorUnary", "operatorPower", "number", "string", "classdef", "classfunction", + "classstaticfunction", "classgetorset", "classgetset", "constructor", + "classmember", "classbody", "addOne", "plusEqual", "multiplyEqual", "divEqual", + "minusEqual", "safeOperator" }; } public static final String[] ruleNames = makeRuleNames(); @@ -68,9 +67,8 @@ private static String[] makeLiteralNames() { "'return'", "'::'", "'.'", "':'", "'nil'", "'false'", "'true'", "'...'", "'('", "')'", "'['", "']'", "'{'", "'}'", "'or'", "'and'", "'<'", "'>'", "'<='", "'>='", "'~='", "'=='", "'..'", "'+'", "'-'", "'*'", "'/'", "'%'", - "'//'", "'&'", "'|'", "'~'", "'<<'", "'>>'", "'not'", "'#'", "'^'", "'new'", - "'static'", "'get'", "'set'", "'constructor'", "'++'", "'+='", "'*='", - "'/='", "'-='" + "'//'", "'&'", "'|'", "'~'", "'<<'", "'>>'", "'not'", "'#'", "'^'", "'static'", + "'get'", "'set'", "'constructor'", "'++'", "'+='", "'*='", "'/='", "'-='" }; } private static final String[] _LITERAL_NAMES = makeLiteralNames(); @@ -81,7 +79,7 @@ private static String[] makeSymbolicNames() { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, "NAME", "NORMALSTRING", + null, null, null, null, null, null, null, null, "NAME", "NORMALSTRING", "CHARSTRING", "LONGSTRING", "INT", "HEX", "FLOAT", "HEX_FLOAT", "COMMENT", "LINE_COMMENT", "WS", "SHEBANG" }; @@ -167,9 +165,9 @@ public final ChunkContext chunk() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(104); + setState(102); block(); - setState(105); + setState(103); match(EOF); } } @@ -220,26 +218,26 @@ public final BlockContext block() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(110); + setState(108); _errHandler.sync(this); _la = _input.LA(1); while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__2) | (1L << T__3) | (1L << T__4) | (1L << T__6) | (1L << T__7) | (1L << T__9) | (1L << T__13) | (1L << T__16) | (1L << T__17) | (1L << T__19) | (1L << T__20) | (1L << T__22) | (1L << T__29))) != 0) || _la==NAME) { { { - setState(107); + setState(105); stat(); } } - setState(112); + setState(110); _errHandler.sync(this); _la = _input.LA(1); } - setState(114); + setState(112); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__21) { { - setState(113); + setState(111); retstat(); } } @@ -304,9 +302,6 @@ public AbstractclassnameContext abstractclassname() { public SafeOperatorContext safeOperator() { return getRuleContext(SafeOperatorContext.class,0); } - public NewclassContext newclass() { - return getRuleContext(NewclassContext.class,0); - } public MinusEqualContext minusEqual() { return getRuleContext(MinusEqualContext.class,0); } @@ -334,236 +329,244 @@ public final StatContext stat() throws RecognitionException { enterRule(_localctx, 4, RULE_stat); int _la; try { - setState(228); + setState(221); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(116); + setState(114); match(T__0); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(117); + setState(115); varlist(); - setState(118); + setState(116); match(T__1); - setState(119); + setState(117); explist(); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(121); + setState(119); functioncall(); } break; case 4: enterOuterAlt(_localctx, 4); { - setState(122); + setState(120); label(); } break; case 5: enterOuterAlt(_localctx, 5); { - setState(123); + setState(121); match(T__2); } break; case 6: enterOuterAlt(_localctx, 6); { - setState(124); + setState(122); match(T__3); - setState(125); + setState(123); match(NAME); } break; case 7: enterOuterAlt(_localctx, 7); { - setState(126); + setState(124); match(T__4); - setState(127); + setState(125); block(); - setState(128); + setState(126); match(T__5); } break; case 8: enterOuterAlt(_localctx, 8); { - setState(130); + setState(128); match(T__6); - setState(131); + setState(129); exp(0); - setState(132); + setState(130); match(T__4); - setState(133); + setState(131); block(); - setState(134); + setState(132); match(T__5); } break; case 9: enterOuterAlt(_localctx, 9); { - setState(136); + setState(134); match(T__7); - setState(137); + setState(135); block(); - setState(138); + setState(136); match(T__8); - setState(139); + setState(137); exp(0); } break; case 10: enterOuterAlt(_localctx, 10); { - setState(141); + setState(139); match(T__9); - setState(142); + setState(140); exp(0); - setState(143); + setState(141); match(T__10); - setState(144); + setState(142); block(); - setState(152); + setState(150); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__11) { { { - setState(145); + setState(143); match(T__11); - setState(146); + setState(144); exp(0); - setState(147); + setState(145); match(T__10); - setState(148); + setState(146); block(); } } - setState(154); + setState(152); _errHandler.sync(this); _la = _input.LA(1); } - setState(157); + setState(155); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__12) { { - setState(155); + setState(153); match(T__12); - setState(156); + setState(154); block(); } } - setState(159); + setState(157); match(T__5); } break; case 11: enterOuterAlt(_localctx, 11); { - setState(161); + setState(159); match(T__13); - setState(162); + setState(160); match(NAME); - setState(163); + setState(161); match(T__1); - setState(164); + setState(162); exp(0); - setState(165); + setState(163); match(T__14); - setState(166); + setState(164); exp(0); - setState(169); + setState(167); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__14) { { - setState(167); + setState(165); match(T__14); - setState(168); + setState(166); exp(0); } } - setState(171); + setState(169); match(T__4); - setState(172); + setState(170); block(); - setState(173); + setState(171); match(T__5); } break; case 12: enterOuterAlt(_localctx, 12); { - setState(175); + setState(173); match(T__13); - setState(176); + setState(174); namelist(); - setState(177); + setState(175); match(T__15); - setState(178); + setState(176); explist(); - setState(179); + setState(177); match(T__4); - setState(180); + setState(178); block(); - setState(181); + setState(179); match(T__5); } break; case 13: enterOuterAlt(_localctx, 13); { - setState(183); + setState(181); match(T__16); - setState(184); + setState(182); funcname(); - setState(185); + setState(183); funcbody(); } break; case 14: enterOuterAlt(_localctx, 14); { - setState(187); + setState(185); match(T__17); - setState(188); + setState(186); classname(); - setState(191); + setState(189); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__18) { { - setState(189); + setState(187); match(T__18); - setState(190); + setState(188); abstractclassname(); } } - setState(193); + setState(191); classbody(); } break; case 15: enterOuterAlt(_localctx, 15); { - setState(195); - match(T__19); + setState(194); + _errHandler.sync(this); + _la = _input.LA(1); + if (_la==T__19) { + { + setState(193); + match(T__19); + } + } + setState(196); match(T__17); setState(197); @@ -641,29 +644,8 @@ public final StatContext stat() throws RecognitionException { } setState(219); - namelist(); - setState(220); - match(T__1); - setState(221); - newclass(); - } - break; - case 20: - enterOuterAlt(_localctx, 20); - { - setState(224); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==T__19) { - { - setState(223); - match(T__19); - } - } - - setState(226); match(NAME); - setState(227); + setState(220); minusEqual(); } break; @@ -710,24 +692,24 @@ public final RetstatContext retstat() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(230); + setState(223); match(T__21); - setState(232); + setState(225); _errHandler.sync(this); _la = _input.LA(1); if (((((_la - 17)) & ~0x3f) == 0 && ((1L << (_la - 17)) & ((1L << (T__16 - 17)) | (1L << (T__25 - 17)) | (1L << (T__26 - 17)) | (1L << (T__27 - 17)) | (1L << (T__28 - 17)) | (1L << (T__29 - 17)) | (1L << (T__33 - 17)) | (1L << (T__45 - 17)) | (1L << (T__52 - 17)) | (1L << (T__55 - 17)) | (1L << (T__56 - 17)) | (1L << (NAME - 17)) | (1L << (NORMALSTRING - 17)) | (1L << (CHARSTRING - 17)) | (1L << (LONGSTRING - 17)) | (1L << (INT - 17)) | (1L << (HEX - 17)) | (1L << (FLOAT - 17)) | (1L << (HEX_FLOAT - 17)))) != 0)) { { - setState(231); + setState(224); explist(); } } - setState(235); + setState(228); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__0) { { - setState(234); + setState(227); match(T__0); } } @@ -772,11 +754,11 @@ public final LabelContext label() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(237); + setState(230); match(T__22); - setState(238); + setState(231); match(NAME); - setState(239); + setState(232); match(T__22); } } @@ -822,32 +804,32 @@ public final FuncnameContext funcname() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(241); + setState(234); match(NAME); - setState(246); + setState(239); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__23) { { { - setState(242); + setState(235); match(T__23); - setState(243); + setState(236); match(NAME); } } - setState(248); + setState(241); _errHandler.sync(this); _la = _input.LA(1); } - setState(251); + setState(244); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__24) { { - setState(249); + setState(242); match(T__24); - setState(250); + setState(243); match(NAME); } } @@ -866,7 +848,9 @@ public final FuncnameContext funcname() throws RecognitionException { } public static class ClassnameContext extends ParserRuleContext { - public TerminalNode NAME() { return getToken(luappParser.NAME, 0); } + public VarContext var() { + return getRuleContext(VarContext.class,0); + } public ClassnameContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @@ -892,8 +876,8 @@ public final ClassnameContext classname() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(253); - match(NAME); + setState(246); + var(); } } catch (RecognitionException re) { @@ -908,7 +892,9 @@ public final ClassnameContext classname() throws RecognitionException { } public static class AbstractclassnameContext extends ParserRuleContext { - public TerminalNode NAME() { return getToken(luappParser.NAME, 0); } + public VarContext var() { + return getRuleContext(VarContext.class,0); + } public AbstractclassnameContext(ParserRuleContext parent, int invokingState) { super(parent, invokingState); } @@ -934,8 +920,8 @@ public final AbstractclassnameContext abstractclassname() throws RecognitionExce try { enterOuterAlt(_localctx, 1); { - setState(255); - match(NAME); + setState(248); + var(); } } catch (RecognitionException re) { @@ -982,21 +968,21 @@ public final VarlistContext varlist() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(257); + setState(250); var(); - setState(262); + setState(255); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__14) { { { - setState(258); + setState(251); match(T__14); - setState(259); + setState(252); var(); } } - setState(264); + setState(257); _errHandler.sync(this); _la = _input.LA(1); } @@ -1044,23 +1030,23 @@ public final NamelistContext namelist() throws RecognitionException { int _alt; enterOuterAlt(_localctx, 1); { - setState(265); + setState(258); match(NAME); - setState(270); + setState(263); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,16,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(266); + setState(259); match(T__14); - setState(267); + setState(260); match(NAME); } } } - setState(272); + setState(265); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,16,_ctx); } @@ -1110,21 +1096,21 @@ public final ExplistContext explist() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(273); + setState(266); exp(0); - setState(278); + setState(271); _errHandler.sync(this); _la = _input.LA(1); while (_la==T__14) { { { - setState(274); + setState(267); match(T__14); - setState(275); + setState(268); exp(0); } } - setState(280); + setState(273); _errHandler.sync(this); _la = _input.LA(1); } @@ -1224,24 +1210,24 @@ private ExpContext exp(int _p) throws RecognitionException { int _alt; enterOuterAlt(_localctx, 1); { - setState(294); + setState(287); _errHandler.sync(this); switch (_input.LA(1)) { case T__25: { - setState(282); + setState(275); match(T__25); } break; case T__26: { - setState(283); + setState(276); match(T__26); } break; case T__27: { - setState(284); + setState(277); match(T__27); } break; @@ -1250,7 +1236,7 @@ private ExpContext exp(int _p) throws RecognitionException { case FLOAT: case HEX_FLOAT: { - setState(285); + setState(278); number(); } break; @@ -1258,32 +1244,32 @@ private ExpContext exp(int _p) throws RecognitionException { case CHARSTRING: case LONGSTRING: { - setState(286); + setState(279); string(); } break; case T__28: { - setState(287); + setState(280); match(T__28); } break; case T__16: { - setState(288); + setState(281); functiondef(); } break; case T__29: case NAME: { - setState(289); + setState(282); prefixexp(); } break; case T__33: { - setState(290); + setState(283); tableconstructor(); } break; @@ -1292,9 +1278,9 @@ private ExpContext exp(int _p) throws RecognitionException { case T__55: case T__56: { - setState(291); + setState(284); operatorUnary(); - setState(292); + setState(285); exp(8); } break; @@ -1302,7 +1288,7 @@ private ExpContext exp(int _p) throws RecognitionException { throw new NoViableAltException(this); } _ctx.stop = _input.LT(-1); - setState(330); + setState(323); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,20,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { @@ -1310,18 +1296,18 @@ private ExpContext exp(int _p) throws RecognitionException { if ( _parseListeners!=null ) triggerExitRuleEvent(); _prevctx = _localctx; { - setState(328); + setState(321); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,19,_ctx) ) { case 1: { _localctx = new ExpContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_exp); - setState(296); + setState(289); if (!(precpred(_ctx, 9))) throw new FailedPredicateException(this, "precpred(_ctx, 9)"); - setState(297); + setState(290); operatorPower(); - setState(298); + setState(291); exp(9); } break; @@ -1329,11 +1315,11 @@ private ExpContext exp(int _p) throws RecognitionException { { _localctx = new ExpContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_exp); - setState(300); + setState(293); if (!(precpred(_ctx, 7))) throw new FailedPredicateException(this, "precpred(_ctx, 7)"); - setState(301); + setState(294); operatorMulDivMod(); - setState(302); + setState(295); exp(8); } break; @@ -1341,11 +1327,11 @@ private ExpContext exp(int _p) throws RecognitionException { { _localctx = new ExpContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_exp); - setState(304); + setState(297); if (!(precpred(_ctx, 6))) throw new FailedPredicateException(this, "precpred(_ctx, 6)"); - setState(305); + setState(298); operatorAddSub(); - setState(306); + setState(299); exp(7); } break; @@ -1353,11 +1339,11 @@ private ExpContext exp(int _p) throws RecognitionException { { _localctx = new ExpContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_exp); - setState(308); + setState(301); if (!(precpred(_ctx, 5))) throw new FailedPredicateException(this, "precpred(_ctx, 5)"); - setState(309); + setState(302); operatorStrcat(); - setState(310); + setState(303); exp(5); } break; @@ -1365,11 +1351,11 @@ private ExpContext exp(int _p) throws RecognitionException { { _localctx = new ExpContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_exp); - setState(312); + setState(305); if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); - setState(313); + setState(306); operatorComparison(); - setState(314); + setState(307); exp(5); } break; @@ -1377,11 +1363,11 @@ private ExpContext exp(int _p) throws RecognitionException { { _localctx = new ExpContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_exp); - setState(316); + setState(309); if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(317); + setState(310); operatorAnd(); - setState(318); + setState(311); exp(4); } break; @@ -1389,11 +1375,11 @@ private ExpContext exp(int _p) throws RecognitionException { { _localctx = new ExpContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_exp); - setState(320); + setState(313); if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(321); + setState(314); operatorOr(); - setState(322); + setState(315); exp(3); } break; @@ -1401,18 +1387,18 @@ private ExpContext exp(int _p) throws RecognitionException { { _localctx = new ExpContext(_parentctx, _parentState); pushNewRecursionContext(_localctx, _startState, RULE_exp); - setState(324); + setState(317); if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(325); + setState(318); operatorBitwise(); - setState(326); + setState(319); exp(2); } break; } } } - setState(332); + setState(325); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,20,_ctx); } @@ -1465,21 +1451,21 @@ public final PrefixexpContext prefixexp() throws RecognitionException { int _alt; enterOuterAlt(_localctx, 1); { - setState(333); + setState(326); varOrExp(); - setState(337); + setState(330); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,21,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(334); + setState(327); nameAndArgs(); } } } - setState(339); + setState(332); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,21,_ctx); } @@ -1532,9 +1518,9 @@ public final FunctioncallContext functioncall() throws RecognitionException { int _alt; enterOuterAlt(_localctx, 1); { - setState(340); + setState(333); varOrExp(); - setState(342); + setState(335); _errHandler.sync(this); _alt = 1; do { @@ -1542,7 +1528,7 @@ public final FunctioncallContext functioncall() throws RecognitionException { case 1: { { - setState(341); + setState(334); nameAndArgs(); } } @@ -1550,7 +1536,7 @@ public final FunctioncallContext functioncall() throws RecognitionException { default: throw new NoViableAltException(this); } - setState(344); + setState(337); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,22,_ctx); } while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ); @@ -1597,24 +1583,24 @@ public final VarOrExpContext varOrExp() throws RecognitionException { VarOrExpContext _localctx = new VarOrExpContext(_ctx, getState()); enterRule(_localctx, 28, RULE_varOrExp); try { - setState(351); + setState(344); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,23,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(346); + setState(339); var(); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(347); + setState(340); match(T__29); - setState(348); + setState(341); exp(0); - setState(349); + setState(342); match(T__30); } break; @@ -1668,43 +1654,43 @@ public final VarContext var() throws RecognitionException { int _alt; enterOuterAlt(_localctx, 1); { - setState(359); + setState(352); _errHandler.sync(this); switch (_input.LA(1)) { case NAME: { - setState(353); + setState(346); match(NAME); } break; case T__29: { - setState(354); + setState(347); match(T__29); - setState(355); + setState(348); exp(0); - setState(356); + setState(349); match(T__30); - setState(357); + setState(350); varSuffix(); } break; default: throw new NoViableAltException(this); } - setState(364); + setState(357); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,25,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(361); + setState(354); varSuffix(); } } } - setState(366); + setState(359); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,25,_ctx); } @@ -1758,38 +1744,38 @@ public final VarSuffixContext varSuffix() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(370); + setState(363); _errHandler.sync(this); _la = _input.LA(1); while (((((_la - 25)) & ~0x3f) == 0 && ((1L << (_la - 25)) & ((1L << (T__24 - 25)) | (1L << (T__29 - 25)) | (1L << (T__33 - 25)) | (1L << (NORMALSTRING - 25)) | (1L << (CHARSTRING - 25)) | (1L << (LONGSTRING - 25)))) != 0)) { { { - setState(367); + setState(360); nameAndArgs(); } } - setState(372); + setState(365); _errHandler.sync(this); _la = _input.LA(1); } - setState(379); + setState(372); _errHandler.sync(this); switch (_input.LA(1)) { case T__31: { - setState(373); + setState(366); match(T__31); - setState(374); + setState(367); exp(0); - setState(375); + setState(368); match(T__32); } break; case T__23: { - setState(377); + setState(370); match(T__23); - setState(378); + setState(371); match(NAME); } break; @@ -1840,19 +1826,19 @@ public final NameAndArgsContext nameAndArgs() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(383); + setState(376); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__24) { { - setState(381); + setState(374); match(T__24); - setState(382); + setState(375); match(NAME); } } - setState(385); + setState(378); args(); } } @@ -1901,32 +1887,32 @@ public final ArgsContext args() throws RecognitionException { enterRule(_localctx, 36, RULE_args); int _la; try { - setState(394); + setState(387); _errHandler.sync(this); switch (_input.LA(1)) { case T__29: enterOuterAlt(_localctx, 1); { - setState(387); + setState(380); match(T__29); - setState(389); + setState(382); _errHandler.sync(this); _la = _input.LA(1); if (((((_la - 17)) & ~0x3f) == 0 && ((1L << (_la - 17)) & ((1L << (T__16 - 17)) | (1L << (T__25 - 17)) | (1L << (T__26 - 17)) | (1L << (T__27 - 17)) | (1L << (T__28 - 17)) | (1L << (T__29 - 17)) | (1L << (T__33 - 17)) | (1L << (T__45 - 17)) | (1L << (T__52 - 17)) | (1L << (T__55 - 17)) | (1L << (T__56 - 17)) | (1L << (NAME - 17)) | (1L << (NORMALSTRING - 17)) | (1L << (CHARSTRING - 17)) | (1L << (LONGSTRING - 17)) | (1L << (INT - 17)) | (1L << (HEX - 17)) | (1L << (FLOAT - 17)) | (1L << (HEX_FLOAT - 17)))) != 0)) { { - setState(388); + setState(381); explist(); } } - setState(391); + setState(384); match(T__30); } break; case T__33: enterOuterAlt(_localctx, 2); { - setState(392); + setState(385); tableconstructor(); } break; @@ -1935,7 +1921,7 @@ public final ArgsContext args() throws RecognitionException { case LONGSTRING: enterOuterAlt(_localctx, 3); { - setState(393); + setState(386); string(); } break; @@ -1983,9 +1969,9 @@ public final FunctiondefContext functiondef() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(396); + setState(389); match(T__16); - setState(397); + setState(390); funcbody(); } } @@ -2033,23 +2019,23 @@ public final FuncbodyContext funcbody() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(399); + setState(392); match(T__29); - setState(401); + setState(394); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__28 || _la==NAME) { { - setState(400); + setState(393); parlist(); } } - setState(403); + setState(396); match(T__30); - setState(404); + setState(397); block(); - setState(405); + setState(398); match(T__5); } } @@ -2092,22 +2078,22 @@ public final ParlistContext parlist() throws RecognitionException { enterRule(_localctx, 42, RULE_parlist); int _la; try { - setState(413); + setState(406); _errHandler.sync(this); switch (_input.LA(1)) { case NAME: enterOuterAlt(_localctx, 1); { - setState(407); + setState(400); namelist(); - setState(410); + setState(403); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__14) { { - setState(408); + setState(401); match(T__14); - setState(409); + setState(402); match(T__28); } } @@ -2117,7 +2103,7 @@ public final ParlistContext parlist() throws RecognitionException { case T__28: enterOuterAlt(_localctx, 2); { - setState(412); + setState(405); match(T__28); } break; @@ -2166,19 +2152,19 @@ public final TableconstructorContext tableconstructor() throws RecognitionExcept try { enterOuterAlt(_localctx, 1); { - setState(415); + setState(408); match(T__33); - setState(417); + setState(410); _errHandler.sync(this); _la = _input.LA(1); if (((((_la - 17)) & ~0x3f) == 0 && ((1L << (_la - 17)) & ((1L << (T__16 - 17)) | (1L << (T__25 - 17)) | (1L << (T__26 - 17)) | (1L << (T__27 - 17)) | (1L << (T__28 - 17)) | (1L << (T__29 - 17)) | (1L << (T__31 - 17)) | (1L << (T__33 - 17)) | (1L << (T__45 - 17)) | (1L << (T__52 - 17)) | (1L << (T__55 - 17)) | (1L << (T__56 - 17)) | (1L << (NAME - 17)) | (1L << (NORMALSTRING - 17)) | (1L << (CHARSTRING - 17)) | (1L << (LONGSTRING - 17)) | (1L << (INT - 17)) | (1L << (HEX - 17)) | (1L << (FLOAT - 17)) | (1L << (HEX_FLOAT - 17)))) != 0)) { { - setState(416); + setState(409); fieldlist(); } } - setState(419); + setState(412); match(T__34); } } @@ -2233,32 +2219,32 @@ public final FieldlistContext fieldlist() throws RecognitionException { int _alt; enterOuterAlt(_localctx, 1); { - setState(421); + setState(414); field(); - setState(427); + setState(420); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,35,_ctx); while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { if ( _alt==1 ) { { { - setState(422); + setState(415); fieldsep(); - setState(423); + setState(416); field(); } } } - setState(429); + setState(422); _errHandler.sync(this); _alt = getInterpreter().adaptivePredict(_input,35,_ctx); } - setState(431); + setState(424); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__0 || _la==T__14) { { - setState(430); + setState(423); fieldsep(); } } @@ -2307,39 +2293,39 @@ public final FieldContext field() throws RecognitionException { FieldContext _localctx = new FieldContext(_ctx, getState()); enterRule(_localctx, 48, RULE_field); try { - setState(443); + setState(436); _errHandler.sync(this); switch ( getInterpreter().adaptivePredict(_input,37,_ctx) ) { case 1: enterOuterAlt(_localctx, 1); { - setState(433); + setState(426); match(T__31); - setState(434); + setState(427); exp(0); - setState(435); + setState(428); match(T__32); - setState(436); + setState(429); match(T__1); - setState(437); + setState(430); exp(0); } break; case 2: enterOuterAlt(_localctx, 2); { - setState(439); + setState(432); match(NAME); - setState(440); + setState(433); match(T__1); - setState(441); + setState(434); exp(0); } break; case 3: enterOuterAlt(_localctx, 3); { - setState(442); + setState(435); exp(0); } break; @@ -2383,7 +2369,7 @@ public final FieldsepContext fieldsep() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(445); + setState(438); _la = _input.LA(1); if ( !(_la==T__0 || _la==T__14) ) { _errHandler.recoverInline(this); @@ -2432,7 +2418,7 @@ public final OperatorOrContext operatorOr() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(447); + setState(440); match(T__35); } } @@ -2473,7 +2459,7 @@ public final OperatorAndContext operatorAnd() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(449); + setState(442); match(T__36); } } @@ -2515,7 +2501,7 @@ public final OperatorComparisonContext operatorComparison() throws RecognitionEx try { enterOuterAlt(_localctx, 1); { - setState(451); + setState(444); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__37) | (1L << T__38) | (1L << T__39) | (1L << T__40) | (1L << T__41) | (1L << T__42))) != 0)) ) { _errHandler.recoverInline(this); @@ -2564,7 +2550,7 @@ public final OperatorStrcatContext operatorStrcat() throws RecognitionException try { enterOuterAlt(_localctx, 1); { - setState(453); + setState(446); match(T__43); } } @@ -2606,7 +2592,7 @@ public final OperatorAddSubContext operatorAddSub() throws RecognitionException try { enterOuterAlt(_localctx, 1); { - setState(455); + setState(448); _la = _input.LA(1); if ( !(_la==T__44 || _la==T__45) ) { _errHandler.recoverInline(this); @@ -2656,7 +2642,7 @@ public final OperatorMulDivModContext operatorMulDivMod() throws RecognitionExce try { enterOuterAlt(_localctx, 1); { - setState(457); + setState(450); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__46) | (1L << T__47) | (1L << T__48) | (1L << T__49))) != 0)) ) { _errHandler.recoverInline(this); @@ -2706,7 +2692,7 @@ public final OperatorBitwiseContext operatorBitwise() throws RecognitionExceptio try { enterOuterAlt(_localctx, 1); { - setState(459); + setState(452); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__50) | (1L << T__51) | (1L << T__52) | (1L << T__53) | (1L << T__54))) != 0)) ) { _errHandler.recoverInline(this); @@ -2756,7 +2742,7 @@ public final OperatorUnaryContext operatorUnary() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(461); + setState(454); _la = _input.LA(1); if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__45) | (1L << T__52) | (1L << T__55) | (1L << T__56))) != 0)) ) { _errHandler.recoverInline(this); @@ -2805,7 +2791,7 @@ public final OperatorPowerContext operatorPower() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(463); + setState(456); match(T__57); } } @@ -2851,9 +2837,9 @@ public final NumberContext number() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(465); + setState(458); _la = _input.LA(1); - if ( !(((((_la - 73)) & ~0x3f) == 0 && ((1L << (_la - 73)) & ((1L << (INT - 73)) | (1L << (HEX - 73)) | (1L << (FLOAT - 73)) | (1L << (HEX_FLOAT - 73)))) != 0)) ) { + if ( !(((((_la - 72)) & ~0x3f) == 0 && ((1L << (_la - 72)) & ((1L << (INT - 72)) | (1L << (HEX - 72)) | (1L << (FLOAT - 72)) | (1L << (HEX_FLOAT - 72)))) != 0)) ) { _errHandler.recoverInline(this); } else { @@ -2904,9 +2890,9 @@ public final StringContext string() throws RecognitionException { try { enterOuterAlt(_localctx, 1); { - setState(467); + setState(460); _la = _input.LA(1); - if ( !(((((_la - 70)) & ~0x3f) == 0 && ((1L << (_la - 70)) & ((1L << (NORMALSTRING - 70)) | (1L << (CHARSTRING - 70)) | (1L << (LONGSTRING - 70)))) != 0)) ) { + if ( !(((((_la - 69)) & ~0x3f) == 0 && ((1L << (_la - 69)) & ((1L << (NORMALSTRING - 69)) | (1L << (CHARSTRING - 69)) | (1L << (LONGSTRING - 69)))) != 0)) ) { _errHandler.recoverInline(this); } else { @@ -2927,57 +2913,6 @@ public final StringContext string() throws RecognitionException { return _localctx; } - public static class NewclassContext extends ParserRuleContext { - public FuncnameContext funcname() { - return getRuleContext(FuncnameContext.class,0); - } - public ArgsContext args() { - return getRuleContext(ArgsContext.class,0); - } - public NewclassContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_newclass; } - @Override - public void enterRule(ParseTreeListener listener) { - if ( listener instanceof luappListener ) ((luappListener)listener).enterNewclass(this); - } - @Override - public void exitRule(ParseTreeListener listener) { - if ( listener instanceof luappListener ) ((luappListener)listener).exitNewclass(this); - } - @Override - public T accept(ParseTreeVisitor visitor) { - if ( visitor instanceof luappVisitor ) return ((luappVisitor)visitor).visitNewclass(this); - else return visitor.visitChildren(this); - } - } - - public final NewclassContext newclass() throws RecognitionException { - NewclassContext _localctx = new NewclassContext(_ctx, getState()); - enterRule(_localctx, 74, RULE_newclass); - try { - enterOuterAlt(_localctx, 1); - { - setState(469); - match(T__58); - setState(470); - funcname(); - setState(471); - args(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - public static class ClassdefContext extends ParserRuleContext { public TerminalNode NAME() { return getToken(luappParser.NAME, 0); } public ClassbodyContext classbody() { @@ -3004,15 +2939,15 @@ public T accept(ParseTreeVisitor visitor) { public final ClassdefContext classdef() throws RecognitionException { ClassdefContext _localctx = new ClassdefContext(_ctx, getState()); - enterRule(_localctx, 76, RULE_classdef); + enterRule(_localctx, 74, RULE_classdef); try { enterOuterAlt(_localctx, 1); { - setState(473); + setState(462); match(T__17); - setState(474); + setState(463); match(NAME); - setState(475); + setState(464); classbody(); } } @@ -3055,15 +2990,15 @@ public T accept(ParseTreeVisitor visitor) { public final ClassfunctionContext classfunction() throws RecognitionException { ClassfunctionContext _localctx = new ClassfunctionContext(_ctx, getState()); - enterRule(_localctx, 78, RULE_classfunction); + enterRule(_localctx, 76, RULE_classfunction); try { enterOuterAlt(_localctx, 1); { - setState(477); + setState(466); match(T__16); - setState(478); + setState(467); funcname(); - setState(479); + setState(468); funcbody(); } } @@ -3106,17 +3041,17 @@ public T accept(ParseTreeVisitor visitor) { public final ClassstaticfunctionContext classstaticfunction() throws RecognitionException { ClassstaticfunctionContext _localctx = new ClassstaticfunctionContext(_ctx, getState()); - enterRule(_localctx, 80, RULE_classstaticfunction); + enterRule(_localctx, 78, RULE_classstaticfunction); try { enterOuterAlt(_localctx, 1); { - setState(481); - match(T__59); - setState(482); + setState(470); + match(T__58); + setState(471); match(T__16); - setState(483); + setState(472); funcname(); - setState(484); + setState(473); funcbody(); } } @@ -3153,14 +3088,14 @@ public T accept(ParseTreeVisitor visitor) { public final ClassgetorsetContext classgetorset() throws RecognitionException { ClassgetorsetContext _localctx = new ClassgetorsetContext(_ctx, getState()); - enterRule(_localctx, 82, RULE_classgetorset); + enterRule(_localctx, 80, RULE_classgetorset); int _la; try { enterOuterAlt(_localctx, 1); { - setState(486); + setState(475); _la = _input.LA(1); - if ( !(_la==T__60 || _la==T__61) ) { + if ( !(_la==T__59 || _la==T__60) ) { _errHandler.recoverInline(this); } else { @@ -3210,30 +3145,30 @@ public T accept(ParseTreeVisitor visitor) { public final ClassgetsetContext classgetset() throws RecognitionException { ClassgetsetContext _localctx = new ClassgetsetContext(_ctx, getState()); - enterRule(_localctx, 84, RULE_classgetset); + enterRule(_localctx, 82, RULE_classgetset); int _la; try { enterOuterAlt(_localctx, 1); { - setState(488); + setState(477); match(NAME); - setState(489); + setState(478); match(T__33); - setState(491); + setState(480); _errHandler.sync(this); _la = _input.LA(1); do { { { - setState(490); + setState(479); classgetorset(); } } - setState(493); + setState(482); _errHandler.sync(this); _la = _input.LA(1); - } while ( _la==T__60 || _la==T__61 ); - setState(495); + } while ( _la==T__59 || _la==T__60 ); + setState(484); match(T__34); } } @@ -3276,30 +3211,30 @@ public T accept(ParseTreeVisitor visitor) { public final ConstructorContext constructor() throws RecognitionException { ConstructorContext _localctx = new ConstructorContext(_ctx, getState()); - enterRule(_localctx, 86, RULE_constructor); + enterRule(_localctx, 84, RULE_constructor); int _la; try { enterOuterAlt(_localctx, 1); { - setState(497); - match(T__62); - setState(498); + setState(486); + match(T__61); + setState(487); match(T__29); - setState(500); + setState(489); _errHandler.sync(this); _la = _input.LA(1); if (_la==T__28 || _la==NAME) { { - setState(499); + setState(488); parlist(); } } - setState(502); + setState(491); match(T__30); - setState(503); + setState(492); block(); - setState(504); + setState(493); match(T__5); } } @@ -3345,29 +3280,29 @@ public T accept(ParseTreeVisitor visitor) { public final ClassmemberContext classmember() throws RecognitionException { ClassmemberContext _localctx = new ClassmemberContext(_ctx, getState()); - enterRule(_localctx, 88, RULE_classmember); + enterRule(_localctx, 86, RULE_classmember); try { - setState(509); + setState(498); _errHandler.sync(this); switch (_input.LA(1)) { case T__16: enterOuterAlt(_localctx, 1); { - setState(506); + setState(495); classfunction(); } break; case NAME: enterOuterAlt(_localctx, 2); { - setState(507); + setState(496); classgetset(); } break; - case T__62: + case T__61: enterOuterAlt(_localctx, 3); { - setState(508); + setState(497); constructor(); } break; @@ -3432,40 +3367,40 @@ public T accept(ParseTreeVisitor visitor) { public final ClassbodyContext classbody() throws RecognitionException { ClassbodyContext _localctx = new ClassbodyContext(_ctx, getState()); - enterRule(_localctx, 90, RULE_classbody); + enterRule(_localctx, 88, RULE_classbody); int _la; try { enterOuterAlt(_localctx, 1); { - setState(517); + setState(506); _errHandler.sync(this); _la = _input.LA(1); - while (((((_la - 17)) & ~0x3f) == 0 && ((1L << (_la - 17)) & ((1L << (T__16 - 17)) | (1L << (T__59 - 17)) | (1L << (T__62 - 17)) | (1L << (NAME - 17)))) != 0)) { + while (((((_la - 17)) & ~0x3f) == 0 && ((1L << (_la - 17)) & ((1L << (T__16 - 17)) | (1L << (T__58 - 17)) | (1L << (T__61 - 17)) | (1L << (NAME - 17)))) != 0)) { { - setState(515); + setState(504); _errHandler.sync(this); switch (_input.LA(1)) { - case T__59: + case T__58: { - setState(511); + setState(500); classstaticfunction(); } break; case T__16: { - setState(512); + setState(501); classfunction(); } break; case NAME: { - setState(513); + setState(502); classgetset(); } break; - case T__62: + case T__61: { - setState(514); + setState(503); constructor(); } break; @@ -3473,11 +3408,11 @@ public final ClassbodyContext classbody() throws RecognitionException { throw new NoViableAltException(this); } } - setState(519); + setState(508); _errHandler.sync(this); _la = _input.LA(1); } - setState(520); + setState(509); match(T__5); } } @@ -3515,14 +3450,14 @@ public T accept(ParseTreeVisitor visitor) { public final AddOneContext addOne() throws RecognitionException { AddOneContext _localctx = new AddOneContext(_ctx, getState()); - enterRule(_localctx, 92, RULE_addOne); + enterRule(_localctx, 90, RULE_addOne); try { enterOuterAlt(_localctx, 1); { - setState(522); + setState(511); match(NAME); - setState(523); - match(T__63); + setState(512); + match(T__62); } } catch (RecognitionException re) { @@ -3559,14 +3494,14 @@ public T accept(ParseTreeVisitor visitor) { public final PlusEqualContext plusEqual() throws RecognitionException { PlusEqualContext _localctx = new PlusEqualContext(_ctx, getState()); - enterRule(_localctx, 94, RULE_plusEqual); + enterRule(_localctx, 92, RULE_plusEqual); try { enterOuterAlt(_localctx, 1); { - setState(525); + setState(514); match(NAME); - setState(526); - match(T__64); + setState(515); + match(T__63); } } catch (RecognitionException re) { @@ -3603,14 +3538,14 @@ public T accept(ParseTreeVisitor visitor) { public final MultiplyEqualContext multiplyEqual() throws RecognitionException { MultiplyEqualContext _localctx = new MultiplyEqualContext(_ctx, getState()); - enterRule(_localctx, 96, RULE_multiplyEqual); + enterRule(_localctx, 94, RULE_multiplyEqual); try { enterOuterAlt(_localctx, 1); { - setState(528); + setState(517); match(NAME); - setState(529); - match(T__65); + setState(518); + match(T__64); } } catch (RecognitionException re) { @@ -3647,14 +3582,14 @@ public T accept(ParseTreeVisitor visitor) { public final DivEqualContext divEqual() throws RecognitionException { DivEqualContext _localctx = new DivEqualContext(_ctx, getState()); - enterRule(_localctx, 98, RULE_divEqual); + enterRule(_localctx, 96, RULE_divEqual); try { enterOuterAlt(_localctx, 1); { - setState(531); + setState(520); match(NAME); - setState(532); - match(T__66); + setState(521); + match(T__65); } } catch (RecognitionException re) { @@ -3691,14 +3626,14 @@ public T accept(ParseTreeVisitor visitor) { public final MinusEqualContext minusEqual() throws RecognitionException { MinusEqualContext _localctx = new MinusEqualContext(_ctx, getState()); - enterRule(_localctx, 100, RULE_minusEqual); + enterRule(_localctx, 98, RULE_minusEqual); try { enterOuterAlt(_localctx, 1); { - setState(534); + setState(523); match(NAME); - setState(535); - match(T__67); + setState(524); + match(T__66); } } catch (RecognitionException re) { @@ -3737,11 +3672,11 @@ public T accept(ParseTreeVisitor visitor) { public final SafeOperatorContext safeOperator() throws RecognitionException { SafeOperatorContext _localctx = new SafeOperatorContext(_ctx, getState()); - enterRule(_localctx, 102, RULE_safeOperator); + enterRule(_localctx, 100, RULE_safeOperator); try { enterOuterAlt(_localctx, 1); { - setState(537); + setState(526); var(); } } @@ -3786,202 +3721,198 @@ private boolean exp_sempred(ExpContext _localctx, int predIndex) { } public static final String _serializedATN = - "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3R\u021e\4\2\t\2\4"+ + "\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3Q\u0213\4\2\t\2\4"+ "\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+ "\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+ "\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+ "\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+ "\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+ ",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t"+ - "\64\4\65\t\65\3\2\3\2\3\2\3\3\7\3o\n\3\f\3\16\3r\13\3\3\3\5\3u\n\3\3\4"+ - "\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3"+ - "\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\7\4\u0099"+ - "\n\4\f\4\16\4\u009c\13\4\3\4\3\4\5\4\u00a0\n\4\3\4\3\4\3\4\3\4\3\4\3\4"+ - "\3\4\3\4\3\4\3\4\5\4\u00ac\n\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4"+ - "\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\5\4\u00c2\n\4\3\4\3\4\3\4\3\4"+ - "\3\4\3\4\3\4\5\4\u00cb\n\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\5\4"+ - "\u00d7\n\4\3\4\3\4\3\4\5\4\u00dc\n\4\3\4\3\4\3\4\3\4\3\4\5\4\u00e3\n\4"+ - "\3\4\3\4\5\4\u00e7\n\4\3\5\3\5\5\5\u00eb\n\5\3\5\5\5\u00ee\n\5\3\6\3\6"+ - "\3\6\3\6\3\7\3\7\3\7\7\7\u00f7\n\7\f\7\16\7\u00fa\13\7\3\7\3\7\5\7\u00fe"+ - "\n\7\3\b\3\b\3\t\3\t\3\n\3\n\3\n\7\n\u0107\n\n\f\n\16\n\u010a\13\n\3\13"+ - "\3\13\3\13\7\13\u010f\n\13\f\13\16\13\u0112\13\13\3\f\3\f\3\f\7\f\u0117"+ - "\n\f\f\f\16\f\u011a\13\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3"+ - "\r\3\r\5\r\u0129\n\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3"+ - "\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r"+ - "\3\r\3\r\7\r\u014b\n\r\f\r\16\r\u014e\13\r\3\16\3\16\7\16\u0152\n\16\f"+ - "\16\16\16\u0155\13\16\3\17\3\17\6\17\u0159\n\17\r\17\16\17\u015a\3\20"+ - "\3\20\3\20\3\20\3\20\5\20\u0162\n\20\3\21\3\21\3\21\3\21\3\21\3\21\5\21"+ - "\u016a\n\21\3\21\7\21\u016d\n\21\f\21\16\21\u0170\13\21\3\22\7\22\u0173"+ - "\n\22\f\22\16\22\u0176\13\22\3\22\3\22\3\22\3\22\3\22\3\22\5\22\u017e"+ - "\n\22\3\23\3\23\5\23\u0182\n\23\3\23\3\23\3\24\3\24\5\24\u0188\n\24\3"+ - "\24\3\24\3\24\5\24\u018d\n\24\3\25\3\25\3\25\3\26\3\26\5\26\u0194\n\26"+ - "\3\26\3\26\3\26\3\26\3\27\3\27\3\27\5\27\u019d\n\27\3\27\5\27\u01a0\n"+ - "\27\3\30\3\30\5\30\u01a4\n\30\3\30\3\30\3\31\3\31\3\31\3\31\7\31\u01ac"+ - "\n\31\f\31\16\31\u01af\13\31\3\31\5\31\u01b2\n\31\3\32\3\32\3\32\3\32"+ - "\3\32\3\32\3\32\3\32\3\32\3\32\5\32\u01be\n\32\3\33\3\33\3\34\3\34\3\35"+ - "\3\35\3\36\3\36\3\37\3\37\3 \3 \3!\3!\3\"\3\"\3#\3#\3$\3$\3%\3%\3&\3&"+ - "\3\'\3\'\3\'\3\'\3(\3(\3(\3(\3)\3)\3)\3)\3*\3*\3*\3*\3*\3+\3+\3,\3,\3"+ - ",\6,\u01ee\n,\r,\16,\u01ef\3,\3,\3-\3-\3-\5-\u01f7\n-\3-\3-\3-\3-\3.\3"+ - ".\3.\5.\u0200\n.\3/\3/\3/\3/\7/\u0206\n/\f/\16/\u0209\13/\3/\3/\3\60\3"+ - "\60\3\60\3\61\3\61\3\61\3\62\3\62\3\62\3\63\3\63\3\63\3\64\3\64\3\64\3"+ - "\65\3\65\3\65\2\3\30\66\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*"+ - ",.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfh\2\13\4\2\3\3\21\21\3\2(-\3\2"+ - "/\60\3\2\61\64\3\2\659\5\2\60\60\67\67:;\3\2KN\3\2HJ\3\2?@\2\u0239\2j"+ - "\3\2\2\2\4p\3\2\2\2\6\u00e6\3\2\2\2\b\u00e8\3\2\2\2\n\u00ef\3\2\2\2\f"+ - "\u00f3\3\2\2\2\16\u00ff\3\2\2\2\20\u0101\3\2\2\2\22\u0103\3\2\2\2\24\u010b"+ - "\3\2\2\2\26\u0113\3\2\2\2\30\u0128\3\2\2\2\32\u014f\3\2\2\2\34\u0156\3"+ - "\2\2\2\36\u0161\3\2\2\2 \u0169\3\2\2\2\"\u0174\3\2\2\2$\u0181\3\2\2\2"+ - "&\u018c\3\2\2\2(\u018e\3\2\2\2*\u0191\3\2\2\2,\u019f\3\2\2\2.\u01a1\3"+ - "\2\2\2\60\u01a7\3\2\2\2\62\u01bd\3\2\2\2\64\u01bf\3\2\2\2\66\u01c1\3\2"+ - "\2\28\u01c3\3\2\2\2:\u01c5\3\2\2\2<\u01c7\3\2\2\2>\u01c9\3\2\2\2@\u01cb"+ - "\3\2\2\2B\u01cd\3\2\2\2D\u01cf\3\2\2\2F\u01d1\3\2\2\2H\u01d3\3\2\2\2J"+ - "\u01d5\3\2\2\2L\u01d7\3\2\2\2N\u01db\3\2\2\2P\u01df\3\2\2\2R\u01e3\3\2"+ - "\2\2T\u01e8\3\2\2\2V\u01ea\3\2\2\2X\u01f3\3\2\2\2Z\u01ff\3\2\2\2\\\u0207"+ - "\3\2\2\2^\u020c\3\2\2\2`\u020f\3\2\2\2b\u0212\3\2\2\2d\u0215\3\2\2\2f"+ - "\u0218\3\2\2\2h\u021b\3\2\2\2jk\5\4\3\2kl\7\2\2\3l\3\3\2\2\2mo\5\6\4\2"+ - "nm\3\2\2\2or\3\2\2\2pn\3\2\2\2pq\3\2\2\2qt\3\2\2\2rp\3\2\2\2su\5\b\5\2"+ - "ts\3\2\2\2tu\3\2\2\2u\5\3\2\2\2v\u00e7\7\3\2\2wx\5\22\n\2xy\7\4\2\2yz"+ - "\5\26\f\2z\u00e7\3\2\2\2{\u00e7\5\34\17\2|\u00e7\5\n\6\2}\u00e7\7\5\2"+ - "\2~\177\7\6\2\2\177\u00e7\7G\2\2\u0080\u0081\7\7\2\2\u0081\u0082\5\4\3"+ - "\2\u0082\u0083\7\b\2\2\u0083\u00e7\3\2\2\2\u0084\u0085\7\t\2\2\u0085\u0086"+ - "\5\30\r\2\u0086\u0087\7\7\2\2\u0087\u0088\5\4\3\2\u0088\u0089\7\b\2\2"+ - "\u0089\u00e7\3\2\2\2\u008a\u008b\7\n\2\2\u008b\u008c\5\4\3\2\u008c\u008d"+ - "\7\13\2\2\u008d\u008e\5\30\r\2\u008e\u00e7\3\2\2\2\u008f\u0090\7\f\2\2"+ - "\u0090\u0091\5\30\r\2\u0091\u0092\7\r\2\2\u0092\u009a\5\4\3\2\u0093\u0094"+ - "\7\16\2\2\u0094\u0095\5\30\r\2\u0095\u0096\7\r\2\2\u0096\u0097\5\4\3\2"+ - "\u0097\u0099\3\2\2\2\u0098\u0093\3\2\2\2\u0099\u009c\3\2\2\2\u009a\u0098"+ - "\3\2\2\2\u009a\u009b\3\2\2\2\u009b\u009f\3\2\2\2\u009c\u009a\3\2\2\2\u009d"+ - "\u009e\7\17\2\2\u009e\u00a0\5\4\3\2\u009f\u009d\3\2\2\2\u009f\u00a0\3"+ - "\2\2\2\u00a0\u00a1\3\2\2\2\u00a1\u00a2\7\b\2\2\u00a2\u00e7\3\2\2\2\u00a3"+ - "\u00a4\7\20\2\2\u00a4\u00a5\7G\2\2\u00a5\u00a6\7\4\2\2\u00a6\u00a7\5\30"+ - "\r\2\u00a7\u00a8\7\21\2\2\u00a8\u00ab\5\30\r\2\u00a9\u00aa\7\21\2\2\u00aa"+ - "\u00ac\5\30\r\2\u00ab\u00a9\3\2\2\2\u00ab\u00ac\3\2\2\2\u00ac\u00ad\3"+ - "\2\2\2\u00ad\u00ae\7\7\2\2\u00ae\u00af\5\4\3\2\u00af\u00b0\7\b\2\2\u00b0"+ - "\u00e7\3\2\2\2\u00b1\u00b2\7\20\2\2\u00b2\u00b3\5\24\13\2\u00b3\u00b4"+ - "\7\22\2\2\u00b4\u00b5\5\26\f\2\u00b5\u00b6\7\7\2\2\u00b6\u00b7\5\4\3\2"+ - "\u00b7\u00b8\7\b\2\2\u00b8\u00e7\3\2\2\2\u00b9\u00ba\7\23\2\2\u00ba\u00bb"+ - "\5\f\7\2\u00bb\u00bc\5*\26\2\u00bc\u00e7\3\2\2\2\u00bd\u00be\7\24\2\2"+ - "\u00be\u00c1\5\16\b\2\u00bf\u00c0\7\25\2\2\u00c0\u00c2\5\20\t\2\u00c1"+ - "\u00bf\3\2\2\2\u00c1\u00c2\3\2\2\2\u00c2\u00c3\3\2\2\2\u00c3\u00c4\5\\"+ - "/\2\u00c4\u00e7\3\2\2\2\u00c5\u00c6\7\26\2\2\u00c6\u00c7\7\24\2\2\u00c7"+ - "\u00ca\5\16\b\2\u00c8\u00c9\7\25\2\2\u00c9\u00cb\5\20\t\2\u00ca\u00c8"+ - "\3\2\2\2\u00ca\u00cb\3\2\2\2\u00cb\u00cc\3\2\2\2\u00cc\u00cd\5\\/\2\u00cd"+ - "\u00e7\3\2\2\2\u00ce\u00cf\7\26\2\2\u00cf\u00d0\7\23\2\2\u00d0\u00d1\7"+ - "G\2\2\u00d1\u00e7\5*\26\2\u00d2\u00d3\7\26\2\2\u00d3\u00d6\5\24\13\2\u00d4"+ + "\64\3\2\3\2\3\2\3\3\7\3m\n\3\f\3\16\3p\13\3\3\3\5\3s\n\3\3\4\3\4\3\4\3"+ + "\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4"+ + "\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\7\4\u0097\n\4\f\4"+ + "\16\4\u009a\13\4\3\4\3\4\5\4\u009e\n\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4"+ + "\3\4\3\4\5\4\u00aa\n\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4"+ + "\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\5\4\u00c0\n\4\3\4\3\4\3\4\5\4\u00c5\n"+ + "\4\3\4\3\4\3\4\3\4\5\4\u00cb\n\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3"+ + "\4\5\4\u00d7\n\4\3\4\3\4\3\4\5\4\u00dc\n\4\3\4\3\4\5\4\u00e0\n\4\3\5\3"+ + "\5\5\5\u00e4\n\5\3\5\5\5\u00e7\n\5\3\6\3\6\3\6\3\6\3\7\3\7\3\7\7\7\u00f0"+ + "\n\7\f\7\16\7\u00f3\13\7\3\7\3\7\5\7\u00f7\n\7\3\b\3\b\3\t\3\t\3\n\3\n"+ + "\3\n\7\n\u0100\n\n\f\n\16\n\u0103\13\n\3\13\3\13\3\13\7\13\u0108\n\13"+ + "\f\13\16\13\u010b\13\13\3\f\3\f\3\f\7\f\u0110\n\f\f\f\16\f\u0113\13\f"+ + "\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\5\r\u0122\n\r\3\r"+ + "\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3"+ + "\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\7\r\u0144\n\r\f"+ + "\r\16\r\u0147\13\r\3\16\3\16\7\16\u014b\n\16\f\16\16\16\u014e\13\16\3"+ + "\17\3\17\6\17\u0152\n\17\r\17\16\17\u0153\3\20\3\20\3\20\3\20\3\20\5\20"+ + "\u015b\n\20\3\21\3\21\3\21\3\21\3\21\3\21\5\21\u0163\n\21\3\21\7\21\u0166"+ + "\n\21\f\21\16\21\u0169\13\21\3\22\7\22\u016c\n\22\f\22\16\22\u016f\13"+ + "\22\3\22\3\22\3\22\3\22\3\22\3\22\5\22\u0177\n\22\3\23\3\23\5\23\u017b"+ + "\n\23\3\23\3\23\3\24\3\24\5\24\u0181\n\24\3\24\3\24\3\24\5\24\u0186\n"+ + "\24\3\25\3\25\3\25\3\26\3\26\5\26\u018d\n\26\3\26\3\26\3\26\3\26\3\27"+ + "\3\27\3\27\5\27\u0196\n\27\3\27\5\27\u0199\n\27\3\30\3\30\5\30\u019d\n"+ + "\30\3\30\3\30\3\31\3\31\3\31\3\31\7\31\u01a5\n\31\f\31\16\31\u01a8\13"+ + "\31\3\31\5\31\u01ab\n\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32"+ + "\3\32\5\32\u01b7\n\32\3\33\3\33\3\34\3\34\3\35\3\35\3\36\3\36\3\37\3\37"+ + "\3 \3 \3!\3!\3\"\3\"\3#\3#\3$\3$\3%\3%\3&\3&\3\'\3\'\3\'\3\'\3(\3(\3("+ + "\3(\3)\3)\3)\3)\3)\3*\3*\3+\3+\3+\6+\u01e3\n+\r+\16+\u01e4\3+\3+\3,\3"+ + ",\3,\5,\u01ec\n,\3,\3,\3,\3,\3-\3-\3-\5-\u01f5\n-\3.\3.\3.\3.\7.\u01fb"+ + "\n.\f.\16.\u01fe\13.\3.\3.\3/\3/\3/\3\60\3\60\3\60\3\61\3\61\3\61\3\62"+ + "\3\62\3\62\3\63\3\63\3\63\3\64\3\64\3\64\2\3\30\65\2\4\6\b\n\f\16\20\22"+ + "\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdf\2\13"+ + "\4\2\3\3\21\21\3\2(-\3\2/\60\3\2\61\64\3\2\659\5\2\60\60\67\67:;\3\2J"+ + "M\3\2GI\3\2>?\2\u022e\2h\3\2\2\2\4n\3\2\2\2\6\u00df\3\2\2\2\b\u00e1\3"+ + "\2\2\2\n\u00e8\3\2\2\2\f\u00ec\3\2\2\2\16\u00f8\3\2\2\2\20\u00fa\3\2\2"+ + "\2\22\u00fc\3\2\2\2\24\u0104\3\2\2\2\26\u010c\3\2\2\2\30\u0121\3\2\2\2"+ + "\32\u0148\3\2\2\2\34\u014f\3\2\2\2\36\u015a\3\2\2\2 \u0162\3\2\2\2\"\u016d"+ + "\3\2\2\2$\u017a\3\2\2\2&\u0185\3\2\2\2(\u0187\3\2\2\2*\u018a\3\2\2\2,"+ + "\u0198\3\2\2\2.\u019a\3\2\2\2\60\u01a0\3\2\2\2\62\u01b6\3\2\2\2\64\u01b8"+ + "\3\2\2\2\66\u01ba\3\2\2\28\u01bc\3\2\2\2:\u01be\3\2\2\2<\u01c0\3\2\2\2"+ + ">\u01c2\3\2\2\2@\u01c4\3\2\2\2B\u01c6\3\2\2\2D\u01c8\3\2\2\2F\u01ca\3"+ + "\2\2\2H\u01cc\3\2\2\2J\u01ce\3\2\2\2L\u01d0\3\2\2\2N\u01d4\3\2\2\2P\u01d8"+ + "\3\2\2\2R\u01dd\3\2\2\2T\u01df\3\2\2\2V\u01e8\3\2\2\2X\u01f4\3\2\2\2Z"+ + "\u01fc\3\2\2\2\\\u0201\3\2\2\2^\u0204\3\2\2\2`\u0207\3\2\2\2b\u020a\3"+ + "\2\2\2d\u020d\3\2\2\2f\u0210\3\2\2\2hi\5\4\3\2ij\7\2\2\3j\3\3\2\2\2km"+ + "\5\6\4\2lk\3\2\2\2mp\3\2\2\2nl\3\2\2\2no\3\2\2\2or\3\2\2\2pn\3\2\2\2q"+ + "s\5\b\5\2rq\3\2\2\2rs\3\2\2\2s\5\3\2\2\2t\u00e0\7\3\2\2uv\5\22\n\2vw\7"+ + "\4\2\2wx\5\26\f\2x\u00e0\3\2\2\2y\u00e0\5\34\17\2z\u00e0\5\n\6\2{\u00e0"+ + "\7\5\2\2|}\7\6\2\2}\u00e0\7F\2\2~\177\7\7\2\2\177\u0080\5\4\3\2\u0080"+ + "\u0081\7\b\2\2\u0081\u00e0\3\2\2\2\u0082\u0083\7\t\2\2\u0083\u0084\5\30"+ + "\r\2\u0084\u0085\7\7\2\2\u0085\u0086\5\4\3\2\u0086\u0087\7\b\2\2\u0087"+ + "\u00e0\3\2\2\2\u0088\u0089\7\n\2\2\u0089\u008a\5\4\3\2\u008a\u008b\7\13"+ + "\2\2\u008b\u008c\5\30\r\2\u008c\u00e0\3\2\2\2\u008d\u008e\7\f\2\2\u008e"+ + "\u008f\5\30\r\2\u008f\u0090\7\r\2\2\u0090\u0098\5\4\3\2\u0091\u0092\7"+ + "\16\2\2\u0092\u0093\5\30\r\2\u0093\u0094\7\r\2\2\u0094\u0095\5\4\3\2\u0095"+ + "\u0097\3\2\2\2\u0096\u0091\3\2\2\2\u0097\u009a\3\2\2\2\u0098\u0096\3\2"+ + "\2\2\u0098\u0099\3\2\2\2\u0099\u009d\3\2\2\2\u009a\u0098\3\2\2\2\u009b"+ + "\u009c\7\17\2\2\u009c\u009e\5\4\3\2\u009d\u009b\3\2\2\2\u009d\u009e\3"+ + "\2\2\2\u009e\u009f\3\2\2\2\u009f\u00a0\7\b\2\2\u00a0\u00e0\3\2\2\2\u00a1"+ + "\u00a2\7\20\2\2\u00a2\u00a3\7F\2\2\u00a3\u00a4\7\4\2\2\u00a4\u00a5\5\30"+ + "\r\2\u00a5\u00a6\7\21\2\2\u00a6\u00a9\5\30\r\2\u00a7\u00a8\7\21\2\2\u00a8"+ + "\u00aa\5\30\r\2\u00a9\u00a7\3\2\2\2\u00a9\u00aa\3\2\2\2\u00aa\u00ab\3"+ + "\2\2\2\u00ab\u00ac\7\7\2\2\u00ac\u00ad\5\4\3\2\u00ad\u00ae\7\b\2\2\u00ae"+ + "\u00e0\3\2\2\2\u00af\u00b0\7\20\2\2\u00b0\u00b1\5\24\13\2\u00b1\u00b2"+ + "\7\22\2\2\u00b2\u00b3\5\26\f\2\u00b3\u00b4\7\7\2\2\u00b4\u00b5\5\4\3\2"+ + "\u00b5\u00b6\7\b\2\2\u00b6\u00e0\3\2\2\2\u00b7\u00b8\7\23\2\2\u00b8\u00b9"+ + "\5\f\7\2\u00b9\u00ba\5*\26\2\u00ba\u00e0\3\2\2\2\u00bb\u00bc\7\24\2\2"+ + "\u00bc\u00bf\5\16\b\2\u00bd\u00be\7\25\2\2\u00be\u00c0\5\20\t\2\u00bf"+ + "\u00bd\3\2\2\2\u00bf\u00c0\3\2\2\2\u00c0\u00c1\3\2\2\2\u00c1\u00c2\5Z"+ + ".\2\u00c2\u00e0\3\2\2\2\u00c3\u00c5\7\26\2\2\u00c4\u00c3\3\2\2\2\u00c4"+ + "\u00c5\3\2\2\2\u00c5\u00c6\3\2\2\2\u00c6\u00c7\7\24\2\2\u00c7\u00ca\5"+ + "\16\b\2\u00c8\u00c9\7\25\2\2\u00c9\u00cb\5\20\t\2\u00ca\u00c8\3\2\2\2"+ + "\u00ca\u00cb\3\2\2\2\u00cb\u00cc\3\2\2\2\u00cc\u00cd\5Z.\2\u00cd\u00e0"+ + "\3\2\2\2\u00ce\u00cf\7\26\2\2\u00cf\u00d0\7\23\2\2\u00d0\u00d1\7F\2\2"+ + "\u00d1\u00e0\5*\26\2\u00d2\u00d3\7\26\2\2\u00d3\u00d6\5\24\13\2\u00d4"+ "\u00d5\7\4\2\2\u00d5\u00d7\5\26\f\2\u00d6\u00d4\3\2\2\2\u00d6\u00d7\3"+ - "\2\2\2\u00d7\u00e7\3\2\2\2\u00d8\u00d9\7\27\2\2\u00d9\u00e7\5h\65\2\u00da"+ + "\2\2\2\u00d7\u00e0\3\2\2\2\u00d8\u00d9\7\27\2\2\u00d9\u00e0\5f\64\2\u00da"+ "\u00dc\7\26\2\2\u00db\u00da\3\2\2\2\u00db\u00dc\3\2\2\2\u00dc\u00dd\3"+ - "\2\2\2\u00dd\u00de\5\24\13\2\u00de\u00df\7\4\2\2\u00df\u00e0\5L\'\2\u00e0"+ - "\u00e7\3\2\2\2\u00e1\u00e3\7\26\2\2\u00e2\u00e1\3\2\2\2\u00e2\u00e3\3"+ - "\2\2\2\u00e3\u00e4\3\2\2\2\u00e4\u00e5\7G\2\2\u00e5\u00e7\5f\64\2\u00e6"+ - "v\3\2\2\2\u00e6w\3\2\2\2\u00e6{\3\2\2\2\u00e6|\3\2\2\2\u00e6}\3\2\2\2"+ - "\u00e6~\3\2\2\2\u00e6\u0080\3\2\2\2\u00e6\u0084\3\2\2\2\u00e6\u008a\3"+ - "\2\2\2\u00e6\u008f\3\2\2\2\u00e6\u00a3\3\2\2\2\u00e6\u00b1\3\2\2\2\u00e6"+ - "\u00b9\3\2\2\2\u00e6\u00bd\3\2\2\2\u00e6\u00c5\3\2\2\2\u00e6\u00ce\3\2"+ - "\2\2\u00e6\u00d2\3\2\2\2\u00e6\u00d8\3\2\2\2\u00e6\u00db\3\2\2\2\u00e6"+ - "\u00e2\3\2\2\2\u00e7\7\3\2\2\2\u00e8\u00ea\7\30\2\2\u00e9\u00eb\5\26\f"+ - "\2\u00ea\u00e9\3\2\2\2\u00ea\u00eb\3\2\2\2\u00eb\u00ed\3\2\2\2\u00ec\u00ee"+ - "\7\3\2\2\u00ed\u00ec\3\2\2\2\u00ed\u00ee\3\2\2\2\u00ee\t\3\2\2\2\u00ef"+ - "\u00f0\7\31\2\2\u00f0\u00f1\7G\2\2\u00f1\u00f2\7\31\2\2\u00f2\13\3\2\2"+ - "\2\u00f3\u00f8\7G\2\2\u00f4\u00f5\7\32\2\2\u00f5\u00f7\7G\2\2\u00f6\u00f4"+ - "\3\2\2\2\u00f7\u00fa\3\2\2\2\u00f8\u00f6\3\2\2\2\u00f8\u00f9\3\2\2\2\u00f9"+ - "\u00fd\3\2\2\2\u00fa\u00f8\3\2\2\2\u00fb\u00fc\7\33\2\2\u00fc\u00fe\7"+ - "G\2\2\u00fd\u00fb\3\2\2\2\u00fd\u00fe\3\2\2\2\u00fe\r\3\2\2\2\u00ff\u0100"+ - "\7G\2\2\u0100\17\3\2\2\2\u0101\u0102\7G\2\2\u0102\21\3\2\2\2\u0103\u0108"+ - "\5 \21\2\u0104\u0105\7\21\2\2\u0105\u0107\5 \21\2\u0106\u0104\3\2\2\2"+ - "\u0107\u010a\3\2\2\2\u0108\u0106\3\2\2\2\u0108\u0109\3\2\2\2\u0109\23"+ - "\3\2\2\2\u010a\u0108\3\2\2\2\u010b\u0110\7G\2\2\u010c\u010d\7\21\2\2\u010d"+ - "\u010f\7G\2\2\u010e\u010c\3\2\2\2\u010f\u0112\3\2\2\2\u0110\u010e\3\2"+ - "\2\2\u0110\u0111\3\2\2\2\u0111\25\3\2\2\2\u0112\u0110\3\2\2\2\u0113\u0118"+ - "\5\30\r\2\u0114\u0115\7\21\2\2\u0115\u0117\5\30\r\2\u0116\u0114\3\2\2"+ - "\2\u0117\u011a\3\2\2\2\u0118\u0116\3\2\2\2\u0118\u0119\3\2\2\2\u0119\27"+ - "\3\2\2\2\u011a\u0118\3\2\2\2\u011b\u011c\b\r\1\2\u011c\u0129\7\34\2\2"+ - "\u011d\u0129\7\35\2\2\u011e\u0129\7\36\2\2\u011f\u0129\5H%\2\u0120\u0129"+ - "\5J&\2\u0121\u0129\7\37\2\2\u0122\u0129\5(\25\2\u0123\u0129\5\32\16\2"+ - "\u0124\u0129\5.\30\2\u0125\u0126\5D#\2\u0126\u0127\5\30\r\n\u0127\u0129"+ - "\3\2\2\2\u0128\u011b\3\2\2\2\u0128\u011d\3\2\2\2\u0128\u011e\3\2\2\2\u0128"+ - "\u011f\3\2\2\2\u0128\u0120\3\2\2\2\u0128\u0121\3\2\2\2\u0128\u0122\3\2"+ - "\2\2\u0128\u0123\3\2\2\2\u0128\u0124\3\2\2\2\u0128\u0125\3\2\2\2\u0129"+ - "\u014c\3\2\2\2\u012a\u012b\f\13\2\2\u012b\u012c\5F$\2\u012c\u012d\5\30"+ - "\r\13\u012d\u014b\3\2\2\2\u012e\u012f\f\t\2\2\u012f\u0130\5@!\2\u0130"+ - "\u0131\5\30\r\n\u0131\u014b\3\2\2\2\u0132\u0133\f\b\2\2\u0133\u0134\5"+ - "> \2\u0134\u0135\5\30\r\t\u0135\u014b\3\2\2\2\u0136\u0137\f\7\2\2\u0137"+ - "\u0138\5<\37\2\u0138\u0139\5\30\r\7\u0139\u014b\3\2\2\2\u013a\u013b\f"+ - "\6\2\2\u013b\u013c\5:\36\2\u013c\u013d\5\30\r\7\u013d\u014b\3\2\2\2\u013e"+ - "\u013f\f\5\2\2\u013f\u0140\58\35\2\u0140\u0141\5\30\r\6\u0141\u014b\3"+ - "\2\2\2\u0142\u0143\f\4\2\2\u0143\u0144\5\66\34\2\u0144\u0145\5\30\r\5"+ - "\u0145\u014b\3\2\2\2\u0146\u0147\f\3\2\2\u0147\u0148\5B\"\2\u0148\u0149"+ - "\5\30\r\4\u0149\u014b\3\2\2\2\u014a\u012a\3\2\2\2\u014a\u012e\3\2\2\2"+ - "\u014a\u0132\3\2\2\2\u014a\u0136\3\2\2\2\u014a\u013a\3\2\2\2\u014a\u013e"+ - "\3\2\2\2\u014a\u0142\3\2\2\2\u014a\u0146\3\2\2\2\u014b\u014e\3\2\2\2\u014c"+ - "\u014a\3\2\2\2\u014c\u014d\3\2\2\2\u014d\31\3\2\2\2\u014e\u014c\3\2\2"+ - "\2\u014f\u0153\5\36\20\2\u0150\u0152\5$\23\2\u0151\u0150\3\2\2\2\u0152"+ - "\u0155\3\2\2\2\u0153\u0151\3\2\2\2\u0153\u0154\3\2\2\2\u0154\33\3\2\2"+ - "\2\u0155\u0153\3\2\2\2\u0156\u0158\5\36\20\2\u0157\u0159\5$\23\2\u0158"+ - "\u0157\3\2\2\2\u0159\u015a\3\2\2\2\u015a\u0158\3\2\2\2\u015a\u015b\3\2"+ - "\2\2\u015b\35\3\2\2\2\u015c\u0162\5 \21\2\u015d\u015e\7 \2\2\u015e\u015f"+ - "\5\30\r\2\u015f\u0160\7!\2\2\u0160\u0162\3\2\2\2\u0161\u015c\3\2\2\2\u0161"+ - "\u015d\3\2\2\2\u0162\37\3\2\2\2\u0163\u016a\7G\2\2\u0164\u0165\7 \2\2"+ - "\u0165\u0166\5\30\r\2\u0166\u0167\7!\2\2\u0167\u0168\5\"\22\2\u0168\u016a"+ - "\3\2\2\2\u0169\u0163\3\2\2\2\u0169\u0164\3\2\2\2\u016a\u016e\3\2\2\2\u016b"+ - "\u016d\5\"\22\2\u016c\u016b\3\2\2\2\u016d\u0170\3\2\2\2\u016e\u016c\3"+ - "\2\2\2\u016e\u016f\3\2\2\2\u016f!\3\2\2\2\u0170\u016e\3\2\2\2\u0171\u0173"+ - "\5$\23\2\u0172\u0171\3\2\2\2\u0173\u0176\3\2\2\2\u0174\u0172\3\2\2\2\u0174"+ - "\u0175\3\2\2\2\u0175\u017d\3\2\2\2\u0176\u0174\3\2\2\2\u0177\u0178\7\""+ - "\2\2\u0178\u0179\5\30\r\2\u0179\u017a\7#\2\2\u017a\u017e\3\2\2\2\u017b"+ - "\u017c\7\32\2\2\u017c\u017e\7G\2\2\u017d\u0177\3\2\2\2\u017d\u017b\3\2"+ - "\2\2\u017e#\3\2\2\2\u017f\u0180\7\33\2\2\u0180\u0182\7G\2\2\u0181\u017f"+ - "\3\2\2\2\u0181\u0182\3\2\2\2\u0182\u0183\3\2\2\2\u0183\u0184\5&\24\2\u0184"+ - "%\3\2\2\2\u0185\u0187\7 \2\2\u0186\u0188\5\26\f\2\u0187\u0186\3\2\2\2"+ - "\u0187\u0188\3\2\2\2\u0188\u0189\3\2\2\2\u0189\u018d\7!\2\2\u018a\u018d"+ - "\5.\30\2\u018b\u018d\5J&\2\u018c\u0185\3\2\2\2\u018c\u018a\3\2\2\2\u018c"+ - "\u018b\3\2\2\2\u018d\'\3\2\2\2\u018e\u018f\7\23\2\2\u018f\u0190\5*\26"+ - "\2\u0190)\3\2\2\2\u0191\u0193\7 \2\2\u0192\u0194\5,\27\2\u0193\u0192\3"+ - "\2\2\2\u0193\u0194\3\2\2\2\u0194\u0195\3\2\2\2\u0195\u0196\7!\2\2\u0196"+ - "\u0197\5\4\3\2\u0197\u0198\7\b\2\2\u0198+\3\2\2\2\u0199\u019c\5\24\13"+ - "\2\u019a\u019b\7\21\2\2\u019b\u019d\7\37\2\2\u019c\u019a\3\2\2\2\u019c"+ - "\u019d\3\2\2\2\u019d\u01a0\3\2\2\2\u019e\u01a0\7\37\2\2\u019f\u0199\3"+ - "\2\2\2\u019f\u019e\3\2\2\2\u01a0-\3\2\2\2\u01a1\u01a3\7$\2\2\u01a2\u01a4"+ - "\5\60\31\2\u01a3\u01a2\3\2\2\2\u01a3\u01a4\3\2\2\2\u01a4\u01a5\3\2\2\2"+ - "\u01a5\u01a6\7%\2\2\u01a6/\3\2\2\2\u01a7\u01ad\5\62\32\2\u01a8\u01a9\5"+ - "\64\33\2\u01a9\u01aa\5\62\32\2\u01aa\u01ac\3\2\2\2\u01ab\u01a8\3\2\2\2"+ - "\u01ac\u01af\3\2\2\2\u01ad\u01ab\3\2\2\2\u01ad\u01ae\3\2\2\2\u01ae\u01b1"+ - "\3\2\2\2\u01af\u01ad\3\2\2\2\u01b0\u01b2\5\64\33\2\u01b1\u01b0\3\2\2\2"+ - "\u01b1\u01b2\3\2\2\2\u01b2\61\3\2\2\2\u01b3\u01b4\7\"\2\2\u01b4\u01b5"+ - "\5\30\r\2\u01b5\u01b6\7#\2\2\u01b6\u01b7\7\4\2\2\u01b7\u01b8\5\30\r\2"+ - "\u01b8\u01be\3\2\2\2\u01b9\u01ba\7G\2\2\u01ba\u01bb\7\4\2\2\u01bb\u01be"+ - "\5\30\r\2\u01bc\u01be\5\30\r\2\u01bd\u01b3\3\2\2\2\u01bd\u01b9\3\2\2\2"+ - "\u01bd\u01bc\3\2\2\2\u01be\63\3\2\2\2\u01bf\u01c0\t\2\2\2\u01c0\65\3\2"+ - "\2\2\u01c1\u01c2\7&\2\2\u01c2\67\3\2\2\2\u01c3\u01c4\7\'\2\2\u01c49\3"+ - "\2\2\2\u01c5\u01c6\t\3\2\2\u01c6;\3\2\2\2\u01c7\u01c8\7.\2\2\u01c8=\3"+ - "\2\2\2\u01c9\u01ca\t\4\2\2\u01ca?\3\2\2\2\u01cb\u01cc\t\5\2\2\u01ccA\3"+ - "\2\2\2\u01cd\u01ce\t\6\2\2\u01ceC\3\2\2\2\u01cf\u01d0\t\7\2\2\u01d0E\3"+ - "\2\2\2\u01d1\u01d2\7<\2\2\u01d2G\3\2\2\2\u01d3\u01d4\t\b\2\2\u01d4I\3"+ - "\2\2\2\u01d5\u01d6\t\t\2\2\u01d6K\3\2\2\2\u01d7\u01d8\7=\2\2\u01d8\u01d9"+ - "\5\f\7\2\u01d9\u01da\5&\24\2\u01daM\3\2\2\2\u01db\u01dc\7\24\2\2\u01dc"+ - "\u01dd\7G\2\2\u01dd\u01de\5\\/\2\u01deO\3\2\2\2\u01df\u01e0\7\23\2\2\u01e0"+ - "\u01e1\5\f\7\2\u01e1\u01e2\5*\26\2\u01e2Q\3\2\2\2\u01e3\u01e4\7>\2\2\u01e4"+ - "\u01e5\7\23\2\2\u01e5\u01e6\5\f\7\2\u01e6\u01e7\5*\26\2\u01e7S\3\2\2\2"+ - "\u01e8\u01e9\t\n\2\2\u01e9U\3\2\2\2\u01ea\u01eb\7G\2\2\u01eb\u01ed\7$"+ - "\2\2\u01ec\u01ee\5T+\2\u01ed\u01ec\3\2\2\2\u01ee\u01ef\3\2\2\2\u01ef\u01ed"+ - "\3\2\2\2\u01ef\u01f0\3\2\2\2\u01f0\u01f1\3\2\2\2\u01f1\u01f2\7%\2\2\u01f2"+ - "W\3\2\2\2\u01f3\u01f4\7A\2\2\u01f4\u01f6\7 \2\2\u01f5\u01f7\5,\27\2\u01f6"+ - "\u01f5\3\2\2\2\u01f6\u01f7\3\2\2\2\u01f7\u01f8\3\2\2\2\u01f8\u01f9\7!"+ - "\2\2\u01f9\u01fa\5\4\3\2\u01fa\u01fb\7\b\2\2\u01fbY\3\2\2\2\u01fc\u0200"+ - "\5P)\2\u01fd\u0200\5V,\2\u01fe\u0200\5X-\2\u01ff\u01fc\3\2\2\2\u01ff\u01fd"+ - "\3\2\2\2\u01ff\u01fe\3\2\2\2\u0200[\3\2\2\2\u0201\u0206\5R*\2\u0202\u0206"+ - "\5P)\2\u0203\u0206\5V,\2\u0204\u0206\5X-\2\u0205\u0201\3\2\2\2\u0205\u0202"+ - "\3\2\2\2\u0205\u0203\3\2\2\2\u0205\u0204\3\2\2\2\u0206\u0209\3\2\2\2\u0207"+ - "\u0205\3\2\2\2\u0207\u0208\3\2\2\2\u0208\u020a\3\2\2\2\u0209\u0207\3\2"+ - "\2\2\u020a\u020b\7\b\2\2\u020b]\3\2\2\2\u020c\u020d\7G\2\2\u020d\u020e"+ - "\7B\2\2\u020e_\3\2\2\2\u020f\u0210\7G\2\2\u0210\u0211\7C\2\2\u0211a\3"+ - "\2\2\2\u0212\u0213\7G\2\2\u0213\u0214\7D\2\2\u0214c\3\2\2\2\u0215\u0216"+ - "\7G\2\2\u0216\u0217\7E\2\2\u0217e\3\2\2\2\u0218\u0219\7G\2\2\u0219\u021a"+ - "\7F\2\2\u021ag\3\2\2\2\u021b\u021c\5 \21\2\u021ci\3\2\2\2-pt\u009a\u009f"+ - "\u00ab\u00c1\u00ca\u00d6\u00db\u00e2\u00e6\u00ea\u00ed\u00f8\u00fd\u0108"+ - "\u0110\u0118\u0128\u014a\u014c\u0153\u015a\u0161\u0169\u016e\u0174\u017d"+ - "\u0181\u0187\u018c\u0193\u019c\u019f\u01a3\u01ad\u01b1\u01bd\u01ef\u01f6"+ - "\u01ff\u0205\u0207"; + "\2\2\2\u00dd\u00de\7F\2\2\u00de\u00e0\5d\63\2\u00dft\3\2\2\2\u00dfu\3"+ + "\2\2\2\u00dfy\3\2\2\2\u00dfz\3\2\2\2\u00df{\3\2\2\2\u00df|\3\2\2\2\u00df"+ + "~\3\2\2\2\u00df\u0082\3\2\2\2\u00df\u0088\3\2\2\2\u00df\u008d\3\2\2\2"+ + "\u00df\u00a1\3\2\2\2\u00df\u00af\3\2\2\2\u00df\u00b7\3\2\2\2\u00df\u00bb"+ + "\3\2\2\2\u00df\u00c4\3\2\2\2\u00df\u00ce\3\2\2\2\u00df\u00d2\3\2\2\2\u00df"+ + "\u00d8\3\2\2\2\u00df\u00db\3\2\2\2\u00e0\7\3\2\2\2\u00e1\u00e3\7\30\2"+ + "\2\u00e2\u00e4\5\26\f\2\u00e3\u00e2\3\2\2\2\u00e3\u00e4\3\2\2\2\u00e4"+ + "\u00e6\3\2\2\2\u00e5\u00e7\7\3\2\2\u00e6\u00e5\3\2\2\2\u00e6\u00e7\3\2"+ + "\2\2\u00e7\t\3\2\2\2\u00e8\u00e9\7\31\2\2\u00e9\u00ea\7F\2\2\u00ea\u00eb"+ + "\7\31\2\2\u00eb\13\3\2\2\2\u00ec\u00f1\7F\2\2\u00ed\u00ee\7\32\2\2\u00ee"+ + "\u00f0\7F\2\2\u00ef\u00ed\3\2\2\2\u00f0\u00f3\3\2\2\2\u00f1\u00ef\3\2"+ + "\2\2\u00f1\u00f2\3\2\2\2\u00f2\u00f6\3\2\2\2\u00f3\u00f1\3\2\2\2\u00f4"+ + "\u00f5\7\33\2\2\u00f5\u00f7\7F\2\2\u00f6\u00f4\3\2\2\2\u00f6\u00f7\3\2"+ + "\2\2\u00f7\r\3\2\2\2\u00f8\u00f9\5 \21\2\u00f9\17\3\2\2\2\u00fa\u00fb"+ + "\5 \21\2\u00fb\21\3\2\2\2\u00fc\u0101\5 \21\2\u00fd\u00fe\7\21\2\2\u00fe"+ + "\u0100\5 \21\2\u00ff\u00fd\3\2\2\2\u0100\u0103\3\2\2\2\u0101\u00ff\3\2"+ + "\2\2\u0101\u0102\3\2\2\2\u0102\23\3\2\2\2\u0103\u0101\3\2\2\2\u0104\u0109"+ + "\7F\2\2\u0105\u0106\7\21\2\2\u0106\u0108\7F\2\2\u0107\u0105\3\2\2\2\u0108"+ + "\u010b\3\2\2\2\u0109\u0107\3\2\2\2\u0109\u010a\3\2\2\2\u010a\25\3\2\2"+ + "\2\u010b\u0109\3\2\2\2\u010c\u0111\5\30\r\2\u010d\u010e\7\21\2\2\u010e"+ + "\u0110\5\30\r\2\u010f\u010d\3\2\2\2\u0110\u0113\3\2\2\2\u0111\u010f\3"+ + "\2\2\2\u0111\u0112\3\2\2\2\u0112\27\3\2\2\2\u0113\u0111\3\2\2\2\u0114"+ + "\u0115\b\r\1\2\u0115\u0122\7\34\2\2\u0116\u0122\7\35\2\2\u0117\u0122\7"+ + "\36\2\2\u0118\u0122\5H%\2\u0119\u0122\5J&\2\u011a\u0122\7\37\2\2\u011b"+ + "\u0122\5(\25\2\u011c\u0122\5\32\16\2\u011d\u0122\5.\30\2\u011e\u011f\5"+ + "D#\2\u011f\u0120\5\30\r\n\u0120\u0122\3\2\2\2\u0121\u0114\3\2\2\2\u0121"+ + "\u0116\3\2\2\2\u0121\u0117\3\2\2\2\u0121\u0118\3\2\2\2\u0121\u0119\3\2"+ + "\2\2\u0121\u011a\3\2\2\2\u0121\u011b\3\2\2\2\u0121\u011c\3\2\2\2\u0121"+ + "\u011d\3\2\2\2\u0121\u011e\3\2\2\2\u0122\u0145\3\2\2\2\u0123\u0124\f\13"+ + "\2\2\u0124\u0125\5F$\2\u0125\u0126\5\30\r\13\u0126\u0144\3\2\2\2\u0127"+ + "\u0128\f\t\2\2\u0128\u0129\5@!\2\u0129\u012a\5\30\r\n\u012a\u0144\3\2"+ + "\2\2\u012b\u012c\f\b\2\2\u012c\u012d\5> \2\u012d\u012e\5\30\r\t\u012e"+ + "\u0144\3\2\2\2\u012f\u0130\f\7\2\2\u0130\u0131\5<\37\2\u0131\u0132\5\30"+ + "\r\7\u0132\u0144\3\2\2\2\u0133\u0134\f\6\2\2\u0134\u0135\5:\36\2\u0135"+ + "\u0136\5\30\r\7\u0136\u0144\3\2\2\2\u0137\u0138\f\5\2\2\u0138\u0139\5"+ + "8\35\2\u0139\u013a\5\30\r\6\u013a\u0144\3\2\2\2\u013b\u013c\f\4\2\2\u013c"+ + "\u013d\5\66\34\2\u013d\u013e\5\30\r\5\u013e\u0144\3\2\2\2\u013f\u0140"+ + "\f\3\2\2\u0140\u0141\5B\"\2\u0141\u0142\5\30\r\4\u0142\u0144\3\2\2\2\u0143"+ + "\u0123\3\2\2\2\u0143\u0127\3\2\2\2\u0143\u012b\3\2\2\2\u0143\u012f\3\2"+ + "\2\2\u0143\u0133\3\2\2\2\u0143\u0137\3\2\2\2\u0143\u013b\3\2\2\2\u0143"+ + "\u013f\3\2\2\2\u0144\u0147\3\2\2\2\u0145\u0143\3\2\2\2\u0145\u0146\3\2"+ + "\2\2\u0146\31\3\2\2\2\u0147\u0145\3\2\2\2\u0148\u014c\5\36\20\2\u0149"+ + "\u014b\5$\23\2\u014a\u0149\3\2\2\2\u014b\u014e\3\2\2\2\u014c\u014a\3\2"+ + "\2\2\u014c\u014d\3\2\2\2\u014d\33\3\2\2\2\u014e\u014c\3\2\2\2\u014f\u0151"+ + "\5\36\20\2\u0150\u0152\5$\23\2\u0151\u0150\3\2\2\2\u0152\u0153\3\2\2\2"+ + "\u0153\u0151\3\2\2\2\u0153\u0154\3\2\2\2\u0154\35\3\2\2\2\u0155\u015b"+ + "\5 \21\2\u0156\u0157\7 \2\2\u0157\u0158\5\30\r\2\u0158\u0159\7!\2\2\u0159"+ + "\u015b\3\2\2\2\u015a\u0155\3\2\2\2\u015a\u0156\3\2\2\2\u015b\37\3\2\2"+ + "\2\u015c\u0163\7F\2\2\u015d\u015e\7 \2\2\u015e\u015f\5\30\r\2\u015f\u0160"+ + "\7!\2\2\u0160\u0161\5\"\22\2\u0161\u0163\3\2\2\2\u0162\u015c\3\2\2\2\u0162"+ + "\u015d\3\2\2\2\u0163\u0167\3\2\2\2\u0164\u0166\5\"\22\2\u0165\u0164\3"+ + "\2\2\2\u0166\u0169\3\2\2\2\u0167\u0165\3\2\2\2\u0167\u0168\3\2\2\2\u0168"+ + "!\3\2\2\2\u0169\u0167\3\2\2\2\u016a\u016c\5$\23\2\u016b\u016a\3\2\2\2"+ + "\u016c\u016f\3\2\2\2\u016d\u016b\3\2\2\2\u016d\u016e\3\2\2\2\u016e\u0176"+ + "\3\2\2\2\u016f\u016d\3\2\2\2\u0170\u0171\7\"\2\2\u0171\u0172\5\30\r\2"+ + "\u0172\u0173\7#\2\2\u0173\u0177\3\2\2\2\u0174\u0175\7\32\2\2\u0175\u0177"+ + "\7F\2\2\u0176\u0170\3\2\2\2\u0176\u0174\3\2\2\2\u0177#\3\2\2\2\u0178\u0179"+ + "\7\33\2\2\u0179\u017b\7F\2\2\u017a\u0178\3\2\2\2\u017a\u017b\3\2\2\2\u017b"+ + "\u017c\3\2\2\2\u017c\u017d\5&\24\2\u017d%\3\2\2\2\u017e\u0180\7 \2\2\u017f"+ + "\u0181\5\26\f\2\u0180\u017f\3\2\2\2\u0180\u0181\3\2\2\2\u0181\u0182\3"+ + "\2\2\2\u0182\u0186\7!\2\2\u0183\u0186\5.\30\2\u0184\u0186\5J&\2\u0185"+ + "\u017e\3\2\2\2\u0185\u0183\3\2\2\2\u0185\u0184\3\2\2\2\u0186\'\3\2\2\2"+ + "\u0187\u0188\7\23\2\2\u0188\u0189\5*\26\2\u0189)\3\2\2\2\u018a\u018c\7"+ + " \2\2\u018b\u018d\5,\27\2\u018c\u018b\3\2\2\2\u018c\u018d\3\2\2\2\u018d"+ + "\u018e\3\2\2\2\u018e\u018f\7!\2\2\u018f\u0190\5\4\3\2\u0190\u0191\7\b"+ + "\2\2\u0191+\3\2\2\2\u0192\u0195\5\24\13\2\u0193\u0194\7\21\2\2\u0194\u0196"+ + "\7\37\2\2\u0195\u0193\3\2\2\2\u0195\u0196\3\2\2\2\u0196\u0199\3\2\2\2"+ + "\u0197\u0199\7\37\2\2\u0198\u0192\3\2\2\2\u0198\u0197\3\2\2\2\u0199-\3"+ + "\2\2\2\u019a\u019c\7$\2\2\u019b\u019d\5\60\31\2\u019c\u019b\3\2\2\2\u019c"+ + "\u019d\3\2\2\2\u019d\u019e\3\2\2\2\u019e\u019f\7%\2\2\u019f/\3\2\2\2\u01a0"+ + "\u01a6\5\62\32\2\u01a1\u01a2\5\64\33\2\u01a2\u01a3\5\62\32\2\u01a3\u01a5"+ + "\3\2\2\2\u01a4\u01a1\3\2\2\2\u01a5\u01a8\3\2\2\2\u01a6\u01a4\3\2\2\2\u01a6"+ + "\u01a7\3\2\2\2\u01a7\u01aa\3\2\2\2\u01a8\u01a6\3\2\2\2\u01a9\u01ab\5\64"+ + "\33\2\u01aa\u01a9\3\2\2\2\u01aa\u01ab\3\2\2\2\u01ab\61\3\2\2\2\u01ac\u01ad"+ + "\7\"\2\2\u01ad\u01ae\5\30\r\2\u01ae\u01af\7#\2\2\u01af\u01b0\7\4\2\2\u01b0"+ + "\u01b1\5\30\r\2\u01b1\u01b7\3\2\2\2\u01b2\u01b3\7F\2\2\u01b3\u01b4\7\4"+ + "\2\2\u01b4\u01b7\5\30\r\2\u01b5\u01b7\5\30\r\2\u01b6\u01ac\3\2\2\2\u01b6"+ + "\u01b2\3\2\2\2\u01b6\u01b5\3\2\2\2\u01b7\63\3\2\2\2\u01b8\u01b9\t\2\2"+ + "\2\u01b9\65\3\2\2\2\u01ba\u01bb\7&\2\2\u01bb\67\3\2\2\2\u01bc\u01bd\7"+ + "\'\2\2\u01bd9\3\2\2\2\u01be\u01bf\t\3\2\2\u01bf;\3\2\2\2\u01c0\u01c1\7"+ + ".\2\2\u01c1=\3\2\2\2\u01c2\u01c3\t\4\2\2\u01c3?\3\2\2\2\u01c4\u01c5\t"+ + "\5\2\2\u01c5A\3\2\2\2\u01c6\u01c7\t\6\2\2\u01c7C\3\2\2\2\u01c8\u01c9\t"+ + "\7\2\2\u01c9E\3\2\2\2\u01ca\u01cb\7<\2\2\u01cbG\3\2\2\2\u01cc\u01cd\t"+ + "\b\2\2\u01cdI\3\2\2\2\u01ce\u01cf\t\t\2\2\u01cfK\3\2\2\2\u01d0\u01d1\7"+ + "\24\2\2\u01d1\u01d2\7F\2\2\u01d2\u01d3\5Z.\2\u01d3M\3\2\2\2\u01d4\u01d5"+ + "\7\23\2\2\u01d5\u01d6\5\f\7\2\u01d6\u01d7\5*\26\2\u01d7O\3\2\2\2\u01d8"+ + "\u01d9\7=\2\2\u01d9\u01da\7\23\2\2\u01da\u01db\5\f\7\2\u01db\u01dc\5*"+ + "\26\2\u01dcQ\3\2\2\2\u01dd\u01de\t\n\2\2\u01deS\3\2\2\2\u01df\u01e0\7"+ + "F\2\2\u01e0\u01e2\7$\2\2\u01e1\u01e3\5R*\2\u01e2\u01e1\3\2\2\2\u01e3\u01e4"+ + "\3\2\2\2\u01e4\u01e2\3\2\2\2\u01e4\u01e5\3\2\2\2\u01e5\u01e6\3\2\2\2\u01e6"+ + "\u01e7\7%\2\2\u01e7U\3\2\2\2\u01e8\u01e9\7@\2\2\u01e9\u01eb\7 \2\2\u01ea"+ + "\u01ec\5,\27\2\u01eb\u01ea\3\2\2\2\u01eb\u01ec\3\2\2\2\u01ec\u01ed\3\2"+ + "\2\2\u01ed\u01ee\7!\2\2\u01ee\u01ef\5\4\3\2\u01ef\u01f0\7\b\2\2\u01f0"+ + "W\3\2\2\2\u01f1\u01f5\5N(\2\u01f2\u01f5\5T+\2\u01f3\u01f5\5V,\2\u01f4"+ + "\u01f1\3\2\2\2\u01f4\u01f2\3\2\2\2\u01f4\u01f3\3\2\2\2\u01f5Y\3\2\2\2"+ + "\u01f6\u01fb\5P)\2\u01f7\u01fb\5N(\2\u01f8\u01fb\5T+\2\u01f9\u01fb\5V"+ + ",\2\u01fa\u01f6\3\2\2\2\u01fa\u01f7\3\2\2\2\u01fa\u01f8\3\2\2\2\u01fa"+ + "\u01f9\3\2\2\2\u01fb\u01fe\3\2\2\2\u01fc\u01fa\3\2\2\2\u01fc\u01fd\3\2"+ + "\2\2\u01fd\u01ff\3\2\2\2\u01fe\u01fc\3\2\2\2\u01ff\u0200\7\b\2\2\u0200"+ + "[\3\2\2\2\u0201\u0202\7F\2\2\u0202\u0203\7A\2\2\u0203]\3\2\2\2\u0204\u0205"+ + "\7F\2\2\u0205\u0206\7B\2\2\u0206_\3\2\2\2\u0207\u0208\7F\2\2\u0208\u0209"+ + "\7C\2\2\u0209a\3\2\2\2\u020a\u020b\7F\2\2\u020b\u020c\7D\2\2\u020cc\3"+ + "\2\2\2\u020d\u020e\7F\2\2\u020e\u020f\7E\2\2\u020fe\3\2\2\2\u0210\u0211"+ + "\5 \21\2\u0211g\3\2\2\2-nr\u0098\u009d\u00a9\u00bf\u00c4\u00ca\u00d6\u00db"+ + "\u00df\u00e3\u00e6\u00f1\u00f6\u0101\u0109\u0111\u0121\u0143\u0145\u014c"+ + "\u0153\u015a\u0162\u0167\u016d\u0176\u017a\u0180\u0185\u018c\u0195\u0198"+ + "\u019c\u01a6\u01aa\u01b6\u01e4\u01eb\u01f4\u01fa\u01fc"; public static final ATN _ATN = new ATNDeserializer().deserialize(_serializedATN.toCharArray()); static { diff --git a/src/main/java/org/luapp/language/generator/luappVisitor.java b/src/main/java/org/luapp/language/generator/luappVisitor.java index 74867ad..b181b68 100644 --- a/src/main/java/org/luapp/language/generator/luappVisitor.java +++ b/src/main/java/org/luapp/language/generator/luappVisitor.java @@ -1,4 +1,4 @@ -// Generated from C:/Users/Harry/Desktop/Lua/lua-plus-plus/src/main/java/org/luapp/language/parser\luapp.g4 by ANTLR 4.8 +// Generated from C:/Users/Harry/Desktop/Lua/lpp2electricboogaloo/lua-plus-plus/src/main/java/org/luapp/language/parser\luapp.g4 by ANTLR 4.8 package org.luapp.language.generator; import org.antlr.v4.runtime.tree.ParseTreeVisitor; @@ -232,12 +232,6 @@ public interface luappVisitor extends ParseTreeVisitor { * @return the visitor result */ T visitString(luappParser.StringContext ctx); - /** - * Visit a parse tree produced by {@link luappParser#newclass}. - * @param ctx the parse tree - * @return the visitor result - */ - T visitNewclass(luappParser.NewclassContext ctx); /** * Visit a parse tree produced by {@link luappParser#classdef}. * @param ctx the parse tree diff --git a/src/main/java/org/luapp/language/handlers/ConstructorHandler.java b/src/main/java/org/luapp/language/handlers/ConstructorHandler.java index 7f3b17f..02a976d 100644 --- a/src/main/java/org/luapp/language/handlers/ConstructorHandler.java +++ b/src/main/java/org/luapp/language/handlers/ConstructorHandler.java @@ -31,7 +31,7 @@ public void onEnterContext(ParserRuleContext enterContext) { String abstractClass = this.getLuaPP().currentAbstract == null ? "" : this.getLuaPP().currentAbstract; String currentClass = this.getLuaPP().currentClass == null ? "" : this.getLuaPP().currentClass; - this.addToLuaPPResult("function " + currentClass + ":new(" + params + ")\n" + + this.addToLuaPPResult("function " + currentClass + ".new(" + params + ")\n" + "\tlocal self = {}\n" + "\tsetmetatable(self, " + currentClass +")" + "\n" + (abstractClass.isEmpty() ? "" : ("\n\tfor k,v in pairs(" + abstractClass + ") do \n" + diff --git a/src/main/java/org/luapp/language/handlers/NewClassHandler.java b/src/main/java/org/luapp/language/handlers/NewClassHandler.java deleted file mode 100644 index a9e2815..0000000 --- a/src/main/java/org/luapp/language/handlers/NewClassHandler.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.luapp.language.handlers; - -import org.antlr.v4.runtime.ParserRuleContext; -import org.luapp.language.generator.luappParser; -import org.luapp.language.listeners.LuaPPListener; -import org.luapp.language.loader.ListenerManager; - -public class NewClassHandler extends LuaPPListener { - public NewClassHandler(){ - this.setTarget(luappParser.RULE_newclass); - } - - @Override - public void onSetManager() { - this.listenerManager.RegisterIgnoredContext(this.getTarget()); - } - - @Override - public void onEnterContext(ParserRuleContext enterContext) { - - } - - @Override - public void onExitContext(ParserRuleContext exitContext) { - - } -} diff --git a/src/main/java/org/luapp/language/handlers/SafeHandler.java b/src/main/java/org/luapp/language/handlers/SafeHandler.java index d66ccf2..2a83eb8 100644 --- a/src/main/java/org/luapp/language/handlers/SafeHandler.java +++ b/src/main/java/org/luapp/language/handlers/SafeHandler.java @@ -9,7 +9,7 @@ public class SafeHandler extends LuaPPListener { public SafeHandler() { this.setTarget(luappParser.RULE_safeOperator); - this.ignoreCheck = true; + //this.ignoreCheck = true; } @Override diff --git a/src/main/java/org/luapp/language/handlers/StatementHandler.java b/src/main/java/org/luapp/language/handlers/StatementHandler.java index 27bdabf..cff0c77 100644 --- a/src/main/java/org/luapp/language/handlers/StatementHandler.java +++ b/src/main/java/org/luapp/language/handlers/StatementHandler.java @@ -64,6 +64,8 @@ public void onEnterContext(ParserRuleContext enterContext) { boolean removeSafeIndex = false; + + boolean isNewStatement = false; if (enterContext.children != null) { for (ParseTree child : enterContext.children) { if(child instanceof TerminalNodeImpl) continue; @@ -82,10 +84,8 @@ public void onEnterContext(ParserRuleContext enterContext) { } } - - if(this.isParentClass(enterContext)) { - System.out.println("Parent is a class!"); + //System.out.println("Parent is a class!"); return; } @@ -97,6 +97,7 @@ public void onEnterContext(ParserRuleContext enterContext) { return; } + //System.out.println("NewLine:" + this.getLuaPP().getRawFromContext(enterContext)); diff --git a/src/main/java/org/luapp/language/listeners/LuaPPFileWatchingService.java b/src/main/java/org/luapp/language/listeners/LuaPPFileWatchingService.java new file mode 100644 index 0000000..63d4d8d --- /dev/null +++ b/src/main/java/org/luapp/language/listeners/LuaPPFileWatchingService.java @@ -0,0 +1,4 @@ +package org.luapp.language.listeners; + +public class LuaPPFileWatchingService{ +} diff --git a/src/main/java/org/luapp/language/listeners/MasterLuaPPListener.java b/src/main/java/org/luapp/language/listeners/MasterLuaPPListener.java index 2ac16d2..6905386 100644 --- a/src/main/java/org/luapp/language/listeners/MasterLuaPPListener.java +++ b/src/main/java/org/luapp/language/listeners/MasterLuaPPListener.java @@ -25,12 +25,10 @@ public void exitChunk(luappParser.ChunkContext ctx) { @Override public void enterBlock(luappParser.BlockContext ctx) { - } @Override public void exitBlock(luappParser.BlockContext ctx) { - } @Override @@ -382,15 +380,6 @@ public void exitString(luappParser.StringContext ctx) { } - @Override - public void enterNewclass(luappParser.NewclassContext ctx) { - - } - - @Override - public void exitNewclass(luappParser.NewclassContext ctx) { - - } @Override public void enterClassdef(luappParser.ClassdefContext ctx) { diff --git a/src/main/java/org/luapp/language/parser/luapp.g4 b/src/main/java/org/luapp/language/parser/luapp.g4 index 5312570..c6aef20 100644 --- a/src/main/java/org/luapp/language/parser/luapp.g4 +++ b/src/main/java/org/luapp/language/parser/luapp.g4 @@ -23,11 +23,10 @@ stat | 'for' namelist 'in' explist 'do' block 'end' | 'function' funcname funcbody | 'class' classname ('extends' abstractclassname)? classbody - | 'local' 'class' classname ('extends' abstractclassname)? classbody + | ('local')? 'class' classname ('extends' abstractclassname)? classbody | 'local' 'function' NAME funcbody | 'local' namelist ('=' explist)? | 'safe' safeOperator - | ('local')? namelist '=' newclass | ('local')? NAME minusEqual ; @@ -44,11 +43,11 @@ funcname ; classname - : NAME + : var ; abstractclassname - : NAME + : var ; varlist @@ -175,9 +174,6 @@ string // Plus-Plus Modifications -newclass - : 'new' funcname args - ; classdef : 'class' NAME classbody diff --git a/src/main/java/org/luapp/language/test.lpp b/src/main/java/org/luapp/language/test.lpp index d22685c..3fbe67c 100644 --- a/src/main/java/org/luapp/language/test.lpp +++ b/src/main/java/org/luapp/language/test.lpp @@ -1,21 +1,8 @@ -class cat extends animal - - name {get set} - age {get set} - type {get } - - constructor(name) - self.name = name - end - - function isCat() - return true - end - - static function testing() - return "test13" - end -end - -print("hello world?") -if 1==1 then print("helloworld2") end \ No newline at end of file +concommand.Add('test.lpp', function() + local thomas = cat.new("Thomas!") + thomas:setAge(50) + thomas:setName("Thomas v2") + print(thomas:isCat()) -- outputs -> true + print(thomas:getName()) -- outputs -> "Thomas v2" + print(thomas:getAge()) -- outputs -> 50 +end) \ No newline at end of file diff --git a/src/main/java/org/luapp/language/test.lua b/src/main/java/org/luapp/language/test.lua index 6f7915c..c0b0248 100644 --- a/src/main/java/org/luapp/language/test.lua +++ b/src/main/java/org/luapp/language/test.lua @@ -4,38 +4,11 @@ Don't remove this notice please https://github.com/LuaPlusPlus/lua-plus-plus ]]-- -cat = {} -cat.__index = cat -function cat:new(name) - local self = {} - setmetatable(self, cat) - - for k,v in pairs(animal) do - self[k] = v - end - self.name = name - return self -end -function cat:isCat() - return true - end -function cat.testing() - return "test13" - end -function cat:getName() - return self.name -end -function cat:setName(obj) - self.name = obj -end -function cat:getAge() - return self.age -end -function cat:setAge(obj) - self.age = obj -end -function cat:getType() - return self.type -end -print("hello world?") -if 1==1 then print("helloworld2") end \ No newline at end of file +concommand.Add('test.lpp', function() + local thomas = cat.new("Thomas!") + thomas:setAge(50) + thomas:setName("Thomas v2") + print(thomas:isCat()) -- outputs -> true + print(thomas:getName()) -- outputs -> "Thomas v2" + print(thomas:getAge()) -- outputs -> 50 +end) \ No newline at end of file diff --git a/src/main/java/org/luapp/language/watcher/FileWatcher.java b/src/main/java/org/luapp/language/watcher/FileWatcher.java new file mode 100644 index 0000000..8f259b3 --- /dev/null +++ b/src/main/java/org/luapp/language/watcher/FileWatcher.java @@ -0,0 +1,14 @@ +package org.luapp.language.watcher; + +import org.luapp.language.Luapp; + +public class FileWatcher { + + + public FileWatcher(Luapp instance){ + } + + public void onFileSave(String path){ +// this.instance + } +}